lingo-简单教程1
LINGO使用教程
LINGO 使用教程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然后点击工具条上的按钮即可。
LINGO快速入门
概率函数
• 7.@phg(pop,g,n,x) • 超几何(Hypergeometric)分布的累积分布函数。pop表示产品总数,g是正
品数。从所有产品中任意取出n(n≤pop)件。pop,g,n和x都可以是非整数, 这时采用线性插值进行计算。
变量界定函数
• 变量界定函数实现对变量取值范围的附加限制,共4种: • @bin(x) 限制x为0或1 • @bnd(L,x,U) 限制L≤x≤U • @free(x) 取消对变量x的默认下界为0的限制,即x可
以取任意实数 • @gin(x) 限制x为整数 • 在默认情况下,LINGO规定变量是非负的,也就是说下界
• @smax(x1,x2,...,xn)返回 x1 , x2 , … , xn 中的 最大值
• @smin(x1,x2,...,xn)返回 x1 , x2 , … , xn 中的最 小值
例 给定一个直角三角形,求包含该三角形的最小正方形。
解:如图所示。ABCDDAEabx
求最小的正方形就相当于求如下的最优化问题:
• data:
• sex,age = 1 16
•
0 14
•
0 17
•
0 13;
• friend = 0.3 0.5 0.6;
• enddata
基本运算符
• ^ 乘方 •﹡ 乘 •/ 除 •﹢ 加 •﹣ 减
: LINGO具有9种逻辑运算符
• #not# 否定该操作数的逻辑值,# not #是一个一元运算符 • #eq# 若两个运算数相等,则为 true ;否则为 flase • #ne# 若两个运算符不相等,则为 true ;否则为 flase • #gt# 若左边的运算符严格大于右边的运算符,则为 true ;否则
lingo教程
使用LINGO软件,编制程序如下:
model:
!6发点8收点运输问题;
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets !目标函数;
Mon..Fri
Mon,Tue,Wed,Thu,Fri
MonthM..MonthN
Oct..Jan
Oct,Nov,Dec,Jan
MonthYearM..MonthYearN Oct2001..Jan2002 Oct2001,Nov2001,Dec2001,Jan2002
③ 集成员不放在集定义中,而在随后的数据部分来定义。
23
(A,N,1)
34
(A,N,2)
45
(B,M,1)
56
(B,M,2)
67
(B,N,1)
78
(B,N,2)
成员列表被忽略时,派生集成员由父集成员所有的组合构成,这样
的派生集成为稠密集。如果限制派生集的成员,使它成为父集成员所有
组合构成的集合的一个子集,这样的派生集成为稀疏集。同原始集一
样,派生集成员的声明也可以放在数据部分。一个派生集的成员列表有
许多稀疏集的成员都满足一些条件以和非成员相区分。我们可以把这些
逻辑条件看作过滤器,在LINGO生成派生集的成员时把使逻辑条件为假
的成员从稠密集中过滤掉。
例2.4
sets:
!学生集:性别属性sex,1表示男性,0表示女性;年龄属性age. ;
students/John,Jill,Rose,Mike/:sex,age;
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然后点击工具条上的按钮即可。
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 28台时原材料A 4 016kg原材料B 0 412kg该工厂每生产一件产品I可获利2元,每生产一件产品II可获利3元,问应该如何安排生产计划使该厂获利最多?我们用下面的数学模型来描述这个问题。
设x_1、x_2分别表示在计划期内产品I、II的产量。
因为设备的有效台时是8,这是一个限制产量的条件,所以在确定产品I、II的产量时,要考虑不超过设备的有效台时数,即可用不等式表示为x_1 + 2x_2 <=8同理,因原材料A、B的限量,可以得到以下不等式4x_1 <=164x_2 <=12该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。
若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为:目标函数 max z=2x_1+3x_2约束条件 x_1 + 2x_2 <=84x_1 <=164x_2 <=12x_1、x_2 >=0一般来说,一个优化模型将由以下三部分组成:1.目标函数(Objective Function):要达到的目标。
lingo入门教程
运送量为cij 。
2 6
2
2
MIN f
cij x j ai y j bi
1
j1 i1
2
s.t.
cij di , i 1, 2,L , 6
2
j 1
6
cij ej , j 1, 2
3
i 1
使用现有临时料场时,决策变量只有 c(ij 非负),所以这是LP模型;当为新
建料场选址时决策变量为
c ij
和
x j , y j,由于目标函数
f对
x ,y
j
j
是非线性的,
所以在新建料场时是NLP模型。先解NLP模型,而把现有临时料场的位置作
为初始解告诉LINGO。
本例中集合的概念
利用集合的概念,可以定义需求点DEMAND和供应点 SUPPLY两个集合,分别有6个和2个元素(下标)。但决 策变量(运送量) cij 与集合DEMAND和集合SUPPLY都 有关系的。该如何定义这样的属性?
输出结果: 运行菜单命令“LINGO|Solve”
最大利润=11077.5
最优整数解 X=(35,65)
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 •用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@sub或@slb另行说明)。 •变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高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 <=164x_2 <=12该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。
若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为:目标函数 max z=2x_1+3x_2约束条件 x_1 + 2x_2 <=84x_1 <=164x_2 <=12x_1、x_2 >=0一个优化模型一般有三部分组成:1.目标函数(Objective Function):要达到的目标。
LINGO使用教程
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教程(一)
本章和下一章扼要介绍在 Microsoft Windows 环境下运行的 LINDO 6.1,LINGO 8.0 最新版本的使用方法,并包括社会、经济、工程等方面的一些实际应用问题的数学建模和求 解实例。
xyz=30
x+y=8
y=5 则 LINDO/LINGO 软件能直接确定出 y=5, 然后确定出 x=3,最后确定出 z=2, 这三个变量就是 常量了。经过这样的处理,将尽量减小模型中实际需要求解的决策变量的个数,使问题的规 模有所下降,从而使求解更有效。
LINDO/LINGO 预处理程序
LP QP
5、模型中使用的单位的数量级要适当 如果同一模型甚至同一约束中有的数很小而有的数很大, 如 0.01 和 10000000000, 则这两 个数的数量级相差太大了,不利于优化模型求解,因为大的数与小的数运算时误差会很大, 运算精度降低。LINDO/LINGO 通常希望模型中数据之间的数量级不要相差超过 103,否则会 给出警告提示信息,这时你应该尽量选择适当的单位,使数据之间的数量级相差减小。
优化模型
连续优化
整数规划
线性规划
二次规划
非线性规划
LINDO
LINGO
图 3-1 LINDO 和 LINGO 软件能求解的优化模型
第 37 页 共 112 页
谢金星:MATLAB 优化工具箱和 LINDO/LINGO 优化软件
第 38 页 共 112 页
lingo入门
lingo入门lingo入门教程之一--- 初识lingoingo对于一些线性或者非线性的规划,优化问题非常有效首先介绍一下,在lingo中运行程序时出现的页面(在工具栏点击类似靶子一样的图标便可运行)Solver status:求解器(求解程序)状态框Model Class:当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI 开头表示PIP)State:当前解的状态:"Global Optimum", "LocalOptimum", "Feasible", "Infeasible“(不可行), "Unbounded “(无界), "Interrupted“(中断), "Undetermined“(未确定)Object:解的目标函数值Infeasibility:当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束)Iteration:目前为止的迭代次数Extend solverstatus:扩展的求解器(求解程序)状态框Solver type:使用的特殊求解程序:Bestobj :目前为止找到的可行解的最佳目标函数值Objbound:目标函数值的界Steps:特殊求解程序当前运行步数:Active:有效步数Variables(变量数量):变量总数(T otal)、非线性变量数(Nonlinear)、整数变量数(Integer)。
Constraints(约束数量):约束总数(T otal)、非线性约束个数(Nonlinear)。
Nonzeros(非零系数数量):总数(Total)、非线性项系数个数(Nonlinear)。
GeneratorMemory Used (K) (内存使用量)ElapsedRuntime (hh:mm:ss)(求解花费的时间)运行之后页面介绍(这里的运行界面并不是与上面的运行过程中出现界面一致,即并非来自于同一个程序运行出现)第一行表示在经过457次迭代后得到局部最优解第二行给出该局部最优解的具体值下面给出取局部最优值时,x1 x2的具体取值这里求解的是局部最优解,如果想求出全局最优解,可以进行页面设置:lingo --> option --> global solver --> 勾选use globalsolver对于运行结果也可以另存为,格式一般为ldt,因为有时候对于求解一个问题,或许需要运行很久才可以得出结果,所以没必要每次为了看结果都运行,而是运行成功一次后便把结果保存下来注意事项LINGO总是根据“MAX=”或“MIN=”寻找目标函数;程序语句的顺序一般不重要,既可以随意调换;程序运用函数时都是以@开头;程序中的变量默认为非负数,想要改变变量类型必须有相应函数调整程序中变量不区分大小写;语句必须以分号结尾;注释以!开始,且注释语句后面必须也有分号,注释默认注释到第一个分号处,意思是分号前面会全部被注释掉。
Lingo教程(一)
NLP
IP
分枝定界管理程序
ILPBiblioteka INLPIQP线性优化求解程序
非线性优化求解程序
图 3-2 LINDO/LINGO 软件的求解过程
第 38 页 共 112 页
谢金星:MATLAB 优化工具箱和 LINDO/LINGO 优化软件
第 39 页 共 112 页
2、识别优化模型的类型:对等式约束的预处理完成后,预处理程序能自动识别优化模型 的类型,从而决定下一步采用什么求解程序。如果模型是连续线性规划,下一步直接调用线 性优化求解程序;如果模型是连续非线性规划,下一步直接调用非线性优化求解程序;如果 模型是整数规划,则下一步直接调用分枝定界管理程序。
优化模型
连续优化
整数规划
线性规划
二次规划
非线性规划
LINDO
LINGO
图 3-1 LINDO 和 LINGO 软件能求解的优化模型
第 37 页 共 112 页
谢金星:MATLAB 优化工具箱和 LINDO/LINGO 优化软件
第 38 页 共 112 页
此外,LINDO 系统公司还提供了 LINDO/LINGO 软件与其它开发工具(如 C++和 Java 等语言)的接口软件 LINDO API(Application Program Interface),因此使 LINDO 和 LINGO 软件还能方便地融入到用户应用软件的开发中去。
线性优化求解程序通常使用单纯形算法,对高级版本的 LINDO/LINGO 软件,为了能解 大规模问题,也可以使用内点算法。非线性优化求解程序采用的是顺序线性规划法(Sequential Linear Programming, 简称 SLP),即通过迭代求解一系列线性规划来达到求解非线性规划的 目的。非线性优化求解程序也可以使用其他算法,如广义既约梯度法(Generalized Reduced Gradient, 简称 GRG),并可以自动选用多个初始点开始进行迭代,以便增加找到全局最优解 的可能性。分枝定界管理程序用于管理整数规划问题的分枝定界算法,在运行中还要不断调 用线性优化求解程序和非线性优化求解程序进行定界处理。
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然后点击工具条上的按钮 即可。
LINGO教程(基本语法)(1)
LINGO 教 程
问题的模型(可以看出是LP模型 ) 目标函数是所有费用的和 约束条件主要有两个: 1)能力限制: RP ( I ) 40, I 1,2,3,4 2)产品数量的平衡方程:
•.LNG:文本格式的模型文件,不保存模型中的格式信 息(如字体、颜色、嵌入对象等); •.LDT:LINGO数据文件;
•.LTF:LINGO命令脚本文件; •.LGR:LINGO报告文件; •.LTX: LINDO格式的模型文件;
9
除“LG4”文件外, 另外几种格式的文件 都是普通的文本文件, 可以用任何文本编辑 器打开和编辑。
4. LINGO的主要菜单命令
5. LINGO命令窗口
3
LINGO 教 程
LINGO软件的安装
安装过程: 与LINDO for Windows类似. 安装文件20M多一点,需要接受安装协议、选择安装 目录(缺省C:\LINGO9)。 安装完成前,在出现的对话框(如图)中选择缺省的建
模(即编程)语言,系统推荐的是采用LINGO。安装后
按钮),图形界面,使用方便;
(这里主要介绍这种模式)
命令行 模式:仅在命令窗口(Command Window)下操 作,通过输入行命令驱动LINGO运行 。
6
LINGO 教 程
从LINDO 到 LINGO LINGO 9.0功能增强,性能稳定,解答结果可靠。与
LINDO相比,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教程(PDF)
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。 在主窗口内的标题为 LINGO Model – LINGO1 的窗口是 LINGO 的默认模型窗口,建立的模型 都都要在该窗口内编码实现。下面举两个例子。
例 1.1 如何在 LINGO 中求解如下的 LP 问题:
min 2x1 + 3x2 s.t.
集 ←→ 结构体 集成员 ←→ 结构体的域 集属性 ←→ 结构体实例 LINGO 内置的建模语言是一种描述性语言,用它可以描述现实世界中的一些问题,然后 再借助于 LINGO 求解器求解。因此,集属性的值一旦在模型中被确定,就不可能再更改。在 LINGO 中,只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾, 初始部分是 LINGO 求解器的需要,并不是描述问题所必须的。 2.3.2 定义派生集 为了定义一个派生集,必须详细声明: ·集的名字 ·父集的名字 ·可选,集成员 ·可选,集成员的属性 可用下面的语法定义一个派生集: setname(parent_set_list)[/member_list/][:attribute_list]; setname 是集的名字。parent_set_list 是已定义的集的列表,多个时必须用逗号隔开。 如果没有指定成员列表,那么 LINGO 会自动创建父集成员的所有组合作为派生集的成员。派 生集的父集既可以是原始集,也可以是其它的派生集。
@sum(warehouses(I): volume(I,J))=demand(J)); !产量约束;
@for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I));
!这里是数据; data:
lingo入门教程课件
“X=5,2; Y=1,7;”
输入程序
定义目标和约束,与前例的方法是类似(这里
包含了派生集合),请特别注意进一步体会集
在程序开头用TITLE语句 对这个模型取了一个标题 “LOCATION PROBLEM; 并且对目标行([OBJ])和 两类约束
合函数@SUM和@FOR的用法。
由于新建料场的位置理论上讲可以是任意的, 所以在约束的最后(模型的“END”语句上面 的一行)用@free函数取消了变量X、Y的非负 限制
j
j
j
j
所以在新建料场时是NLP模型。先解NLP模型,而把现有临时料场的位置作
为初始解告诉LINGO。
本例中集合的概念
利用集合的概念,可以定义需求点DEMAND和供应点 SUPPLY两个集合,分别有6个和2个元素(下标)。但决 策变量(运送量) c ij 与集合DEMAND和集合SUPPLY都 有关系的。该如何定义这样的属性?
表示集合LINK中的元素就是集合DEMAND 和SUPPLY的元素组合成的有序二元组, 从数学上看LINK是DEMAND 和SUPPLY的笛 卡儿积,也就是说
LINK={(S,T)|SDEMAND,TSUPPLY} 因此,其属性C也就是一个6*2的矩阵(或者 说是含有12个元素的二维数组)。
LINGO建模语言也称为矩阵生成器(MATRIX GENERATOR)。类似DEMAND 和SUPPLY直接把元素列举出 来的集合,称为基本集合(primary set),而把LINK这种基于其它 集合而派生出来的二维或多维集合称为派生集合(derived set)。 由于是DEMAND 和SUPPLY生成了派生集合LINK,所以 DEMAND 和SUPPLY 称为LINK的父集合。
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然后点击工具条上的按钮即可。
LINGO使用教程
LINGO 使用教程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然后点击工具条上的按钮即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8 25 x1 8 15 x2 1800 x1 0, x2 0 x , x 为整数 1 2
线性规划模型:
min z 40 x1 36 x2
gongren.lg4
Model: min=40*x1+36*x2; 5*x1+3*x2>45; @gin(x1); @gin(x2); end
5 x1 3x2 45 s.t. x1 0, x2 0 x , x 为整数 1 2
• 问题2:某医院负责人每日至少需要下列数量的护士:
班次 时间 最少护士数
1 2 3 4 5 6
6时~10时 10时~14时 14时~18时 18时~22时 22时~02时 02时~06时
使用LINGO的一些注意事项
6. 每条语句都以分号结束(结束行end除外),最好一 行只写一条语句
7. 运算符号的应用如:min = 及系数 “*”变量
7. 可用“@FREE()”将变量的非负假定取消 8. 对0-1变量说明: @bin ( ) 9. 对整数变量说明: @gin ( )
例题荟萃
一般线性规划
问题1: 某厂每日8小时的产量不低于1800件。为了进行
质量控制,计划聘请两种不同水平的检验员。一级检验员的 标准为:速度25件/小时,正确率98%,计时工资4元/小时; 二级检验员的标准为:速度15件/小时,正确率95%,计时工 资3元/小时。检验员每错检一次,工厂要损失2元。为使总检 验费用最省,该工厂应聘一级、二级检验员各几名? 解 设需要一级和二级检验员的人数分别为x1、x2人, 则应付检验员的工资为:
6
x1 x6 60 x1 x2 70 x2 x3 60 x3 x4 50 x4 x5 20 x5 x6 30 xi 0, (整数),i 1,..., 6.
Lingo求解 hushi.lg4
5
6
22时~02时
02时~06时
20
30
每班的护士在值班开始时间向病 房报到,连续工作8小时.医院领导 为满足每班所需要的护士数,最 少需雇佣多少护士?
LINDO 公司软件产品简要介绍
美国芝加哥(Chicago)大学的Linus Schrage教授于1980 年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:
LINDO: Linear INteractive and Discrete Optimizer LINGO: Linear INteractive General Optimizer What’s Best!: (SpreadSheet e.g. EXCEL) (V6.1) (V9.0) (V8.0)
7个选项卡(可设置80-90个控制参数)
详细说明 (略)
使用LINGO的一些注意事项
1. “>”(或“<”)号与“>=”(或“<=”)功能相同 2. 变量名以字母开头 3. 变量名不区分大小写
4. 缺省假定所有变量非负;
5. 行中注有“!”符号的后面部分为注释,以分号结 束,如: ! It’s Comment;
非 线 性 规 划
整 数 规 划
组 合 优 化
不 确 定 规 划
多 目 标 规 划
目 标 规 划
网 络 优 化
动 态 规 划
约束优化的 简单分类
数学规划 连 续 优 化 离 散 优 化
min s.t.
f ( x) hi ( x) 0, i 1,...,m g j ( x ) 0, j 1,...,l xD
n
• 线性规划(LP) 目标和约束均为线性函数 • 非线性规划(NLP) 目标或约束中存在非线性函数 二次规划(QP) 目标为二次函数、约束为线性 • 整数规划(IP) 决策变量(全部或部分)为整数 整数线性规划(ILP),整数非线性规划(INLP) 纯整数规划(PIP), 混合整数规划(MIP) 一般整数规划,0-1(整数)规划
非线性规划 (NLP) LINGO
LINDO
• 例 如何在LINGO中求解如下的LP问题:
min s.t. x1 x 2 350 x1 100 2 x1 x 2 600 x1 , x 2 0 2 x1 3 x 2
• 在LINGO模型窗口中输入如下代码: model: min 2 x1 3 x 2 min=2*x1+3*x2; s.t. x1+x2>=350; x1 x 2 350 x1>=100; x1 100 2*x1+x2<=600; end 2 x1 x 2 600 • 然后点击工具条上的按钮 x1 , x 2 0 即可。
8 4 x1 8 3 x2 32 x1 24 x2
因检验员错检而造成的损失为:
ห้องสมุดไป่ตู้
(8 25 2% x1 8 15 5% x2 ) 2 8x1 12 x2
故目标函数为:
min z (32 x1 24 x2 ) (8x1 12 x2 ) 40 x1 36 x2
juli2.lg4
0-1整数线性规划
max z x1 1.2 x2 0.9 x3 1.1x4
2 x1 3x2 3x3 4 x4 6 s.t. x1 , x2为0,1变量 x 为整数 Model: 3 max=x1+1.2*x2+0.9*x3+1.1*x4; 2*x1+3*x2+3*x3+4*x4<=6; @bin(x1); @bin(x2); juli3.lg4 @gin(x3); @free(x4) ; end
60 70 60 50 20 30
每班的护士在值班开始时间向病房报到,连续工作8小 时.医院领导为满足每班所需要的护士数,最少需雇佣 多少护士?
班次 1 2 3 4
时间 6时~10时 10时~14时 14时~18时 18时~22时
最少 60 70 60 50
min s.t.
z xi
i 1
LINDO API: LINDO Application Programming Interface (V3.0)
演示(试用)版、学生版、高级版、超级版、工业版、 扩展版… (求解问题规模和选件不同)
LINDO和LINGO软件能求解的优化模型
优化模型
连续优化
整数规划(IP)
线性规划 (LP)
二次规划 (QP)
(最)优化理论是运筹学的基本内容
OR/ MS/ DS 运筹学(OR: Operation Research)
管理科学(MS: Management Science)
决策科学 (DS: Decision Science)
优化(Optimization), 规划(Programming)
无 约 束 优 化 线 性 规 划
juli1.lg4
整数线性规划
max z 3 x1 2 x2 14 2 x1 3 x2 s.t. 2 x1 x2 9 x , x 为整数 1 2
Model: max=3*x1+2*x2; 2*x1+3*x2<=14; 2*x1+x2<=9; @gin(x1); @gin(x2); end
max z 110 x1 75 x2 60 x3 50 x1 x2 x3 1 1 1 s.t. x1 x2 x3 20 3 4 2 x1 , x2 0
在lingo模型窗口中输入: Model: max=110*x1+75*x2+60*x3; x1+x2+x3<=50; 1/2*x1+1/3*x2+1/4*x3<=20; @free(x3); end
状态窗口
详细说明
Model Class: LP, QP,ILP, IQP,PILP, PIQP,NLP, INLP,PINLP
State: • Global Optimum • Local Optimum • Feasible • Infeasible • Unbounded • Interrupted • Undetermined Solver Type: • B-and-B • Global • Multistart