按照你的数据,我算的结果是8,x=(1,0,1),不过个人感觉最后一个约束对结果影响不大, s(i)的每个值都大于1,而后面无论是x还是m都是很小的数,如果满足前两个约束,第三个看上去也必然满足,而我去掉最后一个约束,结果也没有发生变化。
SETS:A /1..3/:x,y,s,q;
link(A,A):z,m;
endsets
data:
z=0 1 0
1 0 1
0 1 0 ;
y=0 0 0;
m=0 1 0
1 0 0
0 0 0;
s=10,5,3;
q=5,2,3;
enddata
max=@sum(A(i):x(i)*q(i));
@for(link(i,j):x(i)*x(j)*z(i,j)=0);
@for(A(i):x(i)+y(i)<=1);
@sum(A(i):x(i)*s(i))-@sum(link(i,j):x(i)*x(j)*m(i,j))<=20;
您没有说x是0,1变量啊,我也就没有写。我的lingo9开始也运行不了,你用全局最优就可以了。