胡 霞,王 帆 (石家莊郵電職業技術學院,河北 石家莊 050021)
HU Xia,WANG Fan (SJZ Post and Telecommunication Technical College,Shijiazhuang 050021,China)
Flexsim是一款優秀的離散事件仿真軟件,一個優秀的分析工具。其研究的對象多是復雜的多目標系統,它可以將不同參數組合的運行結果輸出后供分析者比較,從而選取較優的參數組合。由于Flexsim提供了實驗器可以一次性將不同參數組合記錄到模型中,并能經過快速后臺運算后直接輸出仿真結果報告,因此分析者可以在較短的時間內對各種方案進行比較。
目前,Flexsim已經在物流領域成功地進行了多類系統的建模與仿真分析,在制造業、服務業、交通運輸業、軍事等諸多方面得到了廣泛應用,涉及整體規劃、瓶頸分析、成本分析、流程優化、派車、派工等眾多方向。利用Flexsim提供的有力工具建立模型,可以解決簡單的整數線性規劃問題,這在以往的文獻中未見涉及。本文無意于尋找求解整數線性規劃問題的新方法,只想借此問題開拓思路,探索Flexsim在更深層次和更廣范圍的應用。
在線性規劃問題中,有些最優解可能是分數或小數,但對于某些具體問題,常要求某些變量的解必須是整數。這種變量限制為整數的線性規劃,稱為整數線性規劃。在整數規劃中,如果所有變量都限制為整數,則稱為純整數規劃;如果僅一部分變量限制為整數,則稱為混合整數規劃,本文探討的案例為純整數規劃。
目前常見的整數線性規劃算法有枚舉法、割平面法、分枝定界法等[1]。能夠對整數線性規劃問題進行求解的軟件有MATLAB、LINGO、LINDO等[2],也有學者用編程方式實現了對整數線性規劃的不同算法。
對一個簡單的線性規劃例題進行求解,例題描述如下:某物流企業要將貨物包裝成I、II兩種規格,需要A、B兩種原材料的數量、獲利情況及兩種材料數量限制見表1。問兩種規格各包裝多少件可獲利最多?
根據題意分析得,例題中的20單位A原料和8單位B原料應該由發生器一次性產生;而按兩種規格包裝的貨物件數同樣也要由發生器產生;不同規格與不同原料通過合成器進行匹配;最終獲利需要根據題意修改相應代碼來得到;而枚舉法所列舉的各種可能,可以錄入到實驗器中。

表1 問題描述
根據上述思路建立如圖1所示的模型。

圖1 Flexsim整數線性規劃模型俯視圖
其中,原料A、原料B分別表示A、B兩種原材料的限制數量;貨物1、貨物2分別表示Ⅰ、Ⅱ兩種規格產品的包裝件數。到達方式均為“到達時間表”,并選擇合適的臨時實體種類。相關參數設置如表2所示。

表2 發生器參數表
由于受原料限制貨物1、貨物2的數量存在此消彼長的關系,因此,可將貨物2的到達時間和數量設置為較大值,此時只需要調整貨物1的數量即可實現對兩個變量的同時調整。為了對臨時實體加以區別,可以給各個發生器添加colorarray(item,value)的創建觸發,即根據臨時實體類型設置臨時實體顏色。相關參數設置如表3所示。

表3 合成器參數表
可視化工具與“成品A”、“成品B”建立S連接,可視化顯示為“文本”,文本顯示為“顯示實體統計”,并修改該項的代碼:
第5行改為“string starttext="Total profit:";”
廣西上思縣由于地質構造復雜,地貌類型多樣,林地面積占比較大,地勢高差大,在具體的土地利用過程中,應全面考慮土壤環境質量評價結果以及土壤肥力與健康質量評價結果的基礎上綜合規劃。盡量彌補地形造成的影響,采取建坡式梯田,采取微水灌溉措施,解決坡地灌溉問題[8]。
第7行改為“treenode involved=centerobject(current,1);treenode involved2=centerobject(current,2);” 正式工裝樣件有一個過程;另一方面,根據需要,在此期間對零件進行工程更改。供應商會按項目輸入的一個時間節點排出樣車制造各階段零件交付時間。由于供應商不同樣車制造會受到如后橋、前懸無法按期交付等各方面的影響,試制樣車無法按照項目要求的時間節點交付樣車,造成項目造車及交付延后。但部分內外飾按原定的計劃進行順利,往往出現樣車制造還在OTS1階段,內外飾零件OTS2階段樣件已經提前交付,為了追趕進度常常拿OTS2階段零件搭載到OTS1階段的樣車上進行路試等驗證和認可,往往也得拆換零件。
3.3.2 由于項目不斷壓縮樣車開發周期,部分零件因開發周期較長,供應商無法按項目節點交付樣件,項目為了樣車的開發、驗證和一些質量閥的開啟,在前期一些實驗樣車上搭載一些不能滿足樣車實驗功能的零件,待供應商交付該功能零件時,又安排試制車間更換,如N平臺某項目,由于前期帶EPS線束的主線束還未開發出來,樣車制造時裝配非EPS主線束,待供應商把EPS主線束開發及交付后,又安排換整車線束的工作。
本文對試制樣車制造時,部分零件由于供應商、項目庫房、試制物流等原因,裝配上后又要拆卸、換裝的情況進行了淺析,為了項目樣車保質、保量完成交付,提出以下幾點建議:
(1)供應商發運零件時,不管是發到一級供應商處還是直接發運到項目庫房,需要工程師到供應商處進行一一確認,并將確認可以用的零件標識好,并由供應商相關項目接口人員對零件發運進行監督,樣件到項目庫房后,工程師第一時間到項目庫房進行確認。
(2)項目庫房要求備標準件時,嚴格按零件號進行備零件,對從其他庫房備的零件進行狀態確認,盡量把錯誤零件在項目造車前發現并及時更換;把不同階段的零件分開存放,把項目剩余零件及時進行隔離、報廢。
(3)需要工程師把某些專用件用于某臺的專用車的信息標識清晰,及時向項目和試制總裝工程師反饋,并要求項目及時更新專用件清單。
(4)工程師發現以上情況,及時通知試制負責總裝的工程師并把相關零件送至試制物流,及時把異常狀態的零件進行隔離處理。
(5)建議把因某些功能無法滿足樣車生產的順序進行調整,盡量往后移,給供應商爭取更多的時間進行某些功能零件的開發;是否要開車身套色方案,盡早把方案定下來并要求相關區域更新清單,采購環節要把更新后的清單及時發給供應商,并要求供應商按SGMW標準進行送樣。
至此模型已經基本完成,不斷調整“貨物1”的數量,可以找出獲利最多時的組合方式。這樣手動調整非常麻煩,可以利用Flexsim提供的實驗器來進行自動調整。
受材料B限制,規格I最多只能包裝4件,因此可以列舉出0~4共五種情況。打開實驗器,“方案”設為5,“實驗變量”設為 1,“Quantity”設為“MAIN:/project/model/貨物 1>variables/schedule/Arrival1/Quantity”,Scenario 1~5 依次設為 0~4。
添加績效指標,名稱改為“total profit”,績效指標“按單個實體進行統計”,修改代碼:
第4行改為“string objname="成品A";string objname2="成品 B";”
第16行改為“int stat=Input;”
第17行改為“treenode current=node(concat("/",objname),model());treenode current2=node(concat("/",objname2),model());”
第20行改為“else if(stat==Input)value=12*getinput(current)+9*getinput(current2);”
開始實驗并查看結果,如圖2。此時,方案重復運行了5次,但由于模型中不含隨機變量,因此各次的運行結果均相同,所以方案重復運行次數完全可以設為1,對于枚舉數量較多的情況,這樣設置可以大大節省運算時間。
從實驗結果可知,方案5可使獲利最多,可獲利48元。至此可知最優方案為規格Ⅰ包裝4件,規格Ⅱ包裝0件。對于更復雜的情況,上述方法在一定范圍內同樣有效,在此不多贅述。

圖2 實驗器運行結果
[1]黃振侃,唐薇.整數線性規劃算法的計算機實現[J].北京工業大學學報,1994(1):80-85.
[2]雍龍泉.求解線性規劃的幾種方法[J].江西科學,2007,25(2):202-205,212.