星期三, 12月 16, 2009

用Maxima計算線性規劃Linear Programming問題

最近管理數學在教比較像商科學生應該學的線性規劃了,我迫不及待拿開源的 wxMaxima 來計算課本裡的問題,但找了 gui 的介面老半天,卻找不到計算線性規劃的函數。後來在 http://maxima.sourceforge.net/docs/manual/en/maxima_70.html#SEC290 找到了詳細的說明手冊。
我們必需在指令中載入 simplex 這個模組,才能使用求目標函式最大值的 maximize_lp() 和求最小值的 minimize_lp() 這兩個函式。
範例如下:

Maxima 指令如下:
load("simplex")$
maximize_lp(2400*x+1800*y, [3*x+(3/2)*y<=12, x+2*y<=10]) , nonegative_lp=true;


其中第一行的 load("simplex")$ 是指載入 simplex 這個用來計算線性規劃問題的模組。
maximize_lp()是用來計算目標式為最大值的線性規劃問題,其使用的形式如下
maximize_lp(目標式[條件式1, 條件式2, 條件式3,....])
範例中的條件式只有兩個,所以我寫成
[3*x+(3/2)*y<=12, x+2*y<=10]
並以中括弧包起來。
按wxMaxima裡的Evaluate All Cell (執行的意思),應該就會算出下面的解答
[12000,[y=4,x=2]]
意思為,當 x=2,y=4 時,可以滿足目標式最大化的值為12000

沒有留言:

張貼留言

創用 CC 授權條款
瑀的貓、田園與電腦點點滴滴何崧瑀製作,以創用CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款釋出。