基于数学模型求解的LINGO使用(一):认识LINGO以及变量的定义 您所在的位置:网站首页 lingo中0-1变量的表示 基于数学模型求解的LINGO使用(一):认识LINGO以及变量的定义

基于数学模型求解的LINGO使用(一):认识LINGO以及变量的定义

2024-05-21 08:20| 来源: 网络整理| 查看: 265

本文为作者原创,若需转载使用请注明来源https://www.cnblogs.com/sangxuuan/p/12246622.html 1、这篇帖子适合你么?(必读)

这学期的一门课上接触了LINGO的使用,得益于老师超前的教学理念,我们用不多的课堂时间掌握了第一门像样的求解器语言。对于我们专业来说,第一次使用LINGO是在运筹学课上,作为上机实验求解线性规划模型、目标规划、整数规划等简单的经典模型,一开始认为只要把一些模型简单的输入求解器按下Undo就可以,后来发现求解一些复杂的模型时,简单的誊抄是远远不够的,复杂的逻辑关系表示需要自己进行开发。

这个记录的帖子,是回顾了这一学期我学习LINGO的轨迹,直接从对于数学模型的理解入手,基于对模型的充分理解进行LINGO的使用。

如果你是本科生,这一系列的帖子足够对LINGO进行初步的了解,想要熟练掌握还需要自己进行练习和总结。以下是我的心得和我认为在学习过程中最重要的理念:

最重要的理解数学模型!最重要的理解数学模型!最重要的理解数学模型!

如果在阅读或者编译的过程中出现问题,欢迎和我交流!评论区也好,邮箱也行!

2、先看一个TSP问题吧!  

假设一艘船必须访问n个港口(PORT),这n个港口是一个完全图,船需要恰好访问所有港口一次,并且回到起点。

问题的背景就是这样,对于TSP问题,建模的类型以及求解方法在这里先不谈,刚学习LINGO先从标准的问题模型入手:

 

 

 在这里,i,j表示港口所在的城市

具体的代码如下(没有对应的语言类型,故没有Highlight显示,以加粗代替):

1 data: 2 n=……; 3 enddata 4 sets: 5 city/1..n/; 6 link1(city,city):x,d; 7 link2(city):u; 8 endsets 9 10 data: 11 d= 12 (对d(i,j)进行赋值,可以复制粘贴表格) 13 ; 14 enddata 15 min=@sum( 16 city(i): 17 @sum( 18 city(j): 19 d(i,j)*x(i,j) 20 ) 21 ); 22 23 @for(city(j): 24 @sum(city(i)|i#NE#j: 25 x(i,j) 26 )=1 27 ); 28 @for(city(i): 29 @sum(city(j)|i#NE#j: 30 x(i,j) 31 )=1 32 ); 33 @for(city(i): 34 @for(city(j): 35 @bin(x(i,j)) !@gin整型;@free大于等于零的实数; 36 ) 37 ); 38 39 40 @for(city(i): 41 @for( 42 43 city(j)|(i#GT#1)#AND#(i#LE#n)#AND#(i#NE#j)#AND#(i#NE#1)#AND#(j#NE#1): 44 u(i)+u(j)-x(i,j)*n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有