Lingo软件的最优化求解
连续规划
整数规划(IP)
LINDO和LINGO软件能求解的优化模型
优化模型
连续优化
整数规划(IP)
线性规划 (LP)
二次规划 (QP)
非线性规划 (NLP) LINGO
LINDO
LINDO/LINGO软件的求解过程
1. 确定常数
2. 识别类型
LINDO/LINGO预处理程序
LP QP NLP IP 全局优化(选) 分枝定界管理程序
如:尽量少使用绝对值、符号函数、多个变量求 最大/最小值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变 量的个数 (如x/y <5 改为x<5y)
4、合理设定变量上下界,尽可能给出变量初始值
5、模型中使用的参数数量级要适当 (如小于103)
Lingo需要掌握的几个重要方面
• 掌握集合(SETS)的应用;
原料无剩余 三 种 时间无剩余 资 加工能力剩余40 源 “资源” 剩余为零的约束为紧约束(有效约束)
1 MILK TIME CPCT
3360.000 0.000000 0.000000 40.00000
1.000000 48.00000 2.000000 0.000000
结果解释
最优解下“资源”增 加1单位时“效益”的 增量 影子价格
简要提纲
• 优化模型简介 • LINGO软件的使用简介
• 建模与求解实例(结合软件使用)
优化模型
实际问题中 Min(或Max) z f ( x), x ( x1 , x n )T 的优化模型 s.t. g i ( x) 0, i 1,2, m x~决策变量 数学规划 线性规划(LP) 二次规划(QP) 非线性规划(NLP) 0-1整数规划 一般整数规划 纯整数规划(PIP) 混合整数规划(MIP) f(x)~目标函数 gi(x)0~约束条件
reduced cost 值表 示当该非基变量 增加一个单位时 (其他非基变量 保持不变)目标 函数减少的量 ( 对 max型问题) 也可理解为: 为了使该非基变 量变成基变量, 目标函数中对应 系数应增加的量
结果解释
model: Global optimal solution found. max=72*x1+64*x2; Objective value: 3360.000 Total solver iterations: 2 [milk] x1+x2<50; Variable Value Reduced Cost [time] 12*x1+8*x2<480; X1 20.00000 0.000000 [cpct] 3*x1<100; X2 30.00000 0.000000 end Row Slack or Surplus Dual Pric
• 正确阅读求解报告;
• 正确理解求解状态窗口;
• 学会设置基本的求解选项(OPTIONS) ;
• 掌握与外部文件的基本接口方法
例1 加工奶制品的生产计划
1桶 牛奶 或 12小时 8小时 3公斤A1 获利24元/公斤
4公斤A2
获利16元/公斤
每天: 50桶牛奶
Байду номын сангаас
时间480小时 至多加工100公斤A1
ILP
线性优化求解程序 1. 单纯形算法 2. 内点算法(选)
IQP
INLP
非线性优化求解程序 1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选)
建模时需要注意的几个基本问题
1、尽量使用实数优化,减少整数约束和整数变量
2、尽量使用光滑优化,减少非光滑约束的个数
model: max=72*x1+64*x2; [milk] x1+x2<50; [time] 12*x1+8*x2<480; [cpct] 3*x1<100; end
20桶牛奶生产A1, 30桶生产A2,利润3360元。
模型求解
Global optimal solution found. Objective value: 3360.000 Infeasibilities: 0.000000 Total solver iterations: 2 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 MILK 0.000000 48.00000 TIME 0.000000 2.000000 CPCT 40.00000 0.000000
原料增1单位, 利润增48 时间加1单位, 利润增2 能力增减不影响利润
制订生产计划,使每天获利最大 • 35元可买到1桶牛奶,买吗?若买,每天最多买多少? • 可聘用临时工人,付出的工资最多是每小时几元? • A1的获利增加到 30元/公斤,应否改变生产计划?
8小时 每天 50桶牛奶 时间480小时 至多加工100公斤A1 决策变量 x1桶牛奶生产A1 x2桶牛奶生产A2
1桶 牛奶 或
12小时
3公斤A1 4公斤A2
获利24元/公斤 获利16元/公斤
目标函数
获利 24×3x1 获利 16×4 x2 每天获利 Max z 72x1 64x2 原料供应
x1 x2 50
12x1 8x2 480
约束条件
劳动时间 加工能力 非负约束
3x1 100 x1 , x2 0
线性 规划 模型 (LP)
模型求解
Global optimal solution found. Objective value: 3360.000 Infeasibilities: 0.000000 Total solver iterations: 2 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 MILK 0.000000 48.00000 TIME 0.000000 2.000000 CPCT 40.00000 0.000000
数学建模——LINDO_LINGO的实用与优化模型
向各工地运送多少吨水泥,使总的吨公里数最小。
决策变量:ci j (料场j到工地i的
运量)~12维
26
mi n
cij [(x j ai )2 ( y j bi )2 ]1/ 2
j 1 i1
2
s.t.
cij di , i 1,..., 6
X1
20.000000
0.000000
X2
30.000000
0.000000
end
ROW SLACK OR SURPLUS DUAL PRICES
三
原料无剩余 2)
0.000000
48.000000
种
时间无剩余 3)
0.000000
2.000000
资 源
加工能力剩余40
4)
40.000000
0.000000
不变!
结果解释
影子价格有意义
RANGES IN WHICH THE BASIS IS UNCHANGED: 时约束右端的允
OBJ COEFFICIENT RANGES
许变化范围
VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE
(目标函数不变)
例如: “sub x1 10”的作用等价于“x1<=10”
但用“SUB”和“SLB”表示的上下界约束不计入模 型的约束,也不能给出其松紧判断和敏感性分析。
14. “END”后对0-1变量说明:INT n 或 INT name
15. “END”后对整数变量说明:GIN n 或 GIN name
LINGO求解举例 — 例:选址问题
LINGO软件简介
第三篇 LINGO 软件简介LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
3.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求解线性规划问题
实验1 用LINGO求解线性规划问题LINGO使用简介LINGO软件是美国的LINDO系统公司(Lindo System Inc)开发的一套用于求解最优化问题的软件包.LINGO除了能用于求解线性规划和二次规划外,还可以用于非线性规划求解以及一些线性和非线性方程(组)的求解.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,而且执行速度快.LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果,这里简单介绍LINGO的使用方法.LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络优化和排队论模型中的最优化问题等.一个LINGO程序一般会包含集合段、数据输入段、优化目标和约束段、初始段和数据预处理段等部分,每一部分有其独特的作用和语法规则,读者可以通过查阅相关的参考书或者LINGO的HELP文件详细了解,这里就不展开介绍了.LINGO的主要功能特色为:既能求解线性规划问题,也有较强的求解非线性规划问题的能力;输入模型简练直观;运算速度快、计算能力强;内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述大规模的优化模型;将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;并且能方便地与Excel、数据库等其他软件交换数据.LINGO的语法规定:(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2)每个语句必须以分号“;”结束,每行可以有许多语句,语句可以跨行;(3)变量名称必须以字母(A~Z)开头,由字母、数字(0~9)和下划线所组成,长度不超过32个字符,不区分大小写;(4)可以给语句加上标号,例如[OBJ] MAX=200*X1+300*X2;(5)以惊叹号“!”开头,以分号“;”结束的语句是注释语句;(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7)LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两个语句可以省略.实验目的1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINGO求解;2.掌握灵敏度分析以及资源的影子价格的相关分析方法.实验数据与内容问题1.1某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需设备台时及对甲、乙两种原材料的消耗,有关数据如表1.1.问:应如何安排生产计划,使工厂获利最大?.问题1.2 某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g ,矿物质3g ,维生素8mg ,该公司能买到5种不同的饲料,每种饲料1kg 所含各种营养成分和成本如表1.2所示,如果每个小动物每周食用饲料不超过52kg ,求既能满足动物生长需要,又使总成本最低的饲料配方.实验指导问题1.1设计划生产两种产品分别为,则建立线性规划问题数学模型B A ,21,x x ⎪⎪⎩⎪⎪⎨⎧≥≤≤≤++=0,12416482.32max 21212121x x x x x x t s x x S 在LINGO 的MODEL 窗口内输入如下模型:model :max =2*x1+3*x2;x1+2*x2<=8;4*x1<=16;4*x2<=12;end选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message ”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO 的Help ).改正错误以后再求解,如果语法通过,LINGO 用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status ”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close 关闭窗口,屏幕上出现标题为“Solution Report ”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.求解结果:Global optimal solution found at iteration: 5Objective value: 14.00000Variable Value Reduced CostX1 4.000000 0.000000X2 2.000000 0.000000Row Slack or Surplus Dual Price1 14.00000 1.0000002 0.000000 1.5000003 0.000000 0.12500004 4.000000 0.000000该报告说明:运行5步找到全局最优解,目标函数值为14,变量值分别为.“Reduced Cost ”的含义是需缩减成本系数或需增加利润系数(最优解中取值非零的决策变量的Reduced Cost 值等于零).“Row ”是输入模型中的行号,目标函数是第一行;“Slack or Surplus ”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“124,2==x x ≤”的不等式,右边减左边的差值为Slack (松弛),对于“”的不等式,左边减右边的差值为Surplus (剩余),当约束条件两边相等时,松弛或剩余的值等于零.“Dual Price ”的意思是对偶价格(或称为影子价格),上述报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品2单位,所需设备8台时已经饱和,对偶价格1.5的含义是:如果设备增加1台时,能使目标函数值增加1.5.报告中Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位,所需原材料乙8公斤还剩余4公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为0.≥问题1.2设需要饲料分别为 kg ,则建立线性规划数学模型:54321,,,,A A A A A 54321,,,,x x x x x 123451234512345123451234512345min 0.20.70.40.30.50.320.6 1.8600.10.050.020.20.0530.050.10.020.20.088.52,,,,0S x x x x x x x x x x x x x x x x x x x x s t x x x x x x x x x x =++++++++≥⎧⎪++++⎪⎪≥++++⎨⎪++++≤⎪≥⎪⎩≥ 在LINGO 的MODEL 窗口内输入如下模型:Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3;0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8;x1+x2+x3+x4+x5<52;求解输出结果如下:Global optimal solution found at iteration: 4Objective value: 22.40000Variable Value Reduced CostX1 0.000000 0.7000000X2 12.00000 0.000000X3 0.000000 0.6166667X4 30.00000 0.000000X5 10.00000 0.000000Row Slack or Surplus Dual Price1 22.40000 -1.0000002 0.000000 -0.58333333 4.100000 0.0000004 0.000000 -4.1666675 0.000000 0.8833333因此,每周每个动物的配料为饲料、、分别为12、30和10kg ,合计为52,可使得饲养成本达到最小,最小成本为22.4元;不选用饲料和的原因是因为这两种饲料的价格太高了,没有竞争力.“Reduced Cost ”分别等于0.7和0.617,说明当这两种饲料的价格分别降低0.7元和0.62元以上时,不仅选用这两种饲料而且使得饲养成本降低.从“Slack or Surplus”可以看出,蛋白质和维生素刚达到最低标准,矿物质超过最低标准4.12A 4A 5A kg kg kg 1A 3A g ;从“Dual Price”可以得到降低标准蛋白质1单位可使饲养成本降低0.583元,降低标准维生素1单位可使饲养成本降低4.167元,但降低矿物质的标准不会降低饲养成本,如果动物的进食量减少,就必须选取精一些的饲料但要增加成本,大约进食量降低1可使得饲养成本增加0.88元.kg 对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO 软件求解的灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵敏度分析结果,默认情况下这项功能是关闭的.想要激活它,必须运行LINGO|Options …命令,选择Gengral Solver ,在Dual Computation 列表框中,选择Prices and Ranges 选项并确定.对于例1.1问题进行灵敏度分析,结果如下:以下是灵敏度分析的结果Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable AllowableVariable Coefficient Increase DecreaseX1 2.000000 INFINITY 0.5000000X2 3.000000 1.000000 3.000000Righthand Side RangesRow Current Allowable AllowableRHS Increase Decrease2 8.000000 2.000000 4.0000003 16.00000 16.00000 8.0000004 12.00000 INFINITY 4.000000对于例1.2问题进行灵敏度分析,结果如下:Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable AllowableVariable Coefficient Increase DecreaseX1 0.2000000 INFINITY 0.7000000X2 0.7000000 INFINITY 0.1358974X3 0.4000000 INFINITY 0.6166667X4 0.3000000 1.400000 1.000000X5 0.5000000 0.1247059 INFINITYRighthand Side RangesRow Current Allowable AllowableRHS Increase Decrease2 60.00000 4.800000 4.8000003 3.000000 4.100000 INFINITY4 8.000000 0.3428571 0.48000005 52.00000 1.846154 1.411765思考题某投资公司拟制定今后5年的投资计划,初步考虑下面四个投资项目:项目A:从第1年到第4年每年年初可以投资,于次年年末收回成本,并可获利润15%;项目B:第3年年初可以投资,到第5年年末可以收回成本,并获得利润25%,但为了保证足够的资金流动,规定该项目的投资金额上限为不超过总金额的40%;项目C:第2年年初可以投资,到第5年年末可以收回成本,并获得利润40%,但公司规定该项目的最大投资金额不超过总金额的30%;项目D:5年内每年年初可以购买公债,于当年年末可以归还本金,并获利息6%.该公司现有投资金额100万元,请帮助该公司制定这些项目每年的投资计划,使公司到第5年年末核算这5年投资的收益率达到最大.建立线性规划问题的数学模型,并用LINGO求解.。
运筹学软件(LINGO)简介
目标与约束段
对于产品数量的平衡方程而言, 由于下标I=1时的约束关系 与I=2,3,4时有所区别(因为定义的变量INV是不包含INV(0)), 因 此把I=1的约束关系单独写出“INV(1)=10+RP(1)+OP(1)-DEM(1);”, 而对I=2,3,4对应的约束, 增加了一个逻辑表达式来刻划: @FOR(QUARTERS(I)|I#GT#1: INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););
② 变量定界函数 @GIN(X): @BIN(X): @FREE(X): 限制X为整数. 限制X为0或1. 取消对X的符号限制.
@BND(L,X,U): 限制 L ≤ X ≤ U .
注: 有关其它函数的介绍, 请参考LINGO的帮助文件.
4、运算符说明 ① 运算符 算数运算符: +(加法), -(减法或负号), *(乘法), /(除法), ^(求幂). 关系运算符: <(即<=,小于等于), >(即>=,大于等于). 注:优化模型中的约束一般没有严格小于、严格大于关系. =(等于),
逻辑运算符: #AND#(与), #EQ#(等于), #OR#(或), #NE#(不等于), #NOT#(非); #GT#(大于).
#GE#(大于等于), #LT#(小于),#LE#(小于等于).
注: 逻辑运算的结果为“真”(TRUE)和“假”(FALSE), LINGO 中用数字1代表TRUE, 其它值都是FALSE.
2、状态窗口说明(例1)
Variables(变量数量) Total(变量总数) Nonlinear(非线性变量) Integer(整数数量)
注:由于LINGO对中文操作系 统的兼容性不好, 所以有些 显示字符和单词被截掉了.
LINGO
• 目标与约束段 • 集合段(SETS ENDSETS) • 数据段(DATA ENDDATA) • 初始段(INIT ENDINIT) • 计算段(CALC ENDCALC)——LINGO9.0以上
优化模型与Lingo软件
LINGO模型 — 例:选址问题
某公司有6个建筑工地,位置坐标为(ai, bi) (单位:公里),
优化模型与Lingo软件
需要掌握的几个重要方面
1、掌握集合(SETS)的应用; 2、正确阅读求解报告; 3、正确理解求解状态窗口; 4、学会设置基本的求解选项(OPTIONS) ; 5、掌握与外部文件的基本接口方法
优化模型与Lingo软件
LINGO软件简介
LINGO模型的优点
•集成了线性(非线性)/连续(整数)/全局优化功能 •提供了灵活的编程语言(矩阵生成器)
数学规划
线性规划(LP) 二次规划(QP) 非线性规划(NLP)
0-1整数规划 一般整数规划
纯整数规划(PIP) 混合整数规划(MIP)
连续规划
整数规划(IP)
优化模型与Lingo软件
LINDO 公司软件产品简要介绍
美国芝加哥(Chicago)大学的Linus Schrage教授于1980 年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:
• ②设置成员资格过滤器。
优化模型与Lingo软件
sets: !学生集:性别属性sex,1表示男性,0表示 女性;年龄属性age. ;
students/John,Jill,Rose,Mike/:sex,age; !男学生和女学生的联系集:友好程度属性 friend,[0,1]之间的数。 ;
利用LINGO建立最优化模型
利用LINGO建立最优化模型洪文1,朱云鹃1,金震1,王其文21(安徽大学商学院 合肥 230039)2(北京大学光华管理学院 北京 100871)摘 要:本文借助于最优化软件LINGO建立了最小树、最短路、最大流、最小费用流和货郎担问题的LINGO模型,并对模型中的难点给出了注释。
利用本文提供的模型,可以很容易地求出上述5个最优化问题的最优解。
关键词:最小树、最短路、最大流、最小费用流、货郎担问题、LINGO中图分类号:0211.6 文献标识码:A 文章编号:0 引言求解最小树、最短路、最大流、最小费用流和货郎担问题的方法虽然很多,但是利用最优化求解软件LINGO建立相应的模型来求解上述5个问题是一种新的尝试。
本文建立的模型有两个突出的特点。
第一个特点是模型的数据与公式完全分离,这样使得问题的求解变得特别方便(对于不同的问题只要更换数据即可)。
第二个特点是这五个模型都是利用最优化求解软件LINGO编写而成,可进行快速求解。
1 LINGO简介LINGO是一个简单而实用的最优化软件。
利用线性和非线性最优化的方法,LINGO可以用公式简明地表示复杂的规划问题,并可以快速地求出问题的最优解。
LINGO是由美国芝加哥LINDO系统公司研制。
该公司根据用户信息、线性和非线性规划的理论和方法及计算机发展的需要不断推出新的版本。
目前LINGO已成为世界上最为流行的最优化软件之一。
LINGO在我国已经有了相当多的用户。
它的主要特点是:1)LINGO含有一系列的接口函数。
这些接口函数可用在文本文件、电子表格和数据库中,可与外部的输入/输出源进行连接。
2)LINGO可以直接嵌入到Excel中,也可以将Excel嵌入到LINGO模型中。
这样就可以将数据与模型分离,使得模型的维护和调试变得非常容易。
3)LINGO使用Windows的窗口展开优化分析功能,使用对话框展示各种功能。
清晰、直观、易学易用。
4)LINGO具有强大的计算功能。
优化建模与LINDOLINGO软件介绍59页
运行结果如下:
演示
Local optimal solution found at iteration:
73
Objective value:
-1.000000
Variable
Value
X1 0.9999995
X2 0.9999992
Reduced Cost 0.000000 0.000000
Row Slack or Surplus Dual Price
DEMO 8
运行结果如下:
演示
Global optimal solution found at iteration:
2
Objective value:
18.33333
Variable X1 X2 X3 X4
Value 8.333333 0.000000 0.000000 1.666667
Reduced Cost 0.000000 0.6666667 4.333333 0.000000
x — 决策变量
f(x) — 目标函数 gi(x) ,hj(x) — 约束条件
2
优化模型分类
线性规划(LP)
非线性规划(NLP)
二次规划(QP)
连续规划 离散规划
0-1 整数规划(ZOP) 纯整数规划(PIP)
混合整数规划(MIP)
当然还有其它规划,如: 随机规划,模糊规划 ,不确定规划, 半定 规划 等等!
11
运行结果如下:
Global optimal solution found at iteration:
Objective value:
11.00000
演示 0
Variable
Value
有关教材中的lingo软件简介
6.5 Lingo软件简介线性规划的求解方法非常复杂,用手工计算几乎是不可能的,只能求助于计算机。
Lingo、WinQSB等软件是比较著名的求解数学规划的工具软件。
WinQSB软件使用方法比较简单,只适用于规模比较小的问题,Lingo软件适用范围较广,本节主要介绍Lingo软件的使用。
Lingo软件是美国Lindo system公司开发的求解线性规划、整数规划和非线性规划的通用软件。
可在网站下载学习版。
对形式简单的模型,可直接输入模型求解;对复杂的模型可采用该软件提供的简单的语言进行描述后求解,现简要介绍该软件所提供的语言并举例说明其用法。
6.5.1 Lingo语言简述Lingo语言是数学模型描述语言,用Lingo语言对模型进行描述的过程类似于建立模型的过程,其最大特点是将模型与数据分开。
用Lingo所提供的语言对模型进行描述时,以“Model:”开始,以“End”结束,中间由五段组成。
第一段为设置段或集合段,由“Sets:”开始至“Endsets”为止,该段的功能等同于建立模型时设置参数和变量;第二段为数据段,由“Data:”开始至“Enddata”为止,该段的功能是将模型中所设置的参数赋值;第三段为目标和约束段,是对模型约束条件和目标函数的描述,是模型描述的核心;第四段为计算段,由“Calc:”开始至“EndCalc”为止;第五段为初始段,由“Init:”开始至“EndInit”为止,最后由End结束。
一般情况下,第四段、第五段不常用,本节仅介绍第一段~第三段。
Lingo语言采用英文字母(不分大小写),每条语句由算术运算符、关系运算符、逻辑运算符及其组成的表达式描述。
每条语句均需以“;”结束,可不分行。
为增强模型的易读性,Lingo语言用“!”作为注释语句的开始,以“;”为结束。
算术运算符有:+(加)、-(减)、×(乘)、÷(除)、∧(乘方)等;关系运算符有:<(即≤,小于等于)、=(等于)、>(即≥,大于等于)等;逻辑运算符有:#AND#(与)、#OR#(或)、#NOT#(非)、#EQ#(等于)、#NE#(不等于)、#GT#(大于)、#GE#(大于等于)、#LT#(小于)、#LE#(小于等于)。
优化模型与Lingo Lindo软件
Lingo/Lindo软件介绍
---Lingo
对前面的线性规划模型,编写Lingo程序如下:
点击图标
运行,屏幕上显示运行状态窗口如下:
对于Lingo运行状态窗口, 我们给于以下解释:
变量数目:变量总数 (Total)、非线型变量 数(Nonlinear)、整数 变量数(Integer) 约束变量:约束总数 ( Total )、非线性约束 个数(Nonlinear) 非线性系数数量:总数 ( Total )、非线性项的 系数个数(Nonlinear) 内存使用量:单位为千字节
① 除具备Lindo的全部功能外,还可以用于求解非线性规划问题;
② Lingo包含了内置的建模语言,允许以简练、直观的方式描述较大规 模的优化问题,模型中所需的数据可以以一定的格式保存在独立的 文件中。
事实上,Lindo公司目前已经将Lindo软件从其产品目 录中删除,而将Lindo软件的所有功能都在Lingo中得到了 支持,所以在不久的将来总有一天人们会废弃Lindo软件不 再使用,但Lingo的生命力应该还是很顽强的!
Infeasibility 约束不满足的量;0表示这个解是可行的 Objective 显示当前解的目标函数值 Best IP 显示整数规划当前解的最佳标函数值:N/A 表示无答案或无意义 显示分支定界算法已经计算的分支数: N/A 表示无答案或无意义
IP Bound 显示整数规划的界 Branches
Lingo/Lindo软件介绍
这套软件包由美国芝加哥大学的Linus Scharge教
授于1980年前后开发,专门用于求解最优化问题,后 经不断完善和扩充,并成立LINDO公司进行商业化运 作,取得了巨大的成功。全球《财富》杂志500强的企 业中,一半以上使用该公司产品,其中前25强企业中 有23家使用该产品。 该软件包功能强大,版本也很多,而我们 使用的只 是演示版(试用版),演示版与正式版功能基本上是 类似的,只是能够求解问题的规模受到限制,总变量数 不超过30个,这在我们目前的使用过程中,基本上是 足够。
LINGO优化软件
1、LINGO: 、 : 掌握集合(SETS)的应用;(重点 的应用; 重点 掌握集合 的应用 重点) 正确阅读求解报告; 正确阅读求解报告; 正确理解求解状态窗口; 正确理解求解状态窗口; 学会设置基本的求解选项(OPTIONS) ;(提高 提高) 学会设置基本的求解选项 提高 掌握与外部文件的基本接口方法. 提高) 掌握与外部文件的基本接口方法 (提高
所有决策变量为0-1变量 所有决策变量为 变量
4 5
即xij=1, 或xij=0 ,
Min
4
Z = ∑ ∑ c ij x ij
j =1 i =1
∑x
j =1
5
ij
≤ 1, i = 1,L5
= 1, j = 1, L 4
∑x
i =1
ij
4、非线性规划问题 整数非线性规划模型
Min x1 + x 2 + x3
2、整数规划(Integer Programming,简记 ) 整数规划( ,简记IP)
Max z = 2 x1 + 3 x 2 + 4 x3
s. t. 1.5x1 + 3x2 + 5x3 ≤ 600
280x1 + 250x2 + 400x3 ≤ 60000
x1 , x2 , x3为非负整数
3、0-1规划模型 、 规划模型
优化模型
实际问题中 Min (或Max ) z = f ( x ), x = ( x1 , Lx n )T 的优化模型 s.t. g i ( x ) ≤ 0, i = 1,2, L m x~决策变量 决策变量 数学规划 线性规划(LP) 线性规划 二次规划(QP) 二次规划 非线性规划(NLP) 非线性规划 连续规划 0-1整数规划 整数规划 一般整数规划 纯整数规划(PIP) 纯整数规划 混合整数规划(MIP) 混合整数规划 f(x)~目标函数 目标函数 gi(x)≤0~约束条件 ≤ 约束条件
