LINGO软件的基本使用方法
- 格式:ppt
- 大小:1.73 MB
- 文档页数:152
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例 1.1 如何在LINGO 中求解如下的LP 问题:在模型窗口中输入如下代码:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x xmin=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。
例1.2使用LINGO软件计算6个发点8个收点的最小费用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然后点击工具条上的按钮即可。
lingo9.0使⽤教程LINGO 使⽤教程LINGO 是⽤来求解线性和⾮线性优化问题的简易⼯具。
LINGO 内置了⼀种建⽴最优化模型的语⾔,可以简便地表达⼤规模问题,利⽤LINGO ⾼效的求解器可快速求解并分析结果。
§1 LINGO 快速⼊门当你在windows 下开始运⾏LINGO 系统时,会得到类似下⾯的⼀个窗⼝:外层是主框架窗⼝,包含了所有菜单命令和⼯具条,其它所有的窗⼝将被包含在主窗⼝之下。
在主窗⼝内的标题为LINGO Model – LINGO1的窗⼝是LINGO 的默认模型窗⼝,建⽴的模型都都要在该窗⼝内编码实现。
下⾯举两个例⼦。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 2121121213£+33++x x x x x x x t s x x在模型窗⼝中输⼊如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击⼯具条上的按钮即可。
例1.2 使⽤LINGO 软件计算6个发点8个收点的最⼩费⽤运输问题。
产销单位运价如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 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end然后点击⼯具条上的按钮即可。
lingo教程Lingo是一个强大且易于学习的编程语言,用于Adobe Director,一个用于创建互动式多媒体应用程序的软件。
在这个Lingo教程中,我们将介绍一些基本的Lingo语法和使用方法。
首先,让我们从Lingo的变量和数据类型开始。
Lingo支持许多数据类型,包括数字,字符串,布尔值和列表。
要声明一个变量,可以使用“variableName = value”的语法。
例如,要声明一个名为“score”的变量,并将其设置为10,可以使用以下代码:```score = 10```要输出变量的值,可以使用“put”命令。
例如:```put score```这将在屏幕上显示变量的值。
Lingo还支持条件语句和循环。
条件语句用于根据条件执行不同的操作。
例如,以下代码将检查“score”变量的值,并根据其值执行不同的操作:if score > 10 thenput "High score!"elseput "Low score."end if```循环用于重复执行一组操作。
例如,以下代码将显示从1到10的所有数字:```repeat with i = 1 to 10put iend repeat```Lingo还支持函数和自定义命令。
函数用于执行特定的操作并返回一个值。
例如,以下代码定义了一个名为“addNumbers”的函数,它将两个数字相加并返回结果:```function addNumbers(num1, num2)return num1 + num2end addNumbers```要使用这个函数,可以使用以下代码:put addNumbers(5, 3)```这将输出结果为8。
自定义命令用于执行一系列的操作,但不返回任何值。
例如,以下代码定义了一个名为“showMessage”的自定义命令,它将显示一个消息框,并将输入的文本作为参数:```on showMessage(text)alert textend showMessage```要使用这个自定义命令,可以使用以下代码:```showMessage("Hello, world!")```这将显示一个消息框,其中包含文本“Hello, world!”。
LINGO 使用教程LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min212112121≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码:min =2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如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软件使⽤教程⼀般来说,⼀个优化模型将由以下三部分组成:1. ⽬标函数(Objective Function):要达到的⽬标。
2. 决策变量(Decision variables):每组决策变量的值代表⼀种⽅案。
在优化模型中需要确定决策变量的最优值,优化的⽬标就是找到决策变量的最优值使得⽬标函数取得最优。
3. 约束条件(Constraints):对于决策变量的⼀些约束,它限定决策变量可以取的值。
在写数学模型时,⼀般第⼀⾏是⽬标函数,接下来是约束条件,再接着是⼀些⾮负限制等。
在模型窗⼝输⼊如下代码:Max = 2*x1+3*x2;X1+2*x2<=8;4*x1<16;4*x2<12;注意:1.每⼀个lingo表达式最后要跟⼀个分号;2.多数电脑中没有符号,lingo中<=代替;为了⽅便可以⽤<代替⼩于等于,⽤>代替⼤于等于。
3.我们可以添加⼀些注释,增加程序的可读性。
注释以⼀个!(叹号必须在英⽂状态下输⼊,它会⾃动变为绿⾊)开始,以;(分号)结束。
4.Lingo中不区分变量名的⼤⼩写。
变量名必须以字母(A-Z)开头,后⾯的字符可以是字母、数字、下划线。
变量名不能超过32个字符。
Lingo程序的⼀些规则:1. 在Lingo中最开始都是“MAX=”或者“MIN=”开始表⽰求⽬标函数的最⼤或者最⼩值。
2. 变量和它前⾯的系数之间要⽤“*”连接,中间可以有空格。
3. 变量名不区分⼤⼩写,但必须以字母开始,不超过32个字符。
4. 数学表达式结束时要⽤分号“;”表⽰结束。
表达式可以写在多⾏上,但是表达式中间不能⽤分号。
5. 在电脑系统中⼀般没有“⼩于等于”符号,在Lingo采⽤“<=”来表⽰“⼩于等于”,⽤“>=”表⽰“⼤于等于”。
⼩于等于也可以⽤更简单的“<”表⽰,⼤于等于⽤“>”表⽰。
集合段:在我们已经得到的程序⾥有⼀些量没有定义,如WAREHOUSES( I),DEMAND( J), LINKS( I, J)。
第十八章LINGO软件的使用18.1 LINGO入门18.1.1 LINGO软件的安装过程点击LINGO9.0 for Windows安装文件,出现点击“Next”按钮,出现此时需要接受安装协议。
系统安装时默认的目录是C:\LINGO9。
安装完成前,会出现下图所示的对话框:这个对话框询问你希望采用的默认的建模(即编程)语言,系统推荐的是采用LINGO语法,也就是选项“LINGO(recommended)”;你也可以选择“LINDO”将LINDO语法作为默认的设置。
当然,安装后你也可以通过“LINGO|Options|File Format命令来修改默认的建模(即编程)语言。
在上图中按下“OK”按钮,系统就会完成LINGO的安装过程。
18.1.2 LINGO基础知识LINGO有两种命令格式:一种是常用的Windows模式,通过下拉式菜单命令驱动LINGO 运行,界面是图形式的,使用起来也比较方便;另一种是命令行(Command-Line)模式,仅在命令窗口(Command Window)下操作,通过输入行命令驱动LINGO运行。
由于其使用字符方式输入,初学者往往不太容易掌握。
在这里,我们主要介绍在菜单驱动模式下LINGO的使用方法。
LINGO 9.0软件比以前的版本有了很大的改进,功能大大增强,性能更加稳定,计算的结果更加可靠。
LINGO软件不仅可用于求解非线性规划问题,还可以用以求解非线性整数规划问题;LINGO包含了内置的建模语言,模型中所需的数据可以以一定格式保存在独立的文件中;LINGO允许以简练、直观的方式描述较大规模的优化问题。
注:LIGDO公司目前已将LINDO软件从其产品中删除了。
事实上,LINDO软件的所有功能(包括LINDO语法格式)都在LINGO中得到了支持。
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销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 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end然后点击工具条上的按钮 即可。
第1讲 LINGO 软件入门司守奎烟台市,海军航空大学 Email :sishoukui@1.1 初识LINGO 程序LINGO 程序书写实际上特别简捷,数学模型怎样描述,LINGO 语言就对应地怎样表达。
首先介绍两个简单的LINGO 程序。
例1.1 求解如下的线性规划问题:121212112max726450,128480,s.t.3100,,0z x x x x x x x x x =++≤⎧⎪+≤⎪⎨≤⎪⎪≥⎩ LINGO 求解程序如下max =72*x1+64*x2; x1+x2<=50;12*x1+8*x2<=480; 3*x1<=100;说明:LINGO 中默认所有的变量都是非负的,在LINGO 中就不需写出对应的约束。
例 1.2 抛物面22y x z+=被平面1=++z y x 截成一椭圆,求原点到这椭圆的最短距离。
该问题可以用拉格朗日乘子法求解。
下面我们把问题归结为数学规划模型,用LINGO 软件求解。
设原点到椭圆上点),,(z y x 的距离最短,建立如下的数学规划模型:⎩⎨⎧+==++++.,1s.t.min22222y x z z y x z y xLINGO 求解程序如下:min =(x^2+y^2+z^2)^(1/2); x+y+z=1; z=x^2+y^2;@free (x); @free (y);说明:LINGO 中默认所有变量都是非负的,这里y x ,的取值是可正可负的,所以使用LINGO 函数free 。
例1.3 求解如下的数学规划模型:⎪⎪⎩⎪⎪⎨⎧==∑∑∑===.,1s.t.min9912100100110012i ii i i ix x x x用LINGO 求解上述数学规划问题,使用集合和函数比较方便,使用集合的目的是为了定义向量,集合使用前,必须先定义;LINGO 程序中的标量不需要定义,直接使用即可。
sets :var/1..100/:x; endsetsmin =@sqrt (@sum (var(i):x(i)^2)); @sum (var(i):x(i))=1;x(100)=@sum (var(i)|i#le#99:x(i)^2); @for (var(i)|i#le#99:@free (x(i)));说明:如果不使用集合和函数,全部使用标量x1,x2,…,x100,最后一个约束就要写99遍,@free(x1); …; @free (x99)。
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如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然后点击工具条上的按钮即可。