[討論]二元整數規劃建模問題

看板MATLAB作者 (小劉)時間8年前 (2016/02/25 14:17), 8年前編輯推噓6(6014)
留言20則, 2人參與, 最新討論串1/1
各位大大好 我是用CPLEX內建的函式庫去寫 如果要處理的問題是二元整數規劃 % Maximize x1 + 2 x2 + 3 x3 + x4 % Subject to % - x1 + x2 + x3 + 10 x4 <= 20 % x1 - 3 x2 + x3 <= 30 % x2 - 3.5x4 = 0 % Binary Integer % x1 x2 x3 x4 那麼只要這樣打以下 f = [-1 -2 -3 -1]'; Aineq = [-1 1 1 10; 1 -3 1 0]; bineq = [20 30]'; Aeq = [0 1 0 -3.5]; beq = 0; options = cplexoptimset; options.Display = 'on'; [x, fval, exitflag, output] = cplexbilp (f, Aineq, bineq, Aeq, beq, ... [ ], options); fprintf ('\nSolution status = %s\n', output.cplexstatusstring); fprintf ('Solution value = %d\n', fval); disp ('Values = '); disp (x'); 這樣就能正確跑出最佳解了 問題來了 但是如果今天模型的限制式長這樣 http://imgur.com/Pz1X1VN
該怎麼處理變數前面包了兩個sigma呢? 另外ARJH可以自行給定 感謝好心的大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.54.170 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1456381061.A.5BD.html ※ 編輯: ljuyentintho (140.114.54.170), 02/25/2016 14:19:08

02/25 14:22, , 1F
ARJH要給定吧
02/25 14:22, 1F

02/25 14:24, , 2F
喔對了忘了說 ARJH可以自行給定
02/25 14:24, 2F
※ 編輯: ljuyentintho (140.114.54.170), 02/25/2016 14:24:55

02/25 14:32, , 3F
那就是單純的跑for-loop 把f Aineq Bineq Aeq Beq矩陣給建
02/25 14:32, 3F

02/25 14:32, , 4F
出來
02/25 14:32, 4F

02/25 14:34, , 5F
所以是包兩個for loop在前面這樣嗎?
02/25 14:34, 5F

02/25 15:24, , 6F
應該是三四個不定,重點是要跑過所有可能
02/25 15:24, 6F

02/25 15:24, , 7F
不確定的話,自己先手算幾個小的case看看
02/25 15:24, 7F

02/25 18:55, , 8F
可以請您有空的話示範Aeq跟beq的方法嗎?
02/25 18:55, 8F

02/25 18:55, , 9F
一條限制式就好.感謝您
02/25 18:55, 9F

02/25 23:41, , 10F
x2 - 3.5x4 = 0
02/25 23:41, 10F

02/25 23:42, , 11F
Aeq = [0 1 0 -3.5];
02/25 23:42, 11F

02/25 23:42, , 12F
beq = 0; ?
02/25 23:42, 12F

02/26 02:04, , 13F
s大我的意思是如何跑for-loop把Aeq Beq矩陣建出來
02/26 02:04, 13F

02/26 09:10, , 14F
你有用過for-loop嗎?
02/26 09:10, 14F

02/26 10:19, , 15F
有 但是似乎不太正確 我是matlab新手
02/26 10:19, 15F

02/26 10:24, , 16F
把你的想法寫出來,還有可嘗試先從小的case試起
02/26 10:24, 16F

02/26 13:16, , 17F
以限制式(2)來說 我是這樣for a =1:A,for r =1:R,
02/26 13:16, 17F

02/26 13:17, , 18F
Aeq = [x(raj)]; beq = 1;
02/26 13:17, 18F

02/26 13:42, , 19F
你沒有寫出raj的定義,而且Aeq裡要放的是x_raj的係數,不是
02/26 13:42, 19F

02/26 13:42, , 20F
x_raj
02/26 13:42, 20F
文章代碼(AID): #1Mpfo5Mz (MATLAB)
文章代碼(AID): #1Mpfo5Mz (MATLAB)