假设我们有X=variable(n, boolean=True)
和一个长度为n的包含重复整数的数组B。
我想写一个约束条件,使得X的解与B的元素相乘是一个包含0或单个值p作为元素的Array,其中p是B的元素。
解决方案示例B=[2,3,4,3,3,2,2,3,5,4,7,7,2]
应该是X1=[0,1,0,1,1,0,0,0,0,0,0,0,0]
或者X2=[1,0,0,0,0,0,1,0,0,0,0,0,1]
但不是X3=[0,0,1,1,0,0,1,0,0,0,0,0,1]
我尝试将设置为约束,同时使用numpy
和cvxpy
constr=[cvxpy.sum(np.multiply(X,B))/sum(X)==max(np.multiply(X,B))]
但是我不能解决我使用上面的约束创建的问题
1条答案
按热度按时间zlwx9yxi1#
多亏了米哈尔·阿达马谢克,我终于找到了解决办法.
下面是求解器的完整代码和一个使用三个不同数组的示例。
我必须使用两组不同的辅助变量,一组用于实现“固定值集”约束,另一组用于表示“析取约束”