问题一:
绝对值问题:
目标方程带有绝对值的问题:
因为在matlab线性规划中没有办法给决策变量加入绝对值限定,所以可以采用换元的思路:
设有:
,其中
即有:
则原问题就可以变为:
此时问题就变为了线性问题。
绝对值问题需要注意的点:
1)因为做变换后变为,此时有两种变量,所以在实现代码编写的时候若用一个变量表示时,可以先命名完再命名。
2)计算完后要进行变量回代,回代后的才是真正的决策变量。
代码示例:
f=[1,2,3,4,1,2,3,4]';
A=[1 -1 -1 1;1 -1 1 -3;1 -1 -2 3];
A=[A,-A]
b=[-2 -1 -1/2]';
Aeq=[];
beq=[];
lb=zeros(length(f),1);
[x,fval]=linprog(f,A,b,Aeq,beq,lb);
%将换元部分回代,得到决策变量
x0=[];
for i=1:length(f)/2
x0(i)=x(i)-x(i+(length(f)/2));
end
x0
fval
问题二:
面对这类问题可以令,此时问题变成了:
注意:
限制条件分别为的情况,都要列出。