在 matlab 中求解线性优化

solving linear optimisation in matlab

我有一个简单的线性问题定义为:

min f(x) such that :A.x <=b
                Aeq.x = beq
                lb<= x <=ub

我的变量向量是:

x =[x(1)i;x(2)i;x(3)i;x(4)i;x(5);x(6)] i=1...n

我很难写出定义如下的上限约束:

 x(1).i <= x(5)
 x(2).i <= x(5)
 x(3).i <= x(6)

如何创建上界矢量?我应该把所有的变量都放在左边,写成不等式约束吗?

感谢您的帮助。

上限约束 ub 适用于上限为 数字 的情况(更准确地说是双精度向量)。 ub 对于广义线性不等式约束 不是

我将忽略你的 .i 符号,因为我不知道那是什么意思。

你的约束条件:x1 <= x5x2 <= x5x3 <= x6可以写成矩阵形式:

[1  0  0  0 -1  0      [x1        [0
 0  1  0  0 -1  0   *   x2   <=    0
 0  0  1  0  0 -1]      x3         0];
                        x4
                        x5
                        x6

因此,要使用几个 Matlab 求解器,您会这样做:

A = [1, 0, 0, 0, -1,  0;         
     0, 1, 0, 0, -1,  0;
     0, 0, 1, 0,  0, -1];
b = zeros(3, 1);

现在你的约束写成 A*x <= b