数学建模社区-数学中国

标题: 求助如何正确使用lingo集的问题 [打印本页]

作者: jth804770171    时间: 2020-3-28 17:58
标题: 求助如何正确使用lingo集的问题
程序运行之后就出现这个错误,请问是怎么回事另外我的语法还有什么地方有错误?就拿目标函数来说吧,函数也在附录。

QQ截图20200328143903.png (14.92 KB, 下载次数: 317)

QQ截图20200328143903.png

QQ截图20200328170113.png (157.78 KB, 下载次数: 328)

QQ截图20200328170113.png


作者: jth804770171    时间: 2020-3-28 18:00
上面的程序被挡住了,如果有人能指导一下写方程可以给大佬发红包,穷学生发不了多少但是起码是个心意哈哈。

3.png (157.79 KB, 下载次数: 329)

3.png


作者: jth804770171    时间: 2020-3-28 18:01
上面的程序被挡住了,如果有大佬能私聊指导我一下写程序,定当感激不尽

3.png (157.79 KB, 下载次数: 315)

3.png


作者: jth804770171    时间: 2020-3-28 18:02
程序被挡住了,这是程序

3.png (157.79 KB, 下载次数: 319)

3.png


作者: madio    时间: 2020-3-28 18:34
你把这里的link1(j)改为number(j)试试!

作者: jth804770171    时间: 2020-3-28 19:03
madio 发表于 2020-3-28 18:34
你把这里的link1(j)改为number(j)试试!

改完了之后这个地方还是有问题。。。

2.png (210.21 KB, 下载次数: 321)

2.png


作者: madio    时间: 2020-3-28 21:38
看得有点乱,最后是不是少了一个右括号?

作者: jth804770171    时间: 2020-3-28 22:33
madio 发表于 2020-3-28 21:38
看得有点乱,最后是不是少了一个右括号?

确实是少了一个括号但是加上之后好像还是这个错误
model:
sets:
allpoint/1..8/:ap;!所有点的集合,其中8为初始位置;                    
number/1..7/:x,y;!待移动货架的集合定义坐标;                       
agvnumber/1..4/:time,agvx,agvy;!k辆AGV;                        
link1(number,number,agvnumber):t,serve;!定义货架之间运行时间与服务关系;                                                         
link2(number,agvnumber):z;!定义小车与货架的服务关系;                 
link3(allpoint,allpoint,agvnumber):u;!agv访问货架相关的流变量;                    
endsets
data:
x=1 2 4 2 4 1 4;  
y=1 0 1 2 3 4 4;
agvx=0 5 0 5;
agvy=0 0 5 5;
enddata
[obj]min=@max(agvnumber(k):time(k));
@for(agvnumber(k):time(k)=@sum(number(i):@sum(number(j)|j#not#i:serve(i,j,k)*t(i,j,k))));!3-1;
@for(agvnumber(k):@sum(number(j):serve(8,j,k)=1));!3-2;
@for(agvnumber(k):@sum(number(i):serve(i,8,k)=1));!3-3;
@for(agvnumber(k):@sum(number(i):@sum(number(j)|j#not#i:serve(i,j,k)=1);!3-4;
@for(agvnumber(k):@sum(number(j):@sum(number(i)|i#not#j:serve(j,i,k)=1);!3-5;
@for(agvnumber(k):@for(allpoint(h):(@sum(allpoint(i)|i#not#h:serve(i,h,k))-@sum(allpoint(j)|j#not#h:serve(h,j,k))=0)));!3-6;
@for(agvnumber(k):@for(number(i):z(i,k)=@sum(allpoint(j)|j#not#i:serve(j,i,k))));!3-7;
@for(agvnumber(k):@for(number(i):@for(number(j)|j#not#i:t(i,j,k)=@abs(x(i)-x(j))+@abs(y(i)-y(j))));!3-8;  
@for(agvnumber(k):@for(number(j):t(8,j,k)=@abs(agvx-x(j))+@abs(agvy-y(j))));!3-9;
@for(agvnumber(k):@for(number(i):t(i,8,k)=@abs(x(j)-agvx)+@abs(y(i)-agvy)));!3-10;
@for(agvnumber(k):@for(number(i):z(i,k)=@sum(allpoint(j):u(i,j,k))-@sum(allpoint(j):u(j,i,k))));!3-14;
@for(agvnumber(k):@for(allpoint(i):@for(allpoint(j):u(i,j,k)<=6*x(i,j,k))));!3-15;
@for(link1:@bin(x));
@for(link2:@bin(z));
end


2.png (181.42 KB, 下载次数: 348)

2.png

1.png (165.86 KB, 下载次数: 315)

1.png


作者: madio    时间: 2020-3-29 08:25
你这个代码问题太多了,你把原先的数学模型发上来,我把一些行注释了,语法问题已经给你改了,但是这些行是逻辑混乱,也就是和模型不符,有问题,所以出不来结果!
  1. model:
  2. sets:
  3. allpoint/1..8/:ap;!所有点的集合,其中8为初始位置;                    
  4. number/1..7/:x,y;!待移动货架的集合定义坐标;                       
  5. agvnumber/1..4/:time,agvx,agvy;!k辆AGV;                        
  6. link1(number,number,agvnumber):t,serve;!定义货架之间运行时间与服务关系;                                                         
  7. link2(number,agvnumber):z;!定义小车与货架的服务关系;                 
  8. link3(allpoint,allpoint,agvnumber):u;!agv访问货架相关的流变量;                    
  9. endsets
  10. data:
  11. x=1 2 4 2 4 1 4;  
  12. y=1 0 1 2 3 4 4;
  13. agvx=0 5 0 5;
  14. agvy=0 0 5 5;
  15. enddata
  16. [obj]min=@max(agvnumber(k):time(k));
  17. @for(agvnumber(k):time(k)=@sum(number(i):@sum(number(j)|j#ne#i:serve(i,j,k)*t(i,j,k))));!3-1;
  18. @for(agvnumber(k):@sum(number(j):serve(7,j,k))=1);!3-2;
  19. @for(agvnumber(k):@sum(number(i):serve(i,7,k))=1);!3-3;
  20. @for(agvnumber(k):@sum(number(i):@sum(number(j)|j#ne#i:serve(i,j,k)))=1);!3-4;
  21. @for(agvnumber(k):@sum(number(j):@sum(number(i)|i#ne#j:serve(j,i,k)))=1);!3-5;
  22. !@for(agvnumber(k):@for(allpoint(h):(@sum(allpoint(i)|i#ne#h:serve(i,h,k))-@sum(allpoint(j)|j#ne#h:serve(h,j,k)))=0));!3-6;
  23. !@for(agvnumber(k):@for(number(i):z(i,k)=@sum(allpoint(j)|j#ne#i:serve(j,i,k))));!3-7;
  24. !@for(agvnumber(k):@for(number(i):@for(number(j)|j#ne#i:t(i,j,k)=@abs(x(i)-x(j))+@abs(y(i)-y(j)))));!3-8;  
  25. !@for(agvnumber(k):@for(number(j):t(8,j,k)=@abs(agvx-x(j))+@abs(agvy-y(j))));!3-9;
  26. !@for(agvnumber(k):@for(number(i):t(i,8,k)=@abs(x(j)-agvx(k))+@abs(y(i)-agvy(k))));!3-10;
  27. !@for(agvnumber(k):@for(number(i):z(i,k)=@sum(allpoint(j):u(i,j,k))-@sum(allpoint(i):u(i,j,k))));!3-14;
  28. !@for(agvnumber(k):@for(allpoint(i):@for(allpoint(j):u(i,j,k)<=6*x(i,j,k))));!3-15;
  29. @for(link1:@bin(t));
  30. @for(link2:@bin(z));
  31. end
复制代码


作者: jth804770171    时间: 2020-3-29 11:13
madio 发表于 2020-3-29 08:25
你这个代码问题太多了,你把原先的数学模型发上来,我把一些行注释了,语法问题已经给你改了,但是这些行是 ...

这是我的模型,其中一些点的位置就做了一些简化,自己学了一段时间的lingo,实在是麻烦您了。。。

修正模型.docx

81.03 KB, 下载次数: 1, 下载积分: 体力 -2 点






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5