线性规划——最小化 t

Linear Programming -- Minimizing t

我正在尝试在 matlab 中解决以下问题,但遇到了一些困难。

Min t
s.t.
t>= 0.0538λ_2 - 0.7071λ_1
t>= λ_1 - 0.3827λ_2
where 0<=λ_j<=1 for j=1,2

这是我目前拥有的:

f=[0;0;1]  
A=[-0.7071 0.0538 -1;
1 -0.3827 -1]  
B=[0;0]  
ub=zeros(2,1)  
lb=zeros(2,1)  
linprog(f,A,B,[],[],lb,ub);

这个问题取自一篇研究论文,作者解决了上述问题并找到了最优值t=−0.12698。我的实施没有得到正确的答案。有人能帮助我吗。另外,如何在 linprog() 中指定我想使用单纯形法。

矩阵 A 设置不正确。 您需要确定哪些变量应该放在什么位置。

A=[-0.7071 0.0538 -1;
  1 -0.3827 -1]  

P.S。对不起我的英语。

这应该会给您正确的结果:

f=[1;0;0];  
A=[-1 -0.7071 0.0538;
-1 1 -0.3827]  ;
B=[0;0]  ;
ub=[inf 1 1]  ;
lb=[-inf 0 0]  ;
options = optimset('Algorithm','simplex');
xres = linprog(f,A,B,[],[],lb,ub,[],options);

请注意,linprog 需要您输入以下格式:

分钟 x

s.t。斧 <=b

我在这里所做的是设置向量 x = [t l1 l2],因此结果向量 xres 中的第一个条目对应于 t。您可以使用 optimset 函数设置算法。

此外,您只为 3 个变量中的 2 个设置了下限和上限,因此 matlab 在这方面给了我一些警告。为了保险起见,通常最好为不受限制的变量设置'dummy'限制(即这里我将t的上限设置为inf,下限设置为-inf).这样,您就可以确保将正确的界限应用于正确的变量。