Optimization 使用迭代操作最小化约束数量的AMPL
我正在学习AMPL,以便以后在我的程序中使用它。我有一个小问题要解决。正如标题所述,我正在尝试使用一些迭代操作来最小化约束的数量。因此,问题如下: 假设我有两套A和B,并假设我有代码:Optimization 使用迭代操作最小化约束数量的AMPL,optimization,mathematical-optimization,minimization,ampl,Optimization,Mathematical Optimization,Minimization,Ampl,我正在学习AMPL,以便以后在我的程序中使用它。我有一个小问题要解决。正如标题所述,我正在尝试使用一些迭代操作来最小化约束的数量。因此,问题如下: 假设我有两套A和B,并假设我有代码: set A:= (1, 2, 3) (4, 5, 6); set B:= a b c; var x{A,B} binary; **some_objective** ; subject to constraint { (i,j,k) in A, b in B }: x[i,b] + x[j,b]
set A:= (1, 2, 3) (4, 5, 6);
set B:= a b c;
var x{A,B} binary;
**some_objective** ;
subject to constraint { (i,j,k) in A, b in B }: x[i,b] + x[j,b] + x[k,b] <= 1;
设置A:=(1,2,3)(4,5,6);
集合B:=a B c;
var x{A,B}二进制;
**一些目标**;
首先,根据A中的约束{(i,j,k),b中的约束}:x[i,b]+x[j,b]+x[k,b],我想指出,使用乘积的约束并不等同于原始约束。例如,一个解x[1,a]=1,x[2,a]=1,x[3,a]=1
,其余的x
等于零,满足了用prod
表示的约束,因为(x[1,a]+x[2,a]+x[3,a])*(x[1,b]+x[2,b]+x[3,b])*(x[1,c]+x[2,c]+x[3,c]=0*0=0=0,我认为你是对的,我没有想到这种情况。谢谢但是你说我可以用逻辑的&&
,你能给我举个例子吗?cplex向我显示错误消息cplex 12.6.0.0:logical constraint\u slogcon[1]不是指示符约束。
当我使用受约束时{(I,j,k)在A}:forall{b在b}((x[I,b]+x[j,b]+x[k,b])我已经用关于ilogcp的更多信息更新了答案。谢谢@vitaut,很抱歉回复太晚
subject to constraint { (i,j,k) in A }: prod { b in B } (x[i,b] + x[j,b] + x[k,b]) <= 1;
subject to constraint { (i,j,k) in A }: forall { b in B } ( (x[i,b] + x[j,b] + x[k,b]) <= 1 );
subject to c{(i,j,k) in A}: forall {b in B} (x[i,b] + x[j,b] + x[k,b] <= 1);