在matlab中求解线性优化问题

时间:2015-11-21 16:46:23

标签: matlab optimization octave

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

function getShelfItem(o,item){
 var l=o.items.length;
 while(l--)if(o.items[l][item])return o.items[l][item];
 return "not found"
}

我的变量向量是:

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

如何创建超级绑定向量?我应该将所有变量放在左侧并将其写为不等式约束吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

上限约束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&lt; = b

的形式编写