[b]sets:
juan/1..150/:;
laos/1..8/:;
cm/1..149/:m;
cn/1..7/:n;
link(juan,laos):y;
endsets
@for(cm(p):m(p)=p);
@for(cn(q):n(q)=q);
m(p)+i<150;
n(q)+j<8;
min=@sum(link(i,j,p,q):@if(y(i,j)#eq#y(i+m(p),j)#and#y(i,j+n(q))#eq#y(i+m(p),j+n(q)),1,0));
改了好几遍改成了这副模样……
想着是求@if函数最后判断的值求和,让其最小,其中有四个变量,i是juan的下角标,j是laos的下角标。m和n是分别等于1到149和1到7的数,它们也要循环,不知道m,n那里编的对不对,并且m+i不能超过150,n+j不能超过8.总体感觉最小值那里的求和也不对,一开始引入了一个变量z(i,j)但是发现m,n也要循环起来,然后就不知道了,求帮忙啊