作者ljuyentintho (小刘)
看板MATLAB
标题[讨论]线性规划建模问题
时间Thu Feb 25 14:17:39 2016
各位大大好
我是用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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1456381061.A.5BD.html
※ 编辑: ljuyentintho (140.114.54.170), 02/25/2016 14:19:08
1F:推 sunev: ARJH要给定吧 02/25 14:22
2F:→ ljuyentintho: 喔对了忘了说 ARJH可以自行给定 02/25 14:24
※ 编辑: ljuyentintho (140.114.54.170), 02/25/2016 14:24:55
3F:推 sunev: 那就是单纯的跑for-loop 把f Aineq Bineq Aeq Beq矩阵给建 02/25 14:32
4F:→ sunev: 出来 02/25 14:32
5F:→ ljuyentintho: 所以是包两个for loop在前面这样吗? 02/25 14:34
6F:推 sunev: 应该是三四个不定,重点是要跑过所有可能 02/25 15:24
7F:→ sunev: 不确定的话,自己先手算几个小的case看看 02/25 15:24
8F:→ ljuyentintho: 可以请您有空的话示范Aeq跟beq的方法吗? 02/25 18:55
9F:→ ljuyentintho: 一条限制式就好.感谢您 02/25 18:55
10F:推 sunev: x2 - 3.5x4 = 0 02/25 23:41
11F:→ sunev: Aeq = [0 1 0 -3.5]; 02/25 23:42
12F:→ sunev: beq = 0; ? 02/25 23:42
13F:→ ljuyentintho: s大我的意思是如何跑for-loop把Aeq Beq矩阵建出来 02/26 02:04
14F:推 sunev: 你有用过for-loop吗? 02/26 09:10
15F:→ ljuyentintho: 有 但是似乎不太正确 我是matlab新手 02/26 10:19
16F:→ sunev: 把你的想法写出来,还有可尝试先从小的case试起 02/26 10:24
17F:→ ljuyentintho: 以限制式(2)来说 我是这样for a =1:A,for r =1:R, 02/26 13:16
18F:→ ljuyentintho: Aeq = [x(raj)]; beq = 1; 02/26 13:17
19F:推 sunev: 你没有写出raj的定义,而且Aeq里要放的是x_raj的系数,不是 02/26 13:42
20F:→ sunev: x_raj 02/26 13:42