如何自动限制一些未知值的优化问题吗?

1视图(30天)
我有一个和几个未知值优化问题(x)这是一个数组的一部分:
一个= [0 0 x (1) (2) 0 0 0 x x (3) (4) (5) x (6) 0 0 0 0 0 x (7) x (8)];
要优化但每个x - x“集团”,这是由0,是相等的。例:(1)= x(2)和(3)= x (4) = x(5)等等。x(6)并不等于另一个x,因为它不是在一个与其他x的“集团”,因此x(6)将不会受到限制。
我应该写这个约束作为测查(x) = (. .在一个约束函数。
有没有自动编码,可以限制这些值的方式我解释吗?

接受的答案

Torsten
Torsten 2019年3月20日
如果你提前知道哪些向量x的元素组合在一起,您可以简单地使用Aeq和beq定义等式约束。不需要使用非线性约束选项在测查。
2的评论
马特·J
马特·J 2019年3月20日
编辑:马特·J 2019年3月20日
@Rikke,
55个未知数的分组是如何指定为输入?你有一些二进制地图吗?

登录置评。

答案(1)

马特·J
马特·J 2019年3月20日
编辑:马特·J 2019年3月20日
我将假设您有一些二进制向量v表示变量的分组,例如,
[0 0 x (1) (2) 0 0 0 x x (3) (4) (5) x (6) 0 0 0 0 0 x (7) x (8)];
将输入向量
v = [0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1);
然后你可以构造线性等式约束矩阵Aeq,说真的如下
Aeq = diff (speye(元素个数(v)), 1, 1);
丢弃= (v (1: end-1) = = 0) | (diff (v) ~ = 0);
Aeq(丢弃:)= [];
Aeq (: ~ v) = [];
说真的= 0(大小(Aeq, 1), 1);
2的评论

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!