lingo求助

kankanbobo 2013-07-05 09:02:17
[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也要循环起来,然后就不知道了,求帮忙啊

...全文
132 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifuzhiming 2013-07-06
  • 打赏
  • 举报
回复
没用过这个,学习一下
kankanbobo 2013-07-05
  • 打赏
  • 举报
回复
又修改了了一次 sets: sj/1..150/:; lao/1..8/:; aa/1..149/:e; bb/1..7/:d; link(sj,lao):y; link1(sj,lao,aa,bb):z; endsets min=c; @for(aa(p):e(p)=p); @for(bb(q):d(q)=q); @for(link1(i,j,p,q)|i+e(p)#le#150#and#j+d(q)#le#8:z(i,j,p,q)); z(i,j,p,q)=@if(y(i,j)#eq#y(i+e(p),j)#and#y(i,j+d(q))#eq#y(i+e(p),j+d(q)),1,0)); c=@sum(link1(i,j,p,q):z(i,j,p,q)); 但是还是不对
jacke-yang 2013-07-05
  • 打赏
  • 举报
回复
你想用lingo实现什么功能? “m(p)+i<150; n(q)+j<8; ”不能这么写语句。。。 “link(i,j,p,q):”这个也不对。。。
jacke-yang 2013-07-05
  • 打赏
  • 举报
回复
有语法错误。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧