2010-01-29 53 views
10

我想創建一個工廠車間的模擬,我正在尋找如何做到這一點的想法。我的想法到目前爲止是:工廠車間模擬

•工廠是由一堆進程組成的,其中一些進程是串聯的,有些是並行的。每個進程都將與它通信的上下游和平行的鄰居,讓他們知道它是通過把

•每個過程將它就像最大吞吐量自身的基本屬性,維護的成本,通過把

顯然結果我還沒有完全想到這一點,但我希望有人能夠給我一些想法或鏈接到在線資源

更新: 這個項目是隻爲我自己的娛樂,也許學習有一點點阿爾南的方式。我不是一個程序員,程序設計對我來說只是一種愛好。我決定用C#編寫它。

+2

+1有趣的問題。這聽起來像你想要的是一個數學建模,所以你可以優化某些變量(成本,容量等)。我不確定你是否真的想要一個「模擬」。 – dss539 2010-01-29 19:22:22

+0

我工作是一個工廠,有時我們增加了通過。這種增長對其他部門預算有一些負面影響,例如電力成本增加,維護成本增加以及設備使用壽命縮短。我認爲嘗試模擬吞吐量和成本的變化會很有趣。我不是一個專業的程序員,但我確實涉獵了一些,我認爲這將是一個有趣的項目。 – fishhead 2010-01-29 19:30:32

+0

您的評論強化了我的觀點,即您想要一個數學模型。我同意,這聽起來像一個有趣的項目。當您開始優化特定參數時,它會變得更加有趣。 ;)你可以通過簡單地使用電子表格來模擬很多這些變量......當然編寫一個程序來做它可能會更有趣。 – dss539 2010-01-29 20:18:23

回答

3

準確地模擬整個工廠是一項艱鉅的工作。

首先,您需要弄清楚:爲什麼要進行模擬?這是誰的?它會給他們什麼價值?模擬的哪些部分很有趣?它需要多準確?該流程的哪些部分不需要精確模擬?

爲了找出這些問題的答案,您需要與想要寫出模擬的人交談。

一旦你想出了要模擬的東西,那麼你需要弄清楚如何模擬它。您需要一些模型和這些模型的一些參數。您也許可以從實際生產中獲得一些實際數據,並嘗試從數字中推導出模型。模型可以是輸入和輸出之間的簡單線性關係,更復雜的關係,甚至可能是隨機(隨機)效應。如果您無法訪問真實數據,那麼您必須在您的模型中進行猜測,但這絕不會太好,所以儘可能嘗試獲取真實數據。

您可能還想考慮組件發生故障的概率以及可能產生的影響。那麼罷工工人呢?原材料不可用?隨着時間的推移,機器磨損會逐漸降低產量?同樣,你可能不想考慮這些細節,這取決於顧客想要什麼。

如果您的模擬涉及隨機事件,則可能需要多次運行並得到平均結果,例如使用Monte Carlo模擬。

爲了給出更好的答案,我們需要更多地瞭解您需要模擬的內容以及您想實現的目標。

+0

我不是一名程序員。這聽起來像一個有趣的項目,也許學習更多關於編程的知識。我不指望這個應用程序對除我自己以外的任何人都有興趣。 – fishhead 2010-01-29 19:18:44

+1

這種類型的應用程序對於管理生產過程的許多人來說絕對是有趣的,並且大量的時間和金錢用於開發這樣的應用程序。這不是一個簡單的項目,但是如果你可以使用你的模擬來優化他們的流程,降低故障率等,那麼它付出的代價是非常大的。如果你只是想學習如何編程,這可能不是一個理想的學習項目。是複雜的,你可能不會有任何真正的數據工作。 – 2010-01-29 19:22:22

+0

ho我擁有真實的數據 - 直接連接到所有工業SQL服務器和所有最近4年的數據。我也連接到維護數據庫,它的成本包括勞動力,承包商和零件 – fishhead 2010-01-29 19:33:21

0

Automod是要走的路。 http://www.appliedmaterials.com/products/automod_2.html

有很多東西要學,它不會很便宜。

ASI的Automod從事工廠模擬業務已有30年。它現在由應用材料公司擁有。在倉庫物料處理的大玩家使用Automod,因爲它是公認的領導者。

+0

爲什麼這會降低投票率?我對autood一無所知,但是有人能解釋downvote嗎? – dss539 2010-01-29 20:20:09

+0

我低估了,因爲它不支持爲什麼應該使用automod,並且一般不會給出關於如何模擬工廠的建議。 – 2010-01-29 20:43:14

+0

@Scottie不夠公平,但這個答案與Jim C的答案似乎相似。 – dss539 2010-01-29 20:56:01

0

它可能不是那麼你正在尋找,但visual components是一個很好的工業仿真工具。

要清楚我不爲他們工作,也不是我目前使用他們的公司工作,但我們看過他們。

3

由於您的客戶是您自己,因此您需要決定Mark Byers詢問的所有問題的答案。不過,我會給你一些建議,希望他們會給你一個開始。

假設您的工廠需要幾個不同的零件並將它們組裝成一個成品。裝配過程的流程圖可能看起來像這樣:

Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg

對於第一金剛石,其中部件A和B被組裝時,假設平均需要30秒,以完成此步驟。我們假設這兩個小部件組裝的實際時間分佈爲normally,平均爲30秒,方差爲5秒。對於第二顆鑽石,假設平均需要30秒,但大部分時間不需要那麼長時間,而其他時間需要更長的時間。這很接近exponential distribution,其中30秒作爲速率參數,通常用方程式表示爲拉姆達。

對於第一處理中,計算到裝配部件A和B作爲時間:

timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally 
            // distributed random number with mean and 
            // sigma as inputs 

對於第二過程中,計算時間到插件Ç添加到組件:

timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed 
         // random number 

現在,您每個iGadget的總裝配時間將爲timeA + timeB + waitingTime。在每個彙編點,存儲一個等待彙編的小部件隊列。如果第二個彙編點是一個瓶頸,那麼隊列將被填滿。您可以爲其隊列強制實施最大尺寸,並在達到最大尺寸時將事情保持在上游。如果某個項目處於隊列中,則組裝流水線中的所有iGadgets都會增加其組裝時間。我會把它留給你去弄清楚如何編寫代碼,並且你可以進行大量的試驗來看平均總裝配時間是多少。結果分佈是什麼樣的?

途徑 「香料這件事」:

  • 需要爲每一個widget圖3B部件。與庫存一起玩。以隨機間隔補充庫存。
  • 添加一個質量保證檢查(指數分佈很適合在這裏使用),並拒絕一些已完成的iGadgets。我建議使用低拒絕率。
  • 嘗試使用不同於我建議的概率分佈。看看它們如何影響你的模擬。總是試圖弄清楚概率分佈的輸入參數如何映射到真實世界的值。

你可以用這個簡單的模擬做很多事情。下一步將概括您的代碼,以便您可以擁有任意數量的小部件和組裝步驟。這並不是那麼容易。整個應用數學領域稱爲operations research,專門用於這種類型的模擬和分析。

+0

+1個不錯的例子 – dss539 2010-01-29 20:58:22

1

您所描述的是離散事件模擬解決的經典問題。已經開發了各種通用和專用模擬語言來模擬這些類型的問題。雖然我不建議從頭開始編寫任何「真正」問題,但爲小排隊問題編寫自己的代碼可能是一個很好的練習,因此您可以瞭解事件調度,隨機數生成,跟蹤日曆等一旦你做完了這些,一個通用的模擬語言將爲你做所有的事情,這樣你就可以專注於全局。

一個很好的參考是Law & Kelton。 ARENA是一個標準包。它被廣泛使用,並且,恕我直言,這些模擬非常全面。 ARENA的書也是一本關於模擬的好書,它附帶了可應用於小問題的軟件。爲了模擬更大的問題,您需要獲得許可證。您應該可以下載ARENA here的試用版。