LINGO软件学习入门

合集下载

第三章LINGO软件的基本使用方法

第三章LINGO软件的基本使用方法
LINGO 9.0 软件比以前的版本有了很大的改进,功能大大增强,性能更加稳定,解答结果更 加可靠。我们前面说过,从基本功能上看,与 LINDO 相比,LINGO 软件主要具有两大优点:
1、 除具有 LINDO 的全部功能外,还可用于求解非线性规划问题,包括非线性整数规划问题。 2、 LINGO 包含了内置的建模语言,允许以简练、直观的方式描述较大规模的优化问题,模型
Objective Infeasibility
当前解的目标函数值
实数
当前约束不满足的总量(不是 实数(即使该值=0,当前解也可能不可行,因为这
不满足的约束的个数)
个量中没有考虑用上下界命令形式给出的约束)
Iterations
目前为止的迭代次数
非负整数
表 3-2 LINGO 状态窗口中关于扩展的求解器各项的含义
§3.1.2 在 LINGO 中使用 LINDO 模型
在 Windows 操作系统下双击 LINGO 图标或从 Windows 操作系统下选择 LINGO 软件运行,启 动 LINGO 软件,屏幕上首先显示如图 3-3 所示的窗口。
图 3-3 LINGO 初始界面
图 3-3 中最外层的窗口是 LINGO 软件的主窗口(LINGO 软件的用户界面),所有其他窗口都 在这个窗口之内。当前光标所在的窗口上标有“LINGO MODEL – LING01”,这就是模型窗口(Model Window),也就是用于输入 LINGO 优化模型(即 LINGO 程序)的窗口。初步观察可以看到,图 3-3 这个界面与 LINDO 软件的界面非常类似,只是在 LINGO 软件的主窗口中,最下面增加了一个 状态行(仔细观察,可以发现菜单和工具栏也略有区别)。目前,状态行最左边显示的是“Ready”, 表示 “准备就绪”;右下角现实的是当前时间,时间前面是当前光标的位置“Ln 1,Col 1”(即

第九章 Lingo软件快速入门

第九章 Lingo软件快速入门

233第九章 Lingo软件快速入门9.1 Lingo概述LINDO和LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件包。

LINGO用于求解线性规划和二次规划问题,LINGO除了具有LINDO的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。

LINDO 和LINGO软件的最大特色在于可以允许优化模型中的决策变量是整数(即整数规划),而且执行速度很快。

LINGO实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其他数据文件(如文本文件、Excel电子表格文件、数据库文件等)的接口,易于方便地输入、求解和分析大规模最优化问题.由于这些特点,LINDO和LINGO软件在教学、科研和工业、商业、服务等领域得到了广泛应用。

当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:9.2 LINGO 菜单说明9.2.1 文件菜单(File Menu)新建(New)从文件菜单中选用“新建”命令、单击“新建”按钮或直接按F2键可以创建一个新的“Model”窗口。

在这个新的“Model”窗口中能够输入所要求解的模型。

打开(Open)从文件菜单中选用“打开”命令、单击“打开”按钮或直接按F3键可以打开一个已234 经存在的文本文件。

这个文件可能是一个Model文件。

保存(Save)从文件菜单中选用“保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。

另存为...(Save As...)从文件菜单中选用“另存为...”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为...”对话框中输入的文件名。

利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。

关闭(Close)在文件菜单中选用“关闭”(Close)命令或按F6键将关闭当前活动窗口。

第三章_LINGO软件使用入门

第三章_LINGO软件使用入门

派生集: 派生集:
Setname(parent_set_list(源集列表))[/member_list/][:attribute_list];
例如
SETS: PRODUCT/A B/; MACHINE/M N/; WEEK/1..2/; ALLOWED( PRODUCT,MACHINE,WEEK); ENDSETS
表3.1 优先级 最高 运算符 #NOT# -(负号) ∧ * / + -(减法) #EQ# #NE# #GT# #GE# #LT# #LE# #AND# #OR# < = >
最低
二、基本的数学函数
在LINGO中写程序时可以调用大量的内部函数,这 些函数以“@”符号打头(类似调用命令).LINGO中 数学函数的用法与其它语言中的数学函数的用法类似, 主要有以下函数: @ABS(X):绝对值函数,返回X的绝对值. @COS(X):余弦函数,返回X的余弦值(X的单位是弧 @COS(X) 度). @EXP(X):指数函数,返回ex的值. @FLOOR(X):取整函数,返回X的整数部分(向最靠 近0的方向取整). @LGM(X):返回X的伽马(Gamma)函数的自然对数 值.
LINGO有5个主菜单: 有 个主菜单 个主菜单:
• • • • • File(文件) (文件) Edit(编辑) (编辑) LINGO(LINGO系统) 系统) ( 系统 Windows(窗口) (窗口) Help(帮助) (帮助)
这些菜单的用法与Windows下其他应用程序的 这些菜单的用法与 下其他应用程序的 标准用法类似,下面只对主菜单中LINGO系统的主 标准用法类似,下面只对主菜单中 系统的主 要命令进行简要介绍. 要命令进行简要介绍.
给出了工具栏的简要功能说明. 图1.2给出了工具栏的简要功能说明. 给出了工具栏的简要功能说明

lingo入门教程(共55张)

lingo入门教程(共55张)

3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
第18页,共55页。
分析
(fēnxī)
6 A1 5 6
B1 6 C1
S
3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
假设从S到T的最优行驶路线 P 经过城市C1, 则P中从S到C1的子路也一定 是从S到C1的最优行驶路线; 假设 P 经过城市C2, 则P中从S到C2的子路也一定是从S到C2的最优行驶路线. 因此, 为得到从S到T的最优行驶路线, 只需要先求出从S到Ck(k=1,2)的最 优行驶路线, 就可以方便地得到从S到T的最优行驶路线.
第19页,共55页。
分析
(fēnxī)
6 A1 5 6
B1 6 C1
S
3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
此例中可把从S到T的行驶过程分成4个阶段,即 S→Ai (i=1,2 或3), Ai → Bj(j=1或2), Bj → Ck(k=1或2), Ck → T. 记d(Y,X)为城 市Y与城市X之间的直接距离(若这两个城市之间没有道路直 接相连,则可以认为直接距离为∞),用L(X)表示城市S到城市
L B2 minL A1 5, L A2 6, L A3 4 7 L A3 4; L C1 minL B1 6, L B2 8 15 L B2 8;
略2去),最小运量136.2275(吨公里)。
1
3
5
0
0
1
2
3
4
5
6

参考一:LINGO软件入门

参考一:LINGO软件入门

第7章 LINGO 软件入门7.1 LINGO 软件基本用法7.1.1 LINGO 软件简介:LINGO 软件是一套专门用于求解最优化问题的软件包. LINGO 可用于求解线性规划(LP ),二次规划(QP ),非线性规划(NLP ),整数规划(IP ),动态规划,多目标规划等,特别是对于变量或约束条件较复杂的大规模模型,提供了较好的选择.LINGO 还是最优化问题的一种建模语言,包括许多常用的数学函数可以调用,并可以接受其他数据文件(如文本文件、Excel 电子表格文件、数据库文件等),同时LINGO 提供了与电子表格软件(如Excel 等)的接口,能够直接集成到电子表格中使用.即使对优化方面知识了解不多的用户,也能够方便地建模和输入、有效地求解.7.1.2 LINGO 基本用法:启动LINGO 后,在主窗口上弹出标题为LINGO Model – LINGO1 的窗口,称为LINGO 的模型窗口,建立的模型都要在该窗口内编码实现.例1.求解下列二次规划.22121122121212982770.32;100;2;,;x x x x x x x x x x x x N +---+≤≤∈目标函数约束条件输入模型窗口LINGO1后的形式见下图.请注意以下几点:(1)LINGO总是根据“MAX=”或“MIN=”语句寻找目标函数,而其他语句都是约束条件(除注释语句和TITLE语句),所以语句顺序不重要.(2)LINGO中模型以“MODEL:”开始,以“END”结束.对简单的模型,这俩个语句也可以省略.(3)LINGO模型是由一系列语句组成,每个语句都以分号“;”结尾.(4)LINGO中不分大小写字母;其变量和行名由不超过32个字符(数字和字母)组成,且以字母开头;(5)乘号不能省略,即系数与变量之间要加运算符“*”.(6)“!”开头的是注释行(注释语句),可以省略.(7)“[]”为用户自定义的行号或行名,放在每行之前,可以省略.(8)LINGO中以“@”都是函数调用,@GIN表示变量取正整数.默认情况下,LINGO规定变量是非负的.(我们将在后面详细介绍函数)(9)“TITLE”后加名字,可对此模型命名,可以省略.现在我们用LINGO来解这个模型.点击工具条上的按钮,或从菜单中选择LINGO|Sovle 即可.(若模型编译有错,会有提示)求解时会显示下图:关闭窗口,得到运行结果:Local optimal solution found at iteration:找到最优解时迭代的次数. Objective value:表示所求的最优目标值(11077.50).Variable:变量名Value:最优解中各变量( Variable)的值.Row:约束条件行名.Reduced Cost:当该非基变量增加一个单位时(其他非基变量保持不变)目标函数减少的量(对max型问题)Slack or Surplus:约束对应得松弛变量的值.(第三行取0,对于最优解来讲,第三个约束取等号,为紧约束)Dual Price:对偶价格的值.表示当对应约束有微小变动时,目标函数的变化率,若其数值为X,表示对应约束中不等式右端项若增加一个单位,目标函数将增加X个单位(max 型问题).7.1.3 在LINGO中使用集合:1、LINGO模型的基本组成LINGO也是一种建模语言,称为矩阵生成器,通过集合的引入,它可使输入较大规模问题的过程得到简化.LINGO模型由5段组成:(1)、集合段:是用于定义变量.以“SETS:”开始,以“ENDSETS”结束.定义集合变量,元素,和属性.集合名/元素/:属性元素:类似于数组的下标.属性:定义集合的变量,类似于数组.属性之间必须用逗号或空格隔开.(2)、目标与约束段:定义目标函数,约束条件.(3)、数据段:用于给变量赋值.以“DATA:”开始,以“ENDDATA”结束.对集合的属性(数组)输入必要的常数数据.attribute list(属性)= value_list;(常数列表)(value_list)中数据用逗号或空格隔开.﹡在此段也可引入参数,“变量名=?”,在运行时才对参数赋值.但这仅用于单个变量赋值,而不能用于属性变量(数组).(4)、初始段:以“init:”开始,以“endinit”结束.对集合的属性(数组)定义初值. (5)、计算段:以“CALC:”开始,以“ENDCALA”结束.对一些原始数据进行“预处理”.﹡计算段中语句是顺序执行,不能交换位置.﹡计算段中只能直接使用赋值语句.2、集合的定义:变量使用之前需先定义,而LINGO中的变量是通过集合来定义的,变量皆为向量或由向量生成的二维数组.如:Demand/1..6/:a,b,d :集合名为Demand,共6个元素,a,b,d 为属于此集合的变量,其为含6个元素的向量.Supply/1,2/:x,y,e :集合名为Supply ,共2个元素,x,y,e 为属于此集合的变量,其为含2个元素的向量.————基本集合Link(demand,supply):c :集合link 是由集合demand和 supply生成的新集合,为二维数组,其元素由demand和 supply的笛卡尔积构成,即共6*2=12个元素变量c 即为6*2的矩阵————派生集合现有2料场,位于A (5, 1), B (2, 7),记(xj,yj),j=1,2, 日储量ej 各有20吨.假设从料场到工地之间均有直线道路相连,试制定每天的供应计划,即从A, B 两料场分别向各工地运送多少吨水泥,使总的吨公里数最小.解:设决策变量:ij c (料场j 到工地i 的运量)则其为12维.则规划模型为26221/2112161min [()()].,16,1,2ijji j i j i iji j ijji c xa yb s tcd i ce j ====-+-==≤=∑∑∑∑其LINGO 模型为:(1)集合段:我们定义需求点demand 和供应点supply 两个集合,分别有6个和2个元素,Demand/1..6/:a,b,d ; 其中a 为该集合的属性(变量),表示6个工地位置的横坐标的集合,是一个有6个元素的向量. Supply/1,2/:x,y,e ; 其中x 该集合的属性(变量),表示2个料场位置的横坐标的集合,是一个有2个元素的向量.运送量ij c 的集合是一个6*2 的矩阵,它需要利用集合demand 和supply ,定义一个新集合,定义ij c 为这个新集合的属性:Link(demand,supply):c;(2)数据段:给已知变量赋值.如a,b=1.25,1.25,8.75,0.75,0.5,4.75,5.75,5,3,6.5,7.25,7.75;也可写成a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75;注 LINGO 对数据是按列赋值的,而不是按行.分割数据可用空格,逗号,回车. (3)目标与约束段: 目标函数26221/211min[()()]ijji j i j i c xa yb ==-+-∑∑用LINGO 语句表示为:min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));()11*11*222*12*233*13*21244*14*255*15*266*16*2⎛⎫⎛⎫⎪⎪⎪ ⎪ ⎪ ⎪= ⎪⎪⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪⎝⎭⎝⎭@sum :求和函数.这个函数的功能是对语句中冒号“:”后面的的表达式,按照“:”前面的集合指定的下标进行求和.“@sum ”相当于∑“”,“link(i,j)”相当于“i,j ∈link ”约束条件21.,16ijij s tcd i ===∑用LINGO 语句表示为:@for(demand(i): @sum(supply(j):c(i,j)) =d(i););@for:循环函数.意思是对冒号“:”前面的集合的每个元素(下标),对于“:”后面的约束关系式都要成立.注 @for 和@sum 可以嵌套使用.@free 函数取消了变量x,y 非负限制.(4)初始段:“X ,Y =5,1,2,7;”语句的实际赋值顺序是X=(5,2),Y=(1,7).作为寻找最优解的起始值. 模型如下: MODEL:Title Location Problem; sets:demand/1..6/:a,b,d; supply/1..2/:x,y,e; link(demand,supply):c; endsets data:!locations for the demand(需求点的位置); a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75;!quantities of the demand and supply (供需量); d=3,5,4,7,6,11; e=20,20; enddata init:!initial locations for the supply (初始点); x,y=5,1,2,7; endinit!Objective function (目标);[OBJ] min=@sum(link(i,j): c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2) ); !demand constraints (需求约束);@for(demand(i): @sum(supply(j):c(i,j)) =d(i);); !supply constraints (供应约束);@for(supply(i): @sum(demand(j):c(j,i)) <=e(i); ); @for(supply: @bnd(0.5,X,8.75); @bnd(0.75,Y,7.75); ); END 运行,得局部最优解X(1)=7.249997,X(2)=5.695940,Y(1)=7.749998,Y(2)=4.928524,,最小运量=89.8835(吨公里).NLP 中局部最优解不一定就是全局最优解,可通过“LINGO|Options|Global Solver|Use Global Solver ”菜单命令激活全局最优求解程序.7.1.4 LING O 的运算符和函数:在此我们主要介绍前六种函数1、算术运算符及其优先级:算术运算符:+(加法),—(减法或负号),*(乘法),/(除法)∧求幂)关系运算符:<(即<=,小于等于),=(等于),>(即>=,大于等于)逻辑运算符:#AND#(与),#OR#(或),#NOT#(非),#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于).结果只有“真”(1)和“假”(0)两个值。

第04讲 Lingo软件入门

第04讲 Lingo软件入门

第4讲 Lingo 软件入门司守奎烟台市,海军航空工程学院数学教研室Email :sishoukui@4.1 初识Lingo 程序Lingo 程序书写实际上特别简捷,数学模型怎样描述,Lingo 语言就对应地怎样表达。

首先介绍两个简单的Lingo 程序。

例4.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 中就不需写出对应的约束。

例4.2 抛物面22y x z +=被平面1=++z y x 截成一椭圆,求原点到这椭圆的最短距离。

该问题可以用拉格朗日乘子法求解。

下面我们把问题归结为数学规划模型,用Lingo 软件求解。

设原点到椭圆上点),,(z y x 的距离最短,建立如下的数学规划模型:⎩⎨⎧+==++++.,1s.t.min 22222y 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 。

例4.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(一)LINGO是一款常用的线性规划软件,它能够方便地解决复杂问题。

培训LINGO,需要深入了解软件的使用方法和解决实际问题的能力。

下面就LINGO培训的内容进行分点介绍。

一、LINGO的基础知识LINGO的基础知识包括软件的基本功能和操作。

需要讲解LINGO的界面、工具栏、菜单栏等。

初次接触LINGO的学员需要掌握LINGO的一些基本用法,比如如何输入数据、如何设定优化目标,如何设置约束等,这些都是LINGO的基本操作。

二、LINGO求解模型了解LINGO的基本操作之后,需要讲解LINGO的求解模型。

LINGO的数学模型是LINGO软件解决问题必需的部分。

对于LINGO求解模型的学习,需要学员掌握数学模型的建立方法和标准的数学模型。

培训学员掌握LINGO的求解模型知识是LINGO培训的核心。

三、LINGO的高级应用LINGO的高级应用需要讲授如何利用LINGO解决实际问题,需要讲解如何构建多约束模型来描述现实中的问题,如何设置变量、常数和目标函数等。

高级应用的讲授需要结合实例,让学员深入了解LINGO的实际应用场景,提高解决实际问题的能力。

四、LINGO的调试LINGO的调试是LINGO培训的重要组成部分。

在LINGO求解过程中,有时会出现错误,导致模型不能正常求解。

因此,需要讲解LINGO调试的方法和技巧,使得学员具备调试LINGO模型的能力。

五、LINGO应用举例为了让学员进一步巩固LINGO的知识,需要讲解一些LINGO的应用举例。

举例的内容包括:产品组合问题、生产调度问题、财务规划问题、运输规划问题等。

通过这些示例,让学员对LINGO的应用有更加深刻的理解。

六、LINGO的作业练习培训LINGO需要进行实际操作,软件操作的熟练程度可以通过作业考核来体现。

作业练习的难度需要逐渐增加,从简单到复杂地设置模型,巩固培训成果。

LINGO培训需要根据学员的水平进行分类管理,加强培训的个性化和针对性。

Lingo软件学习

Lingo软件学习

Reduced Cost 0.000000 0.000000
Slack or Surplus Dual Price 3360.000 1.000000 0.000000 48.00000 0.000000 2.000000 40.00000 0.000000
20桶牛奶生产A1, 30桶生产A2,利 润3360元。
在LINGO中求解如下的LP问题: 例1 在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的运行按钮 即可。程序
lingo的语法规定
1、求解目标函数的最大值或最小值分别用MAX=… 或者MIN=…来表示; 2、每个语句必须以分号“;”结束,每行可以有多 个语句,语句可以跨行; 3、变量名称必须以字母(A ˜ Z)开头,有字母、 数字(0 ˜ 9)和下划线组成,长度不能超过32个 字符,不区分大小写; 4、可以给语句加上标号; 5、以!开头,以;号结束的语句是注释语句; 6、如果对变量的取值范围没有特殊说明,则默认所 有决策变量都非负; 7、lingo模型以”model”开头,以“end”结束,对 于比较简单的模型,这两个语句可以省略; 点击菜单lingo|solve求解即可
模型求解
Global optimal solution found. Objective value: 3360.000 Total solver iterations: 2
Variable X1 X2 Row 1 2 3 4
Value 20.00000 30.00000
Reduced Cost 0.000000 0.000000
st
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

♂返回
8、如何在LINGO中求解如下的IQP问题:
2 max f ( x) 98 x1 277 x2 x12 0.3 x1 x2 2 x2
s.t. x1 x2 100 x1 2 x2 x1 , x2 0为整数
LINGO代码: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1+x2<=100; x1<2*x2; @gin(x1);@gin(x2);
min z x 2 2 x 3 x1 2 x 2 x 3 2 x 3x x 1 2 3 4 s.t. x 2 x3 x5 2 x j 0; j 1,2,...,5
3 、求解
min z 5 x1 21x 3 x1 x 2 6 x 3 x 4 2 s.t. x1 x 2 2 x 3 x5 1 x ; j 1,2,3,4,5 j
@SLB)与LINDO中的命令类似。而且0/1变量函数是@BIN函
数。
数学函数 LINGO提供了大量的标准数学函数: @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的整数部分。当x>=0时,返回不超过x的最大整数; 当x<0时,返回不低于x的最大整数。 @smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值 @smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值
第二步:在模型窗口中输入模型
max z 2x1 3x 2 4x1 3x 2 10 s.t. 3x1 5x 2 12 x ,x 0, 1 2
输入: model: max=2*x1+3*x2; 4*x1+3*x2<10; 3*x1+5*x2urplus:约束条件的松驰变量或剩余变量的值
Dual Price:对偶价格或影子价格
§2 Lingo的基本用法注意事项
1、每一个模型都以model:开始, 又以end结束,也可省略此结构; 2、目标函数必须由 “min =”或“max =”开头。 3、可以用<表示<=;用>表示>=; 4、LINGO的每一语句 ; 结束;
• 运行状态窗口
当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示 IP,以PI开头表示PIP)
当前解的状态 : "Global Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定) 当前约束不满足的总量(不是不 满足的约束的个数):实数(即使 该值=0,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束)
3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y <5 改为x<5y)
4、合理设定变量上下界,尽可能给出变量初始值
5、模型中使用的参数数量级要适当
(如小于103)
二. LINGO软件的基本使用方法
§1 LINGO入门
第一步:启动LINGO


屏幕显示如下: 标记LINGO的外窗口是主框架窗口,主框架窗 口的上面包含所有的命令菜单和命令工具栏; 标记LINGO MODEL-LINGO1的子窗口是一个 新的、空白的模型窗口。
有效步数
运行程序的LINGO报告窗口(如下图)
注:LINGO不询问是否进行敏感性分析,敏感性分析需要将来通过修改系 统选项启动敏感性分析后,再调用“REPORT|RANGE”菜单命令来实现。现
在同样可以把模型和结果报告保存在文件中。
解释
Objective value: 最优目标值 Infeasibilities:不可行性 Total solver iterations:单纯形法的迭代次数 Variable:变量 Value:给出最优解中各变量的值 Reduced Cost:各个变量的检验数
8小时 每天 50桶牛奶 时间480小时 至多加工100公斤A1 决策变量 x1桶牛奶生产A1 x2桶牛奶生产A2
1桶 牛奶 或
f(x)~目标函数
T
gi(x)0~约束条件
线性规划(LP) 二次规划(QP) 非线性规划(NLP) 整数规划(IP)
线性规划问题的标准形式
目标函数: max Z c1 x1 c2 x2 cn xn

a11 x1 a12 x2 a1n xn b1
约束条件:
4 、 解下列规划
min x1 x 2 x 3 3x1 x 2 x 3 1 s.t. x1 4 x 2 x 3 2 x , x , x 0 1 2 3
5 、求解问题
min z 5 x1 21x 3 x1 x 2 6 x 3 x 4 2 s.t. x1 x 2 2 x 3 x5 1 x ; j 1,2,3,4,5 j
4、计算完成后出现Solution Report窗口显示模 型解的详细信息;
• 运行状态窗口
Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。 Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。 Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。 Generator Memory Used (K) (内存使用 量) • Elapsed Runtime (hh:mm:ss) (求解花费的时间)
如下的数学模型称为数学规划(Mathematical Programming, MP): m in f ( x ) s .t . g i ( x ) 0, i 1,..., p h j ( x ) 0, j 1,...,q
X x Rn
gi ( x) 0, i 1,..., p h j ( x) 0, j 1,..., q
model: max=20*x1+10*x2; 5*x1+4*x2<24; 2*x1+5*x2>5; end
练习
1、解线性规划
max z x1 x 2 2 x1 x 2 2 x 2x 2 2 s.t. 1 x1 x 2 5 x1 0
2、求解问题
LINGO软件学习
一. 优化模型与优化软件简介 二. LINGO软件的基本使用方法 三. LINGO软件求解线性规划问题
一. 优化模型与优化软件简介
数学规划模型
实际问题中 的优化模型 x~决策变量 数 学 规 划
Min(或Max) z f ( x), x ( x1 ,x n ) s.t. g i ( x) 0, i 1,2, m
max z x1 2x 2 2x1 5x 2 12 s.t. x1 2x 2 8 x ,x 0 1 2
model: max=x1+2*x2; 2*x1+5*x2>12; x1+2*x2<8; End 注意:乘法一定用*

2、求解线性规划:
min z 20x1 10x 2 5x1 4x 2 24 s.t. 2x1 5x 2 5 x ,x 0 1 2

约束集或可行域
常用优化软件


LINDO/LINGO软件 MATLAB优化工具箱/mathematica优化程序 包 EXCEL软件的优化功能 SAS(统计分析)软件的优化功能
建模时需要注意的几个基本问题
1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小 值、四舍五入、取整函数等
5、注释以 !开始,以 ; 结束;
6、变量名:不区分大小写;由字母数字下划线组成;第一个字符 必须是字母;变量名最长为32个字符 7、变量和数字放在约束条件的左、右端均可;但最好变量在 左,数字在右。 8、Lingo 变量默认域为非负实数,可以改变默认域.
程序语句输入的备注:
•LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注






am1 x1 am 2 x2 amn xn bm x1 0 xn 0

非线性规划
设 x ( x1 ,..., xn )T R n ,
f ( x); gi ( x), i 1,..., p ; h j ( x), j 1,..., q : R n R ,
例1:加工奶制品的生产计划
1桶 牛奶 或 12小时 8小时 3公斤A1 获利24元/公斤
4公斤A2
获利16元/公斤
每天: 50桶牛奶
时间480小时 至多加工100公斤A1
制订生产计划,使每天获利最大 • 35元可买到1桶牛奶,买吗?若买,每天最多买多少? • 可聘用临时工人,付出的工资最多是每小时几元? • A1的获利增加到 30元/公斤,应否改变生产计划?
6 、求解问题
相关文档
最新文档