Re: [運算] 最佳"整數"解

看板MATLAB作者 (!H45)時間12年前 (2013/09/03 12:12), 編輯推噓2(204)
留言6則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《lifeisshine (芋頭)》之銘言: : ------------------------------------------------- : 實際應用題: : 每個桌子:需木工 4時,漆工 2時,利潤 5 : 每個椅子:需木工 1時,漆工 2時,利潤 4 : 木工上限為 60 時,漆工上限為 48 時, : 令 x1 為桌子的生產個數,令 x2 為椅子的生產個數 : ------------------------------------------------- : 數學模型: : f = 5x1+ 4x2 ……(利潤最大化) : s.t. 4x1 + 1x2 ≦ 60 …….(木工時數限制) : 2x1 + 2x2 ≦ 48 …….(漆工時數限制) : x1 ≧ 0, x2 ≧ 0 : ------------------------------------------------- 我用 MATLAB Help 找到 MuPAD 解法 廣義上 MuPAD 也是 MATLAB 的工具......就看看 我貼出我的解法 在 MATLAB 裡 ------------ mupad; 在 MuPAD 裡 ----------- c := {4*x1 + x2 <= 60, 2*x1 + 2*x2 <= 48}: f := 5*x1 + 4*x2: linopt::maximize([c, f, NonNegative, All]) Output ------ [OPTIMAL, {x1 = 12, x2 = 12}, 108] 參考資料: http://www.mathworks.com/help/symbolic/mupad_ref/linopt-maximize.html -- 更新: 因為我對 MuPAD 還不是很熟 早上還不知道怎麼把 MuPAD 的計算結果導入至 MATLAB 的 Workspace 裡面 剛剛寫了一個比較完整的程式碼 可以在 MATLAB 直接呼叫 MuPAD 函式取得答案 PTT_1I9AEkxY.m -------------- read(symengine, 'PTT_1I9AEkxY.mu'); solution = feval(symengine, 'solution'); solution1 = double(solve(solution(1))); solution2 = double(solve(solution(2))); PTT_1I9AEkxY.mu --------------- solution := proc() begin c := {4*x1 + x2 <= 60, 2*x1 + 2*x2 <= 48}: f := 5*x1 + 4*x2: A := linopt::maximize([c, f, NonNegative, All]): solution := [A[2][1], A[2][2]]; end_proc: 程式邏輯其實就是呼叫一個自己寫的 .mu 檔 .mu 檔就用 MuPAD 語法呼叫內建的 linopt::maximize 解出答案 然後回傳給 .m 檔 因為回傳的結果是 sym 型別的 x1 == 12 與 x2 == 12 所以我用 solve 再解出 12 以上應該沒有問題了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.247.22 ※ 編輯: H45 來自: 140.116.247.22 (09/03 14:33)

09/03 18:27, , 1F
喔!! 先感謝H大 晚上泡茶來研究一下!
09/03 18:27, 1F

09/03 19:36, , 2F
有用喔! 只差在如何寫成 .mu 檔? 用這麼久Matlab
09/03 19:36, 2F

09/03 19:37, , 3F
第一次聽過 .mu 檔,懇請H大開示,對我寫GUI介面有益!
09/03 19:37, 3F
開一個新檔 複製我的程式碼貼上 存成 .mu 就好了 ※ 編輯: H45 來自: 140.116.247.22 (09/03 19:39)

09/03 19:52, , 4F
成功了! 太感謝H大! 再問幾個問題,是不是想抓Toolbox
09/03 19:52, 4F

09/03 19:54, , 5F
裡的答案值,格式是solution := proc() → begin
09/03 19:54, 5F

09/03 19:56, , 6F
→ 呼叫Toolbox並求解 → end_proc: 這樣的語法格式?
09/03 19:56, 6F
MuPAD 我也不太熟...再自己嘗試看看吧 ※ 編輯: H45 來自: 140.116.247.22 (09/03 23:14)
文章代碼(AID): #1I9M6WDw (MATLAB)
文章代碼(AID): #1I9M6WDw (MATLAB)