我有一个简单的线性问题定义为:
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
如何创建超级绑定向量?我应该将所有变量放在左侧并将其写为不等式约束吗?
感谢您的帮助。
答案 0 :(得分:0)
上限约束ub
用于上限为数字(更准确地说是双精度矢量)。对于广义的线性不等式约束,ub
不!
我会忽略你的.i表示法,因为我不知道这是什么意思。
您的约束:x1 <= x5
,x2 <= x5
,x3 <= 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
的形式编写