□衛(wèi)奕冰 張 喆
(延邊大學理學院數學系 吉林 延吉 133000)
A、B、C、D 4 人需要完成甲、乙、丙、丁 4 種軟件的開發(fā),這4個項目的收入費用分別為1 000元、2 000元、3 000元、4 000元,分別安排 A、B、C、D 4人完成每個軟件不同階段的項目任務。完成甲項目,A需要用3 d,B需要用4 d,C需要用 2 d,D需要用3 d;完成乙項目,A需要用5 d,B需要用6 d,C需要用4 d,D需要用2 d;完成丙項目,A需要用5 d,B需要用6 d,C需要用7 d,D需要用4 d;完成丁項目,A需要用6 d,B需要用7 d,C需要用10 d,D需要用8 d。現在要對這4名軟件開發(fā)人員和4個項目進行安排,使該公司實現1 a(365 d)內的收入最大化。要完成以上任務,需要考慮兩方面因素。一方面,需要考慮完成一個項目總的時間和,以便將時間控制在規(guī)定的范圍內。另一方面,這是一個收入最大化的問題,需要基于最優(yōu)規(guī)劃,建立合理的計算模型[1]。
基于項目數量,建立收入的目標函數,即W=1 000x1+2 000x2+3 000x3+4 000x4
在上述公式中,W代表一年的收入,決策變量x1、x2、x3、x4分別代表 1 a內所完成的甲、乙、丙、丁 4 個項目的工作量[2]。由于完成項目的天數有所限制,所以得到線性回歸方程組:
在處理多元線性回歸方程組的過程中,由于最優(yōu)規(guī)劃模型與概率模型具有一定的聯系,所以可以采取隨機模擬的方法——蒙特卡羅法進行求解[3]。通過生成一定量的隨機數,利用MATLAB進行統(tǒng)計模擬與抽樣,從而獲得問題的最優(yōu)近似解。MATLAB蒙特卡羅法算法步驟如下[4]。
(1) 生成的 x1、x2、x3、x4分別位于 [0,30]、[0,20]、[0,16]、[0,11]的隨機數[5]。
(2)對生成的隨機數進行取整。
(3)利用枚舉法的思想,對產生的隨機數進行約束條件的迭代限制。
(4)不斷循環(huán)運算,最終得到最優(yōu)解[6]。
經過多次運算后,得到了最優(yōu)解,即①x1=18,x2=20,x3=16,x4=11。②x1=16,x2=21,x3=16,x4=11。
通過利用蒙特卡羅法進行多次隨機模擬之后,得到最終結果:W=150 000
此時,出現了兩種工作安排方案。①甲、乙、丙、丁項目分別為 18、20、16、11。②甲、乙、丙、丁項目分別為16、21、16、11。利用Lingo對該最優(yōu)規(guī)劃問題進行進一步的檢驗計算,得到與蒙特卡羅方法相同的結果,由此可以判斷,蒙特卡羅方法具有可靠性。
通過分析,可以通過建立合理的目標函數與約束條件,利用蒙特卡羅方法求得整數解,實現收入最大化的目標,為企業(yè)創(chuàng)造更多的利潤。