您好我想知道是否有人知道如何使用MATLAB命令linprog
来解决双重问题。它的记录方式似乎非常有助于解决原始问题,但我不确定如何使它解决双重问题。
例如,MATLAB可以使用linprog
命令解决,因为它已记录在案
max f(x) = 5x1 + 4x2 + 6x3
subject to
x1 – x2 + x3 ≤ 20
3x1 + 2x2 + 4x3 ≤ 42
3x1 + 2x2 ≤ 30
0 ≤ x1, 0 ≤ x2, 0 ≤ x3
但我不知道如何使用命令解决双重问题:
min f(y) = 20y1 + 42y2+ 30y3
subject to
y1 + 3y2 + 3y3 >= 5
-y1 + 2y2 +2y3 >= 4
y1 + 4y2 >= 6
0 ≤ y1, 0 ≤ y2, 0 ≤ y3
我尝试以相同的方式输入它并否定矩阵A和b向量来翻转不等式,但结果不是我所期望的:
f = [ 20; 42; 30];
A = -[1 3 3
-1 2 2
1 4 0];
b = -[5; 4; 6];
lb = zeros(3,1);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
我是线性编程的新手,想要检查我使用单纯形做的问题,但要快速检查。提前致谢。我希望我的问题很明确。