Optimization 使用迭代操作最小化约束数量的AMPL

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]

我正在学习AMPL,以便以后在我的程序中使用它。我有一个小问题要解决。正如标题所述,我正在尝试使用一些迭代操作来最小化约束的数量。因此,问题如下: 假设我有两套AB,并假设我有代码:

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);