LINGO教程(基本语法)

合集下载

lingo教程

lingo教程

lingo教程LINGO是用来求解线性和非线性优化问题的简易工具。

LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。

§1 LINGO 快速入门安装:实验室的所有电脑都已经事先安装好了Lingo 8(或者9,10,11)。

如果要在自己的电脑上安装这个软件,建议从网上下载一个破解版的,按照提示一步一步地安装完毕。

简单例子:当你在windows系统下开始运行LINGO时,会得到类似于下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现。

下面举两个例子。

例1 某工厂在计划期内要安排生产I、II两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表所示。

产品I 产品II 设备 1 2 8台时原材料A 4 0 16kg 原材料B 0 4 12kg工厂每生产一件产品I可获利2元,每生产一件产品II可获利3元,问应该如何安排生产计划使该厂获利最多?我们用下面的数学模型来描述这个问题。

设x_1、x_2分别表示在计划期内产品I、II的产量。

因为设备的有效台时是8,这是一个限制产量的条件,所以在确定产品I、II的产量时,要考虑不超过设备的有效台时数,即可用不等式表示为x_1 + 2x_2 <=8 同理,因原材料A、B的限量,可以得到以下不等式4x_1 <=16 4x_2 <=12 该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。

若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为:目标函数max z=2x_1+3x_2约束条件x_1+2x_2<=84x_1 <=16 4x_2 <=12 x_1、x_2 >=0 一般来说,一个优化模型将由以下三部分组成:1. 目标函数(Objective Function):要达到的目标。

lingo语言

lingo语言
❖ 界面
主窗口
状态栏
Module 00-16
模型窗口 Model Window
当前光标 位置
当前时间
运行状态窗口
求解 器(求 解程 序)状 态框
当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示 IP,以PI开头表示PIP)
解的目标函数值
Module 00-17
运行状态窗口
扩展 的求 解器 (求解 程序) 状态 框
Module 00-18
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
目前为止找到的可行 解的最佳目标函数值
有效步数
目标函数值的界
data:
c 41 , c 42 , c 51 , c 52 , c 61 , c 62
a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20;
需求点的位置 供需量
x,y=5,1,2,7;
Module 00-11
当前解的状态 : "Global
Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定)
目前为止的 迭代次数
当前约束不满足的总量(不是不 满足的约束的个数):实数(即使 该值=0,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束)

Lingo基本用法总结

Lingo基本用法总结

Lingo基本⽤法总结Lingo基本⽤法总结(除集函数部分)LINGO是⽤来求解线性和⾮线性优化问题的简易⼯具。

Lingo免费版可以⽀持30个未知数,lingo破解版可以⽀持⼏万个未知数、⼏万个约束条件。

当你在windows下开始运⾏LINGO系统时,会得到类似下⾯的⼀个窗⼝:外层是主框架窗⼝,包含了所有菜单命令和⼯具条,其它所有的窗⼝将被包含在主窗⼝之下。

在主窗⼝内的标题为LINGO Model – LINGO1的窗⼝是LINGO的默认模型窗⼝,建⽴的模型都都要在该窗⼝内编码实现。

下⾯举两个例⼦。

例1.1 如何在LINGO中求解如下的LP问题:在模型窗⼝中输⼊如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击⼯具条上的按钮即可。

得到如下结果:所以当x1为250,x2为100时⽬标函数得到最⼤值。

算术运算符Lingo中变量不区分⼤⼩写,以字母开头不超过32个字符算术运算符是针对数值进⾏操作的。

LINGO提供了5种⼆元运算符:^乘⽅﹡乘/除﹢加﹣减LINGO唯⼀的⼀元算术运算符是取反函数“﹣”。

这些运算符的优先级由⾼到底为:⾼﹣(取反)^﹡/低﹢﹣运算符的运算次序为从左到右按优先级⾼低来执⾏。

运算的次序可以⽤圆括号“()”来改变。

例:在x1+x2>=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最⼩值在代码窗⼝中编写 min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后单击上⾯菜单lingo 菜单下solve 键即可。

数学函数标准数学函数:@abs(x) 返回x 的绝对值@sin(x) 返回x 的正弦值,x 采⽤弧度制 @cos(x) 返回x 的余弦值 @tan(x) 返回x 的正切值 @exp(x) 返回常数e 的x 次⽅@log(x) 返回x 的⾃然对数@lgm(x) 返回x 的gamma 函数的⾃然对数 @sign(x) 如果x<0返回-1;否则,返回1@floor(x) 返回x 的整数部分。

Lingo 语言入门

Lingo 语言入门

Director Lingo 语言入门Lingo 语言基础二、脚本类型Lingo 的脚本类型分为frame 脚本,sprite 脚本, cast 脚本和movie 脚本。

在这里我不想把脚本前面的关键字翻译成为中文因为这样可能容易引起歧义。

区分这些脚本的Director Lingo 语言入门Lingo 语言基础二、脚本类型Lingo 的脚本类型分为frame 脚本,sprite 脚本, cast 脚本和movie 脚本。

在这里我不想把脚本前面的关键字翻译成为中文因为这样可能容易引起歧义。

区分这些脚本的类型的方法就是看这些脚本写在什么位置上。

frame 脚本写在帧里面。

Sprite 脚本写在Sprite 上,Cast 脚本写在Cast 上,而Movie 脚本写在电影中不依靠任何的其他帧和角色。

这样写看起来有点象废话。

不过等下解释了大家就会明白的。

frame 脚本写在帧中的脚本就是frame 脚本。

播放头在这帧中的时候就会执行frame 脚本。

编写frame 脚本,只要双击帧脚本通道,系统就会弹出窗口。

此时就可以编写frame 脚本。

我们上一个例子中用到的第一个脚本就是帧脚本。

我们是在Score (分镜表)的脚本通道里面写的。

我们当时需要把播放头停止在第5 帧。

这个动作要求在第 5 帧画面的时候执行。

并且和别的sprite 或者Cast 都没有关系。

仅仅是在帧发生。

于是我们采用在帧脚本。

在帧脚本通道第 5 帧的地方双击。

系统弹出窗口,默认的事件为on exitframe me 当帧退出的时候,我们执行下面的命令,停在原地。

常用的frame 脚本事件有。

on enterframe -- 当播放头进入该帧的时候lingo 语言endon exitframe -- 当播放头移处该帧的时候lingo 语言endSprite 脚本Sprite 脚本应用于Sprite 中。

我们把Cast 库中的演员拖到舞台之上以后就是Sprite 了。

Lingo的基本用法

Lingo的基本用法

LINGO的基本用法一.集合的基本用法集合(set)及其属性(attribute)的概念基本集合与派生集合集合名[/元素列表/][:属性列表];集合名(父集合列表)[/元素列表/][:属性列表];稠密集合与稀疏集合元素过滤法基本集合的隐式列举法:数字型 1..n字符数字型Car101..Car208日期型MON..FRI月份型OCT..JAN年月型OCT2007..JAN2008二.模型结构(1)集合段从“sets:”到“endsets”(2)数据输入段从“data:”到“enddata”属性=常数列表(3)目标和约束段MIN=表达式(4)计算段从“calc:”到“endcalc”,对原始数据的计算处理(5)初始段从“init:”到“endinit”,定义迭代初值用属性=常数列表(6)注释从感叹号到分号三.函数基本数学函数@ABS(X) @COS(X) @EXP(X) @FLOOR(X)@LGM(X) @LOG(X) @MOD(X,Y) @POW(X,Y)@SIGN(X) @SIN(X) @SMAX(list) @SMIN(list)@SQR(X) @SQRT(X) @TAN(X)其中@LGM(X) =ln(X-1)!集合循环函数@FOR @MIX @MIN @PROD@SUM用法:集合函数名(集合名(集合索引列表)|条件:表达式组)集合操作函数@IN @IN(集合名,集合元素名,…集合元素名)@INDEX @INDEX(集合名,集合元素名)@WRAP @WRAP(i,N),循环计数@SIZE @SIZE(集合名)变量定界函数@BND(L,X,U) @BIN(X) @FREE(X) @GIN(X) 分别对变量取值限制:上下界,0-1值,取消非负限制,整数概率分布函数@PNS(X) 标准正态分布@PSL(X) 正态线性损失@PBN(P,N,X) 二项分布@PHG 超几何分布@PTD(N,X) t分布@PFD(N,D,X) F分布@PPS(A,X) 泊松分布@PPL(A,X) 泊松线性损失@PCX(N,X) X平方分布@RAND(seed) 随机数服务系统函数@PEL(A,X) @PFS(A,X,C) @PEB(A,X)文件输入输出函数@FILE(fn) @TEXT(…fn‟) @OLE结果报告函数@ITERS() 返回迭代次数@NEWLINE(n) 输出n个新行@STRLEN(string) 返回字符串的长度@NAME(reference) 返回变量名或行名@WRITE 用于数据段,输出变量,字符串或换行@WRITEFOR 是@WRITE在循环情况下的推广@FORMAT 以格式描述符方式输出数值@DUAL(varname) 返回解答中变量的判别数或结束行的影子价格@STATUS() 返回求解后的最后状态其他函数@IF @IF(条件,true结果,false结果)@WARN @WARN(‘text’,条件)@USER @USER(用户编写的函数dll或obj文件)四.文件传输通过文本文件传输数据@FILE和@TEXT通过Excel文件传输数据@OLE例题! 背包问题 Knapsack Problem! max z=sum(i=1~n)ci xi! st. sum ai xi <=b, xi=0/1;model:title背包问题;sets:wp/w1..w8/:a,c,x;endsetsdata:a=1 3 4 3 3 1 5 10; c=2 9 3 8 10 6 4 10; enddatamax=@sum(wp:c*x);@for(wp:@bin(x));@sum(wp:a*x)<=15;end!装箱问题!=======;model:title装箱问题;sets:wp/w1..w30/:w; xz/v1..v30/:y; links(wp,xz):x; endsetsdata:w=0.51,0.51,0.51,0.51,0.51,0.51,0.27,0.27,0.27,0.27,0.27,0.27,0.26,0.26,0.26,0.26,0.26,0.26,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23;enddatamin=@sum(xz(i):y(i));C=1;@for(links:@bin(x));@for(xz:@bin(y));@for(wp(i):@sum(xz(j):x(i,j))=1);@for(xz(j):@sum(wp(i):w(i)*x(i,j))<=C*y(j)); end@for(o(j):cun(2,j)= cun(1,j)+x(2,j)-he(2,j) ;z2= @sum(o(j): cun(2,j));@for(o(j):cun(3,j)= cun(2,j)+x(3,j)-he(3,j) ;z3= @sum(o(j): cun(3,j));@for(o(j):cun(4,j)= cun(3,j)+x(4,j)-he(4,j) ;z4= @sum(o(j): cun(4,j));@for(o(j):cun(5,j)= cun(4,j)+x(5,j)-he(5,j) ;z5= @sum(o(j): cun(5,j));@for(o(j):cun(6,j)= cun(5,j)+x(6,j)-he(6,j) ;z6= @sum(o(j): cun(6,j));食品加工一项食品加工业,对几种粗油精炼,然后加以混合成为成品食用油。

LINGO基本语法和编程

LINGO基本语法和编程

(5)目标与约束段:目标函数、约束条件等,没有段 的开始和结束标记,因此实际上就是除其它四个段(都有 明确的段标记)外的LINGO模型。这是Lingo程序最重要 的部分。
•!目标函数; min=@sum(links: cost*volume);
!需求约束; @for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));
Vendors Warehouse
wh1 wh2 V1 V2 V3 V4 V5 V6 V7 V8
wh3
wh4 wh5 wh6
6 4 5 7 2 5
2 9 2 6 3 5
6 5 1 7 9 2
7 3 9 3 5 2
4 8 7 9 7 8
2 5 4 2 2 1
9 8 3 7 6 4
5 2 3 1 5 3
(3)初始段(INIT):以“INIT: ”开始, “ENDINIT” 结束,对集合的属性(数组)定义初值(因为求解算法一般 是迭代算法,所以用户如果能给出一个比较好的迭代初 值,对提高算法的计算效果是有益的)。 如果有一个接近最优解的初值,对LINGO求解模型是 有帮助的。定义初值的格式为: “attribute(属性) = value_list(常数列表);” 这与数据段中的用法是类似的。 Init: x=1111111 1 1 1 1 1 1 1; Endinit
问:links表示什么? cost? Volume? •Links:表示一个下标集
Vendors Warehouse wh1 wh2 wh3 V1 Wh1, V1 Wh1, V2 Wh2, V3 V2 V3 V4 V5 V6 V7 V8
wh4
wh5 wh6 Wh6,v8

lingo语法

lingo语法

LINGO语法的规则包括:
目标函数的最大值或最小值分别用MAX=…或MIN=…表示。

语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行。

变量名称必须以字母(A~Z)开头,由字母、数字(0~9)和下划线组成,长度不超过32个字符,不区分大小写。

以“!”开头的是注释,注释也需要以“;”结尾。

可以给语句加标号,例如[OBJ] MAX=200X1+100X2;。

LINGO默认所有决策变量都为非负。

LINGO模型以“MODEL:”开始,以“END”结束。

对于简单模型,可以省略。

LINGO语法中包括基本运算符和逻辑运算符。

基本运算符主要针对数值进行操作,包括加、减、乘、除和乘方等。

逻辑运算符则主要用于集循环函数的条件表达式中,来控制在函数中哪些成员被包含,哪些被排斥。

LINGO语法可能会根据版本更新产生变化,具体语法规则建议参考LINGO软件的官方文档。

LINGO基本用法与运算函数

LINGO基本用法与运算函数
LINGO的基本用法和运算 函数
例如,目标函数中有求和表达式ΣCijXij(i从1 到10,j从1到20),若用直接输入的方式,将有 200个系数与200个变量相乘再相加,需要输入 长长一大串,既不便于输入,又不便于修改, 别人看不懂,可读性较差.
LINGO提供了建模语言,能够用较少语 句描述目标函数和约束条件,为建立大规 模数学规划模型提供了方便.我们以一个 运输规划模型为例说明其用法。
办法是用现成软件求解.LINGO是专门
用来求解各种规划问题的软件包,其功
能十分强大,是解决最优化问题的最佳
选择。
LINGO的基本用法和运算 函数
§1.1 LINGO 入门
LINGO的基本用法和运算 函数
一、概况
LINGO 是 美 国 LINDO 系 统 公 司 ( Lindo SystemInc)开发的求解数学规划系列软件中的一 个(其它软件为LINDO,GINO,What’s Best等 等),的主要功能是求解大型线性、非线性和整数 规 划 , 目 前 的 版 本 是 11.0 . 可 以 从 Internet 网 址 http://下载该软件的安装文件lingo11.exe,执行该 文件即可在计算机内安装LINGO 软件系统,首次 运行该软件时,要求用户输入密码,如果输入了正 确的密码,则该软件就成了正式版,如果密码不对 或不输入密码,则该软件就成为演示版.
1.目标函数(求某个数学表达式的最大值或最 小值);
2. 决策变量,即目标函数值取决于哪些变量;
3. 约束条件,即对变量附加一些条件限制(等 式或不等式).
LINGO的基本用法和运算 函数
例1:某工厂有两条生产线,分别用来生产 M和P两种型号的产品,利润分别为200元/个 和300元/个,生产线的最大生产能力分别为 每日100和120,生产线每生产一个M产品需 要1个劳动日进行调试、检测等工作,而每个 P产品需要2个劳动日,该厂每天只有160个 劳动日可用,假如原材料等其它条件不受限 制,问应如何安排生产计划,使获得的利润 最大?

lingo基本语言

lingo基本语言

lingo基本语言今天咱们来聊一聊一种很有趣的东西,叫做Lingo基本语言。

你们知道吗?就好像我们在玩游戏的时候,有游戏规则一样,Lingo也有它自己的规则。

比如说,我们要告诉电脑我们想做什么,就得按照Lingo的规则来表达。

我给你们讲个小故事吧。

有个小朋友叫小明,他特别喜欢画画。

有一天,他发现可以用电脑画画,而且还能让画动起来呢。

但是他不知道怎么告诉电脑他想要画的东西的形状、颜色还有怎么动。

这时候呀,要是他懂Lingo基本语言就好了。

那Lingo基本语言怎么用呢?就像我们说话一样,不过是一种电脑能懂的话。

比如说,我们想画一个红色的圆。

在Lingo里,我们就得用特定的“话”来告诉电脑。

我们可能会说类似“画个圆,颜色是红的”这样的话,当然在Lingo里是有它自己的表达形式的。

再比如说,我们在玩一个小动画制作的游戏。

里面有个小方块,我们想让小方块从左边移到右边。

我们就得用Lingo来告诉电脑这个小方块要怎么移动。

就好像是给小方块下达命令一样。

我们可以想象成我们是小方块的指挥官,Lingo就是我们的指挥语言。

有一次,我在电脑上做一个小项目,就像做一个自己的小世界。

我想在这个小世界里有好多好多的小花。

我就用Lingo基本语言来告诉电脑,我想要小花的样子,它们的颜色,还有它们长在哪里。

我就说“我要好多小花,花瓣是彩色的,长在绿色的草地上”,当然是用Lingo的方式说啦。

然后电脑就按照我说的,在我的小世界里做出了好多漂亮的小花。

Lingo基本语言还能让我们做很多好玩的东西。

我们可以做自己的小动画,让小动物们在里面跑来跑去。

我们可以让太阳早上慢慢升起来,晚上慢慢落下去。

就像我们是这个小动画世界的创造者一样。

不过呢,学Lingo基本语言也有点像我们学习骑自行车。

刚开始的时候可能会有点难,可能会摔倒。

但是只要我们不断尝试,不断练习,我们就会越来越熟练。

就像我们学会了骑自行车之后,就可以骑得又快又稳,去很多我们想去的地方。

第1讲Lingo软件基础学习(2014)

第1讲Lingo软件基础学习(2014)

第1讲Lingo软件入门司守奎烟台市,海军航空工程学院数学教研室Email:sishoukui@1 Lingo软件的基本语法1.1 集合集合部分的语法为sets:集合名称1/成员列表1/:属性1_1,属性1_2,…,属性1_n1;集合名称2/成员列表2/:属性2_1,属性2_2,…,属性2_n2;派生集合名称(集合名称1,集合名称2):属性3_1,…,属性3_n3;endsets例26sets:product/A B/;machine/M N/;week/1..2/;allowed(product,machine,week):x;endsets1.2 数据数据部分的语法为data:属性1=数据列表;属性2=数据列表;enddata1.3 计算计算段部分不能含有变量,必须是已知数据的运算。

calc:b=0;a=a+1;endcalc1.4 模型的目标函数和约束条件这里就不具体给出了,下面通过具体例子给出。

1.5 子模型在LINGO 9.0 及更早的版本中,在每个LINGO 模型窗口中只允许有一个优化模型,可以称为主模型(MAIN MODEL)。

在LINGO 10.0 中,每个LINGO 模型窗口中除了主模型外,用户还可以定义子模型(SUBMODEL)。

子模型可以在主模型的计算段中被调用,这就进一步增强了LINGO 的编程能力。

子模型必须包含在主模型之内,即必须位于以“MODEL:”开头、以“END”结束的模块内。

同一个主模型中,允许定义多个子模型,所以每个子模型本身必须命名,其基本语法是:SUBMODEL mymodel:可执行语句(约束+目标函数);ENDSUBMODEL其中mymodel 是该子模型的名字,可执行语句一般是一些约束语句,也可能包含目标函数,但不可以有自身单独的集合段、数据段、初始段和计算段。

也就是说,同一个主模型内的变量都是全局变量,这些变量对主模型和所有子模型同样有效。

如果已经定义了子模型mymodel,则在计算段中可以用语句“@SOLVE( mymodel);”求解这个子模型。

LINGO基本用法

LINGO基本用法

LINGO基本用法1、概况 (1)2、LINGO的基本用法 (1)3、用LINGO编程语言建立模型 (2)4、建立LINGO/LINDO优化模型需要注意的几个基本问题 (3)5、对求解结果的分析 (3)LINGO基本用法LINGO是专门用来求解各种规划问题的软件包,其功能十分强大,是求解优化模型的最佳选择。

1、概况LINGO是美国LINDO系统公司开发的求解数学规划系列软件中的一个,它的主要功能是求解大型线性、非线性和整数规划问题,LINGO分为Demo、Solve Suite、Super、Hyper、Industrial、Extended等六种不同版本。

只有Demo版是免费的。

LINGO的不同版本对模型的变量总数,非线性变量的数目,整形变量数目和约束条件的数量作出了不同的限制。

LINGO的主要功能:(1) 既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2) 输入模型简练直观(3) 运行速度快,计算能力强(4) 内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型(5) 将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型(6) 能方便地与Excel,数据库等其他软件交换数据2、LINGO的基本用法通常一个优化模型由下列三部分所组成:(1) 目标函数:一般表示成求某个数学表达式的最大值或最小值。

(2) 决策变量:目标函数值取决于哪些变量(3) 约束条件:对变量附加一些条件限制(通常用等式或不等式表示)注:LINGO默认所有决策变量都非负,因而变量非负条件可以不必输入。

LINGO的语法规定:(1) 求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2) 每个语句必须以分号";"结束,每行可以有多个语句,语句可以跨行;(3) 变量名称必须以字母(A~Z)开头,由字母,数字(0~9)和下划线所组成,长度不超过32个字符,不区分大小写;(4) 可以给语句加上标号,例如[OBJ] MAX= 20*X1+300*X2;(5) 以!开头,以;号结束的语句是注释语句;(6) 如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7) LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两个语句可以省略。

lindo常用的基本语法

lindo常用的基本语法

2、 min Z x1 3 x2 x1 2 x2 6 s.t. 3 x1 x2 15 x , x 0 1 2
2、lingo的优点 (1)可以用于求线性规划及非线性规划问 题,包括非线性整数规划问题。
(2)lingo包含内置的建模语言(常称矩阵 生成器),允许以简练、直观的方式描述 较大规模的优化模型(成千万个约束条件 和变量), 模型中所需的数据可以用一定格 式保存在独立的文件中,需要时再读取数据。
在Lingo中,所有的系统函数都必须是以“@”开头。
2、集合循环函数
集合循环函数是指对集合中的所有元素(下标) 进行循环操作的函数,如@sum,@for等。
具体的使用格式:
@循环函数名(循环变量所在的集 (循环变量)│ 过滤条件:循环表达式) 其中,如果在操作过程中没有过滤条件,可 以省略过滤条件;如果表达式是对集合的所有循 环变量进行操作,循环变量也可以省略。
LINGO软件的使用规则(3)
(6) 约束条件中的符号“≥”用 “> = ”或“>”表示, “≤”用“<=”或 “<”表示。
(7) 计算机把输入程序中的第一行默认为目标函数, 其它各约束条件可以用[_1],[_2]标明它的行号。 (8) 虽然决策变量可以放在约束条件的右端,但为 了提高Lingo的求解效率,应尽可能采用线性表达 式定义目标函数和约束条件。 (9) 在lingo中以感叹号“!”开始的是说明语句, 并且说明语句也需要以分号“;”结束,并且除 了“!”和“;”之外,说明语句中的其它字符 可以是任何字符。
3、 lingo中的灵敏度分析
在lindo中的目标函数最优值、最优解与灵敏度 而在lingo中,最优解、最 分析是一起显示出来, 优值与灵敏度分析是分别用不同的命令显示出来。 lingo中的灵敏度分析的数据输出结果与lindo 中的灵敏性分析中输出结果是相同的。 因为lingo的求解结果中是没有灵敏度分析的, 所以如果需要灵敏度分析的数据,可以通过修改 选项来实现。

lingo基本用法(精华版)20分钟学会

lingo基本用法(精华版)20分钟学会

lingo基本⽤法(精华版)20分钟学会Lingo基本⽤法总结(除集函数部分)LINGO是⽤来求解线性和⾮线性优化问题的简易⼯具。

Lingo免费版可以⽀持30个未知数,lingo破解版可以⽀持⼏万个未知数、⼏万个约束条件。

当你在windows下开始运⾏LINGO系统时,会得到类似下⾯的⼀个窗⼝:外层是主框架窗⼝,包含了所有菜单命令和⼯具条,其它所有的窗⼝将被包含在主窗⼝之下。

在主窗⼝内的标题为LINGO Model – LINGO1的窗⼝是LINGO的默认模型窗⼝,建⽴的模型都都要在该窗⼝内编码实现。

下⾯举两个例⼦。

例1.1 如何在LINGO中求解如下的LP问题:在模型窗⼝中输⼊如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击⼯具条上的按钮即可。

得到如下结果:所以当x1为250,x2为100时⽬标函数得到最⼤值。

算术运算符Lingo 中变量不区分⼤⼩写,以字母开头不超过32个字符算术运算符是针对数值进⾏操作的。

LINGO 提供了5种⼆元运算符:^乘⽅﹡乘/除﹢加﹣减LINGO 唯⼀的⼀元算术运算符是取反函数“﹣”。

这些运算符的优先级由⾼到底为:⾼﹣(取反)^﹡/低﹢﹣运算符的运算次序为从左到右按优先级⾼低来执⾏。

运算的次序可以⽤圆括号“()”来改变。

例:在x1+x2>=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最⼩值在代码窗⼝中编写min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后单击上⾯菜单lingo菜单下solve键即可。

数学函数标准数学函数:@abs(x) 返回x的绝对值@sin(x) 返回x的正弦值,x采⽤弧度制@cos(x) 返回x的余弦值@tan(x) 返回x的正切值@exp(x) 返回常数e的x次⽅@log(x) 返回x的⾃然对数@lgm(x) 返回x的gamma函数的⾃然对数@sign(x) 如果x<0返回-1;否则,返回1@floor(x) 返回x的整数部分。

LINGO基本教程(完整版)pdf

LINGO基本教程(完整版)pdf

LINGO基本教程(完整版)pdf一、教学内容本节课我们使用的教材是《LINGO基本教程》,我们将学习第14章的内容。

第1章介绍LINGO软件的基本操作,包括界面的熟悉、模型的建立等;第2章学习线性规划模型的建立与求解;第3章讲解非线性规划模型的建立与求解;第4章介绍整数规划模型的建立与求解。

二、教学目标1. 学生能够熟练操作LINGO软件,建立和求解线性、非线性以及整数规划模型。

2. 学生能够理解线性、非线性以及整数规划的基本概念,并能够运用到实际问题中。

3. 学生通过学习LINGO基本教程,提高自己的逻辑思维能力和解决实际问题的能力。

三、教学难点与重点重点:熟练操作LINGO软件,建立和求解线性、非线性以及整数规划模型。

难点:理解线性、非线性以及整数规划的基本概念,以及如何将这些概念运用到实际问题中。

四、教具与学具准备教具:多媒体教学设备、投影仪、计算机。

学具:学生计算机、LINGO软件、教材《LINGO基本教程》。

五、教学过程1. 实践情景引入:以一个简单的线性规划问题为切入点,引导学生思考如何利用LINGO软件求解。

2. 讲解教材内容:分别讲解第14章的内容,包括LINGO软件的基本操作、线性规划模型的建立与求解、非线性规划模型的建立与求解以及整数规划模型的建立与求解。

3. 例题讲解:针对每个章节的内容,选择合适的例题进行讲解,让学生通过例题理解并掌握相关知识点。

4. 随堂练习:在每个章节讲解结束后,安排随堂练习,让学生通过练习巩固所学知识。

5. 课堂互动:鼓励学生提问,解答学生在学习过程中遇到的问题。

6. 板书设计:每个章节的重要知识点和操作步骤进行板书设计,方便学生复习。

7. 作业布置:布置与本节课内容相关的作业,巩固所学知识。

六、作业设计1. 作业题目:最大化问题:目标函数:Z = 2x1 + 3x2约束条件:x1 + x2 ≤ 62x1 + x2 ≤ 8x1, x2 ≥ 0最大化问题:目标函数:Z = x1^2 + x2^2约束条件:x1 + x2 ≤ 5x1^2 + x2^2 ≤ 10x1, x2 ≥ 0最大化问题:目标函数:Z = 3x1 + 2x2约束条件:x1 + x2 ≤ 42x1 + x2 ≤ 6x1, x2 均为整数2. 答案:(1)线性规划问题的解为:x1 = 2, x2 = 4(2)非线性规划问题的解为:x1 = 3, x2 = 2(3)整数规划问题的解为:x1 = 2, x2 = 2七、板书设计1. 第1章:LINGO软件的基本操作(1)界面的熟悉(2)模型的建立2. 第2章:线性规划模型的建立与求解(1)目标函数的定义(2)约束条件的设置(3)求解线性规划问题3. 第3章:非线性规划模型的建立与求解(1)目标函数的定义(2)约束条件的设置(3)求解非线性规划问题4. 第4章:整数规划模型的建立与求解(1)目标函数的定义(2)约束条件的设置(3)求解整数规划问题八、课后反思及拓展延伸本节课通过实践情景引入,使学生能够快速融入学习状态。

lingo 语言基础

lingo 语言基础

lingo 语言基础一、事件与命令事件在上次的教程中,我们已经初步试验了lingo的编写和运行.这次我们要对于lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。

还记得上次我们让电影停在某帧时候的脚本是如何的么?on exitframego the frameend这里面就包含了一个lingo的最基本的一点。

lingo是基于事件(event)的。

当某个事件发生的时候,才会执行下面的动作。

在上面这个脚本中go the frame这句话是在on exitframe(退出改帧)的时候执行的on exitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到end为止。

同样,下面的一些都是lingo的也就是事件。

lingo魔法书--变量,字符串和文本域日期:2006年6月1日录入:92study 人气:查看:[大字体中字体小字体] 双击自动滚屏lingo魔法书--变量,字符串和文本域变量学过编程的同志都知道所有编程语言上来都先说变量.但是为了照顾大家的情绪,避免把这个教程显得太乏味.我们现在才来讨论变量. 什么是变量?变量好比一个房间,堆放你需要储存的东西.在实际编程中变量有着很重要的作用.同样我们也经常用变量来储存一些比较复杂的表达式.这样可以简化我们程序的编写.变量之所以叫做变量是因为它的值是可以变化的.下面我们先来看看变量的一些操作.赋值,就是给变量以内容.可以这样写.变量名=变量值或者表达式例如: a=1 a=3*5变量的类型:在lingo语言中不同于其他的一些高级语言,要声明变量的类型.lingo的变量类型是由赋予的内容决定的.我们最常用的是字符和数字两种值.比如:a=1 变量a的类型是数值型. a="1" 变量a的类型是字符型.注意这里虽然都是1.但是带上""的就是字符串.不带的就是数值.首先我们看些字符串的操作& 表示字符串连接.执行put "ab"&"cd"得到的结果是"abcd"&& 表示字符串连接当中加上一个空格.执行put "ab"&&"cd"得到的结果是"ab cd"string(表达式)将数值转换成为字符串例如put string(3*5) 结果为"15"put string(5)结果为"5"numtochar(整数表达式)将数值转换为字符串,这个数值为字符串的ascii值.put numtochar(65)的结果是大写的"a".相反的chartonum(字符串)就是把字符转换成为asc码选取字符串的长度length(字符串) .例如put length("abcd")结果为4.删除字符串中的字符取子字符串chars(字符串表达式,第一个字符串,最后一个字符串)比如put chars("macintosh",2,4)-- 结果为"aci"从第2个取到第4个.这是一个假冒伪劣的计算器.因为他更本不能计算.只能显示数字和擦除数字.在这里要给大家展示的是文本域的操作lingo.为了使得问题尽量的简单.我们来看一个按钮显示文本是如何做的.首先在舞台上用工具栏上的field按钮在舞台上制作一个文本域.然后在属性面板里面填写上文本域的名字.我们这里取名"result".然后在舞台上画一个按钮.标题为1.整个时间轴这样安排.当然我们不能忘记适用帧脚本停住画面.sprite 1是文本域sprite 2是按钮.ok我们的基本动作好了.下面我们要安按钮给文本域写数字.lingo语言是如何的呢?文本域中的值可以这样来给定.put 变量或者表达式into field "文本域名"文本域名我们在例子中是"result".对于1 这个按钮可以这样编写程序on mouseupput "1" into field "result"end如果大家想一个个给按钮写put "x" into field "result"的话那么我的教程是失败的.如果我有100个按钮的话一个个写过来不要写死?我们要用上次说的behavior行为的概念.按钮全部放到流程线上以后我们可以发现.如果我们仔细观察的话我们可以发现这样一个规律.那就是按钮数和sprite数正好相差1."1"按钮是sprite 2."2"按钮是sprite 3.我们是否可以用这个特点做文章呢?on mouseup mebuttonvalue=string(the currentspritenum-1)put buttonvalue into field "result"end下面就是我写的一个behavior,核心思想是取得当前sprite的编号,然后-1作为field的内容,关键的语句是the currentspritenum这个系统变量可以取得当前正在操作的sprite的号码,然后减1,再用string函数变换成为字符串赋值给buttonvalue变量.这样的话就可以实现按钮和值的统一.这里我们使用变量是为了让语句看起来更间洁不然我们写put string(the currentspritenum-1) into field "result"也可以,但是太长了可读性就差了.接下来我们又发现一个问题,那就是我们新按按钮之后原先的值就消失了.正常的计算器显然不是这样的.如何办呢?on mouseup mecontent=the text of member "result"--取得当前文本域的值使用系统变量the text of memberbuttonvalue=string(the currentspritenum-1)put content&buttonvalue into field "result" --让当前文本域的值加上当前相加的值endok我们的behavior写好了.然后一个个赋给所有的按钮.我们还剩下最后一个back按钮没有制作.on mouseup mecontent=the text of field "result"stringlength=length(content)-1nowcontent=chars(content,1,stringlength)--这里我们取子串删除.取得除了最后一个字符以外的所有字符也就是删除最后一个字符.put nowcontent into field "result" --然后重新赋值给文本域.endok劣质计算器就做好了.如果你想要在运行状态下在文本域中输入文字.可以使用sprite(编号).editable =true来设定.当然首先要将该sprite 木偶化.on beginsprite mepuppetsprite 1, true --将sprite木偶化sprite(1).editable = true --将sprite可编辑.endok我们到这里基本上到了入门教程的尾声,这里我们最后给大家一个技巧就是使用注释语句.很多时候我们在编写lingo语言的时候,需要对一些语句进行注释.这样的好处是以便于以后自己看一下编程序的思路.不至于若干天之后自己也看不懂.注释在lingo中是不会被执行的.它的开头用"--"表示.在director中用红色表示.大家可以发现我在整个教程中已经反复用到了注释语句.同样.注释语句的还有一个好处就是调试程序的时候方便.有些语句我们暂时想禁止他看看会有什么效果.我们只要在前面加上"--"就可以让他暂时变成注释不起作用.下次需要的时候只要把"--"删除就可以了.在此要感谢arky给我做了精彩的演示,让我体会了它的强大.最后想告诉大家的是,与其多看理论不如动手实践.自己做和看别人做是完全不一样的.会有很多意想不到的事情发生.这些将是你宝贵的经验.作者后记:写到这里,我们的lingo语言基础教程暂时告一个段落了.在编写的过程中,读者热情的催促是我完成它的动力.本来写这个教程的初衷是因为看到了国外的一片lingo语言教程.觉得是我见过的少数lingo语言教程之一.当时想把他翻译过来给大家欣赏.但是在照搬改组了前2篇之后登时发现教程的内容偏少.于是在左思右想之后决定重新编写.于是把老外的教程压缩进入第2篇,从第3篇开始全部重写.搬出了4本lingo语言的书进行参照.由于工作繁忙加上要重起炉灶,所以教程进行特别缓慢.恳请大家谅解.上面的11篇还只是lingo魔法书的第一页.我们将在以后的日子继续见面的lingo魔法书--光标和行为日期:2006年6月1日录入:92study 人气:查看:[大字体中字体小字体] 双击自动滚屏lingo魔法书--光标和行为director中光标也可以自己定义和制作.我们看看下面的一个例子:光标单击每个人脸就变成了一个动态的光标.移出按钮图片,光标就还原了.这样的效果如何做呢?首先我们看一下光标控制语句.cursor (角色名,遮罩名) --指定某个角色作为光标.角色必须是双色位图大小16x16。

lingo基础用法

lingo基础用法

lingo基础用法Lingo是一种计算机编程语言,它的基础用法包括以下几个方面:1. 变量声明和赋值:可以使用Lingo语言声明变量,并给变量赋值。

例如:```global myVariable -- 声明一个全局变量put 5 into myVariable -- 将值5赋给变量myVariable```2. 条件语句:可以使用条件语句来根据条件执行不同的代码块。

例如:```if myVariable = 5 thenput "It's five!" into messageanswer messageend if```3. 循环语句:可以使用循环语句来反复执行特定的代码块。

例如:```repeat with i = 1 to 10put i into messageanswer messageend repeat```4. 函数和命令:Lingo提供了许多内置的函数和命令,可以执行特定的操作。

例如:```put the date into currentDate -- 获取当前日期get the long name of sprite 1 -- 获取精灵1的长名称```5. 脚本和行为:可以使用Lingo编写脚本和行为,控制多媒体项目的行为。

例如:```on mouseUpgo to the next frameend```上述是Lingo语言的基础用法,只是其中的一小部分。

Lingo 还提供了丰富的功能和特性,包括面向对象编程、多媒体处理等。

要更深入地学习和使用Lingo,建议参考Lingo的官方文档或相关教程。

LINGO教程(基本语法)

LINGO教程(基本语法)

在LINGO中使用LINDO模型

打开“EXAM0201.LTX”文件 (如下图)
选择“LINGO|Solve (Ctrl+S)”来运行这 个程序(运行状态窗口 如右图)

7
LINGO 教 程
在LINGO中使用LINDO模型

运行程序的LINGO报告窗口(如下图)
8
注:LINGO不询问是否进行敏感性分析,敏感性分析 需要将来通过修改系统选项启动敏感性分析后,再调 用“REPORT|RANGE”菜单命令来实现。现在同样可 以把模型和结果报告保存在文件中。
LINGO 教 程
• 运行状态窗口
Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。 Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。 Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。 Generator Memory Used (K) (内存使用 量)
18
LINGO 教 程
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 •用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@sub或@slb另行说明)。 •变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 •语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 •以感叹号开始的是说明语句(说明语句也需要以分号结束))。

LINGO编程

LINGO编程

区 基 础 部
x1, x2 0 再用LINGO处理……

输入LINGO如下:



LINGO处理结果:
西 南 大 学 荣 昌 校 区 基 础 部
数 LINGO的语法规定:
学 (1) 求目标函数的最大值和最小值分别用MAX= …或MIN= … 建 来表示;

(2) 每个语句必须以分号“;”结束,每行可以有多个语句,语
西
南 大
注: 灵敏性分析耗费相当多的求解时间,因此当速度很关键
学 荣
时,就没有必要激活它







◆生成模型的展开形式

为当前模型生成一个用代数表达式
建 模
表示的完整形式,即LINGO将所
有基于集合的表达式(目标函数和
约束条件)扩展成为等价的完全展
开的普通数学表达式模型.
◆生成图形
由模型生成图形,以矩阵形式显示 模型的系数.
2, 3, 9, 5, 7, 2, 6, 5
西 南
5, 5, 2, 2, 8, 1, 4, 3;
大 学
ENDDATA
荣 昌
注:
①数据初始化部分以“DATA:” 开始, 以ENDDATA结束,
校 区
这两个语句必须单独成一行;
基 础
②数据之间的逗号和空格可以替换

数 3. 目标函数和约束条件.

68
建 例3的目标函数:min z
句可以跨行;
(3) 变量名称必须以字母(A-Z)开头,由字母、数字(0-9)和 下划线“_”组成,长度不超过32个字符,不区分大小写;
(4) 可以给语句加上标号,例如[OBJ] MAX= … ;

LINGO使用教程(一)

LINGO使用教程(一)

LINGO使⽤教程(⼀)LINGO是⽤来求解线性和⾮线性优化问题的简易⼯具。

LINGO内置了⼀种建⽴最优化模型的语⾔,可以简便地表达⼤规模问题,利⽤LINGO ⾼效的求解器可快速求解并分析结果。

1.LINGO快速⼊门当你在windows下开始运⾏LINGO系统时,会得到类似下⾯的⼀个窗⼝:外层是主框架窗⼝,包含了所有菜单命令和⼯具条,其它所有的窗⼝将被包含在主窗⼝之下。

在主窗⼝内的标题为LINGO Model – LINGO1的窗⼝是LINGO的默认模型窗⼝,建⽴的模型都都要在该窗⼝内编码实现。

下⾯举两个例⼦。

例1.1 如何在LINGO中求解如下的LP问题:在模型窗⼝中输⼊如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击⼯具条上的按钮即可。

例1.2 使⽤LINGO软件计算6个发点8个收点的最⼩费⽤运输问题。

产销单位运价如下表。

使⽤LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!⽬标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这⾥是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击⼯具条上的按钮即可。

Lingo基本用法总结

Lingo基本用法总结

Lingo基本用法总结(除集函数部分)LINGO是用来求解线性和非线性优化问题的简易工具。

Lingo免费版可以支持30个未知数,lingo破解版可以支持几万个未知数、几万个约束条件。

当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例1.1 如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。

得到如下结果:所以当x1为250,x2为100时目标函数得到最大值。

算术运算符Lingo 中变量不区分大小写,以字母开头不超过32个字符算术运算符是针对数值进行操作的。

LINGO 提供了5种二元运算符: ^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减 LINGO 唯一的一元算术运算符是取反函数“﹣”。

这些运算符的优先级由高到底为:高 ﹣(取反) ^ ﹡/ 低 ﹢﹣运算符的运算次序为从左到右按优先级高低来执行。

运算的次序可以用圆括号“()”来改变。

例:在x1+x2>=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最小值 在代码窗口中编写 min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后单击上面菜单lingo 菜单下solve 键即可。

数学函数标准数学函数:@abs(x) 返回x 的绝对值@sin(x) 返回x 的正弦值,x 采用弧度制 @cos(x) 返回x 的余弦值 @tan(x) 返回x 的正切值 @exp(x) 返回常数e 的x 次方 @log(x) 返回x 的自然对数@lgm(x) 返回x 的gamma 函数的自然对数 @sign(x) 如果x<0返回-1;否则,返回1@floor(x) 返回x 的整数部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•.LNG:文本格式的模型文件,不保存模型中的格式信 息(如字体、颜色、嵌入对象等); •.LDT:LINGO数据文件;
•.LTF:LINGO命令脚本文件; •.LGR:LINGO报告文件; •.LTX: LINDO格式的模型文件;
9
除“LG4”文件外, 另外几种格式的文件 都是普通的文本文件, 可以用任何文本编辑 器打开和编辑。
15
目标函数值的界 特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
有效步数
LINGO 教 程
• 运行状态窗口 注:凡是可以从一个约束直接解出变量取值时,这个 变量就不认为是决策变量而是固定变量,不列入统计 中;只含有固定变量的约束也不列入约束统计中。
•LINGO中函数一律需要以“@”开头,其中整型变量 函数(@BIN、@GIN)和上下界限定函数(@FREE、 @SUB、@SLB)与LINDO中的命令类似。而且0/1变 量函数是@BIN函数。
20
LINGO 教 程
输出结果: 运行菜单命令“LINGO|Solve”
最大利润=11077.5
最优整数解 X=(35,65)
16
LINGO 教 程
LINGO早期版本对LINDO的兼容问题
在LINGO 9.0以前的版本中不能直接用File|Open命令打开LINDO 模型,但由FILE | IMPORT LINDO FILE (F12)命令可以直接把 LINDO的模型文件转化成LINGO模型。运行后屏幕上会显示一 个标准的“打开文件”的对话框,打开EXAM0201.LTX,在 LINGO主窗口中又打开了命令窗口(Command Window)显示原始 文件,名为“exam0201”的模型窗口显示的是等价的LINGO模 型。当前光标位于命令窗口。
23
LINGO 教 程
1. LINGO入门 2.在LINGO中使用集合
3. 运算符和函数
2.在LINGO中使用集合 4. LINGO的主要菜单命令 5. LINGO命令窗口 6.习题
24
LINGO 教 程
集合的基本用法和LINGO模型的基本要素
例 SAILCO公司需要决定下四个季度的帆船生产量。下 理解LINGO建模语言最重要的是理解集合(Set)及其 四个季度的帆船需求量分别是40条,60条,75条,25条, 属性(Attribute)的概念。 这些需求必须按时满足。每个季度正常的生产能力是40 条帆船,每条船的生产费用为400美元。如果加班生产, 每条船的生产费用为450美元。每个季度末,每条船的 库存费用为20美元。假定生产提前期为0,初始库存为 10条船。如何安排生产可使总费用最小?
INV ( I ) INV ( I 1) RP( I ) OP( I ) DEM ( I ), I 1,2,3,4
INV (0) 10
MIN
I 1, 2,3, 4
{400RP(I ) 450OP(I ) 20INV (I )}
加上变量的非负约束
26
LINGO 教 程
LINGO 教 程
LINGO软件的基本使用方法
1
LINGO 教 程
内容提要
1. LINGO入门 2.在LINGO中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 5. LINGO命令窗口
2
LINGO 教 程
1. LINGO入门 2.在LINGO中使用集合 3. 运算符和函数 1. LINGO入门
4. LINGO的主要菜单命令
5. LINGO命令窗口
3
LINGO 教 程
LINGO软件的安装
安装过程: 与LINDO for Windows类似. 安装文件20M多一点,需要接受安装协议、选择安装 目录(缺省C:\LINGO9)。 安装完成前,在出现的对话框(如图)中选择缺省的建
模(即编程)语言,系统推荐的是采用LINGO。安装后
注:LINDO中没有数组,只能对每个季度分别定义变量, 如正常产量就要有RP1,RP2,RP3,RP4 4个变量等。 写起来就比较麻烦,尤其是更多(如1000个季度)的时候。 记四个季度组成的集合QUARTERS={1,2,3,4}, 它们就是上面数组的下标集合,而数组DEM,RP,OP, INV 对集合QUARTERS中的每个元素1,2,3,4分别对应于 一个值。LINGO正是充分利用了这种数组及其下标的关 系,引入了“集合”及其“属性”的概念,把 QUARTERS={1,2,3,4}称为集合,把DEM,RP,OP, INV称为该集合的属性(即定义在该集合上的属性)。
按钮),图形界面,使用方便;
(这里主要介绍这种模式)
命令行 模式:仅在命令窗口(Command Window)下操 作,通过输入行命令驱动LINGO运行 。
6
LINGO 教 程
从LINDO 到 LINGO LINGO 9.0功能增强,性能稳定,解答结果可靠。与
LINDO相比,LINGO 软件主要具有两大优点:
21
LINGO 教 程
输出结果备注: LINGO是将它作为PINLP(纯整数非线性规划)来求解, 因此找到的是局部最优解。
通过菜单 “WINDOW| Status Window”看到状态窗 口,可看到最佳目标值 “Best Obj”与问题的上界 “Obj Bound”已经是一样 的,当前解的最大利润与这 两个值非常接近,是计算误 差引起的。如果采用全局最 优求解程序(后面介绍),可 以验证它就是全局最优解。
• 当前光标 的位置 • 模型窗口(Model Window),用于输入 LINGO优化模型(即 LINGO程序)。
8
• 状态行(最左边显 示“Ready”,表 示 “准备就绪”)
• 当前时间
LINGO 教 程
LINGO的文件类型 •.LG4:LINGO格式的模型文件,保存了模型窗口中所 能够看到的所有文本和其他对象及其格式信息;
17
LINGO 教 程
LINGO早期版本对LINDO的兼容问题
从LINDO模型到LINGO模型的实质性转化工作主要在
于以下几个方面(这也是LINGO模型的最基本特征): •将目标函数的表示方式从“MAX”变成了“MAX=”; •“ST”(SubjectTo)在LINGO模型中不需要,被删除; •在系数与变量之间增加运算符“*”(即乘号不能省略); •每行(目标、约束和说明语句)后面增加一个分号“;”; •约束的名字被放到 “[ ]”中,不放在右半括号“)”前;
用DEM,RP,OP,INV分别表示需求量、正常生产的产量、 加班生产的产量、库存量,则DEM,RP,OP,INV对每个 季度都应该有一个对应的值,也就说他们都应该是一 个由4个元素组成的数组,其中DEM是已知的,而 25RP,OP,INV是未知数。
LINGO 教 程
问题的模型(可以看出是LP模型 ) 目标函数是所有费用的和 约束条件主要有两个: 1)能力限制: RP( I ) 40, I 1,2,3,4 2)产品数量的平衡方程:
1 2 3 4
输入窗口如下:
19
LINGO 教 程
程序语句输入的备注:
•LINGO总是根据“MAX=”或“MIN=”寻找目标函 数,而除注释语句和TITLE语句外的其他语句都是约 束条件,因此语句的顺序并不重要 。 •限定变量取整数值的语句为“@GIN(X1)”和 “@GIN(X2)”,不可以写成“@GIN(2)”,否则 LINGO将把这个模型看成没有整数变量。
求解 器(求 解程 序)状 态框
解的目标函数值
目前为止的 迭代次数
14
LINGO 教 程
• 运行状态窗口
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
目前为止找到的可行 解的最佳目标函数值 扩展 的求 解器 (求解 程序) 状态 框
选择菜单命令 “File|Open(F3)”, 可以看到 “打开文 件”对话框。 (如 图)

10
LINGO 教 程
在LINGO中使用LINDO模型

打开“EXAM0201.LTX”文件 (如下图)
选择“LINGO|Solve (Ctrl+S)”来运行这 个程序(运行状态窗口 如右图)

11
LINGO 教 程
Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。 Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。 Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。 Generator Memory Used (K) (内存使用 量)
可通过“LINGO|Options|File Format”命令修改缺
省的建模(即编程)语言。
4
LINGO 教 程
ቤተ መጻሕፍቲ ባይዱ
第一次运行时提示输入授权密码,如图:
5
LINGO 教 程
LINGO软件的主要特色
两种命令模式 Windows模式: 通过下拉式菜单命令驱动LINGO运
行(多数菜单命令有快捷键,常用的菜单命令有快捷
• 除具有LINDO的全部功能外,还可用于求解非线
性规划问题,包括非线性整数规划问题;
• 内置建模语言,允许以简练、直观的方式描述较 大规模的优化问题,所需的数据可以以一定格式 保存在独立的文件中。
7
LINGO 教 程
在LINGO中使用LINDO模型
LINGO的界面
• LINGO软件的主窗口(用 户界面),所有其他窗口 都在这个窗口之内。
相关文档
最新文档