LINGO 基础学习笔记


LINGO 中建立的优化模型可以由5个部分组成,或称为 5 段(section):
(1)集合段(SETS):这部分要以“SETS:”开始,以“ENDSETS”结束,作用在于定义必要的集合变量(SET)及其元素(member,含义类似于数组的下标)和属性(attribute, 含义类似于数组)。
(2)目标与约束段:这部分实际上定义了目标函数、约束条件等,但这部分并不有段的 开始和结束标记,因此实际上就是除其他 4 个段(都有明确的段标记)外的 LINGO 模型。 这里一般要用到LINGO 的内部函数尤其是与集合相关的求和函数@SUM和循环函数@FOR 等,可在具体使用中体会其功能和用法。
(3)数据段(DATA):这部分要以“DATA:”开始,以“ENDDATA”结束,作用在于对集合的属性(数组)输入必要的常数数据。格式为: attribrte(属性)=value_list(常数列表); 常数列表(value_list)中数据之间可以用逗号“,”分开,也可以用空格分开(回车的作用也等价 于一个空格),如上面对 DEM 的赋值也可以写成“DEM=40 60 75 25;” 在 LINGO 模型中,如果想在运行时才对参数赋值,可以在数据段使用输入语句.。但这仅用于对单个变量赋值,而不能用于属性变量(数组),输入语句格式为:“变量名=?;”。例如, 上面的例子中如果需要在求解模型时才给出初始库存量(记为 A),则可以在模型中数据段写上语句: A=?; 在求解时 LINGO 系统给出提示界面,等待用户输入变量 A 的数值。当然,此时的约束语句 INV(1)=10+RP(1)+OP(1)-DEM(1); 也应该改写成 INV(1)=A+RP(1)+OP(1)-DEM(1); 这样,模型就可以计算任意初始库存量(而不仅仅只能计算初始库存量为 10)的情况了。
(4)初始段(INIT):这部分要以“INIT:”开始,以“ENDINIT”结束,作用在于对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,所以用户如果能给出一个比较好迭代初值,对提高算法的计算效果是有益的)。如果有一个接近最优解的初值,对 LINGO 求解模型是有帮助的。定义初值的格式为 attribute(属性)= value_list(常数列表); 这与数据段中的用法是类似的。
(5)计算段(CALC):这部分要以“CALC:”开始,以“ENDCALC”结束,作用在于对一些原始数据进行计算处理(这种处理是在数据段的数据输入完成以后、LINGO 开始 正式求解模型之前进行的)。为什么要设计这个段?这是因为在实际问题中,输入的数据通常是原始数据,不一定能在模型中直接使用,我们就可以在这个段对这些原始数据进行一定的“预处理”,得到我们模型中真正需要的数据。 请大家注意,在计算段中语句是顺序执行的,所以上面的一两个语句不能交换顺序,
LINGO 中的逻辑运算符有 9 种,可以分为两类:
(1)#OR#(或),#AND#(与),#NOD#(非):这 3 个运算是逻辑值之间的运算,也就是它们操作的对象本身 必须已经是逻辑值或逻辑表达式..计算结果也是逻辑值
(2)#EQ#(等于).#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于).#LE#(小于等于):

参考实例:
min=@sum(hz(i):@sum(hz(j):@sum(cl(k):c(i,j)*x(i,j,k)))); @for(cl(k):@sum(hz(i)|i#gt#1:g(i)*y(k,i))<=q(k)); @for(hz(i)|i#gt#1:@sum(cl(k):y(k,i))=1); y(1,1)+y(2,1)=2; @for(hz(i):@for(cl(k):@sum(hz(j)|j#ne#i:x(j,i,k))=y(k,i))); @for(hz(i):@for(cl(k):@sum(hz(j)|j#ne#i:x(i,j,k))=y(k,i))); @for(hz(i):@for(hz(j):@for(cl(k):@bin(x(i,j,k))))); @for(cl(k):@for(link2(i,j)|i#ne#j#and#j#ne#1:u(k,i)-u(k,j)+10*x(i,j,k)<=9)); @for(link1(k,i):@bin(y(k,i)));
变量定界函数对变量的取值范围附加限制,共有以下四种函数:
@BND(L,X,U):限制 L〈=X〈=U。注意 LINGO 中命令 SLB,SUB 类似函数@SLB 和 @SUM. @BIN(X):即限制 X 为 0 或 1。注意 LINGO 中这个函数的名字却不是@INT(X).
@FREE(X):取消对 X 的符号限制(即可取负数、0 后正数)。
@GIN(X):限制 X 为整数。

LINGO 基础学习笔记的更多相关文章
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
- handlebars.js基础学习笔记
最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...
随机推荐
- 8086的分段寻址技术学习总结(Segmented Addressing)
计算机最小粒度的数据单位是bit,但是为每个bit都分配地址不仅浪费资源,同时存取效率低.因此转而用8bits(也就是1个字节,1byte)来占用一个地址. 那么16位的地址线能够访问的地址空间大小为 ...
- win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
之前的系统没有这个问题,就是win10有这个问题,过一段时间就会出现这个问题,网上找了很多,最后发现是显卡驱动的问题,是A卡的问题,只需要更新A卡驱动即可,如果更新A卡驱动不行的话,或者说A卡驱动已经 ...
- 关于del命令
del命令用于删除具体的文件,但是删除文件的时候如果不指定文件的扩展名就会显示找不到文件 还有如果所要删除文件的文件名中含有空格的话该命令会自动识别为几个文件,就从空格处把文件 分成几份,然后就会显示 ...
- Xamarin Forms中WebView的自适应高度
在Xamarin.Forms中,WebView如果嵌套在StackLayout和RelativeLayout中必须要设置HeightRequest和WidthRequest属性才会进行渲染.可是在实际 ...
- Spring MVC注解式开发
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- 快速创建 HTML5 Canvas 电信网络拓扑图
前言 属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列表还不够好看,怎么办?我试着用 HT for Web 来实现属性栏点击按钮弹出多功能 ...
- CVPR2018: Unsupervised Cross-dataset Person Re-identification by Transfer Learning of Spatio-temporal Patterns
论文可以在arxiv下载,老板一作,本人二作,也是我们实验室第一篇CCF A类论文,这个方法我们称为TFusion. 代码:https://github.com/ahangchen/TFusion 解 ...
- 特殊权限chattr的用法
1,只能对文件进行追加操作: [root@localhost tmp]# cat yum.log 22222222222222[root@localhost tmp]# chattr +a yum.l ...
- 需求分析---NABCD
N(Need,需求) 我们的产品未来天气,是为了解决不爱看天气预报的群众开发一款类似备忘录式的天气预报软件.很多人认为今天天气很好,明天肯定不会差,但是风云忽变,可能明天就降大雨,所以就忽略了带伞, ...
- Ubuntu修改密码之后无法登录
问题:Ubuntu修改密码之后无法登录,停留在登录界面,输入正确的密码之后,画面一闪又回到了登录界面. 解决:ctrl+alt_f1进入终端,输入用户名和密码,$cd /home/userXXX &a ...