【文档说明】用Lingo软件编程求解规划问题解决方案.ppt,共(36)页,429.500 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45670.html
以下为本文档部分文字说明:
用Lingo软件编程求解规划问题什么是规划问题?求目标函数在约束条件下的最大值或最小值的问题,统称为规划问题。决策变量、约束条件、目标函数是线性规划的三要素.主要解决最优生产计划、最优分配、最优设计、最优决策、最佳管理等最优化问题。•线性规划•非线性规划•实数规划•整数规划
•0-1规划例1——加工奶制品的生产计划获利24元/公斤获利16元/公斤1桶牛奶3公斤A112小时8小时4公斤A2或50桶牛奶时间480小时至多加工100公斤A1每天:一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者
在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该
厂制订一个生产计划,使每天获利最大例1——加工奶制品的生产计划获利24元/公斤获利16元/公斤1桶牛奶3公斤A112小时8小时4公斤A2或50桶牛奶时间480小时至多加工100公斤A1每天:x1桶牛奶生产A1x2桶牛奶生产A2获利24×3x1获利16×4x2原料供应5
021xx劳动时间48081221xx加工能力10031x决策变量目标函数216472xxzMax每天获利约束条件非负约束0,21xx线性规划模型(LP)例1——加工奶制品的生产计划00100348081250211212
1xxxxxxx216472xxz求的最大值?-10010203040506070-10010203040506070Linearprogramx1x2O3x1=100x1+x2=5012x1+8x2=480z=72x1+64x2=72
0改变z,即移动直线z=72x1+64x2并使之与蓝色区域有交叉,即可找到最大值。见动画001003480812502112121xxxxxxx216472xxz求的最
大值?用Lingo软件求解Lingo结果中其它项的意思!更多信息例1——加工奶制品的生产计划例2——军队供给问题corps需求量3537223241324338拥有量B1B2B3B4B5B6B7B8depot60A16267425955A24953858251A35219743
343A47673927141A52395726552A655228143军队有某种先进武器302台分别放在6个补给站(depot)中,现由于战争需要,8个军团(corps)分别需要此种武器数目如表中所示,并且给出了从各补给站送一台武器到任一军团的费用,问如何运输可使成本最小?capa
city(i)V(i)demand(j)d(j)cost(i,j)c(i,j)number(i,j)n(i,j)例2——军队供给问题corps需求量3537223241324338拥有量B1B2B3B4B5B6B7B8depot60A16267425955A24953858251A3
5219743343A47673927141A52395726552A655228143capacity(i)V(i)demand(j)d(j)cost(i,j)c(i,j)number(i,j)n(i,j)
.8,,1,6,,1,8,,1,6,,1..min61816181jjdNiiVNjiNNtsCNTCiijjijijiji
jij例2——军队供给问题用Lingo软件求解结果Lingo软件LINGOHelp:LINGOisasimpletoolforutilizingthepoweroflinearandnonlinearopti
mizationtoformulatelargeproblemsconcisely,solvethem,andanalyzethesolution.Optimizationhelpsyoufindtheanswerthatyieldsthebestresult;attainsthehigh
estprofit,output,orhappiness;ortheonethatachievesthelowestcost,waste,ordiscomfort.Oftentheseproblemsinvolvemakingthemost
efficientuseofyourresources——includingmoney,time,machinery,staff,inventory,andmore.Lingo是一个可以简洁地阐述、解决和分析复杂问题的简便工具。其特点是程序执行速度很快,易于输入、修改、求解和分析一个数学规划问
题。Lingo软件•集合段(SETSENDSETS)•目标与约束段•数据段(DATAENDDATA)•初始段(INITENDINIT)LINGO模型的构成:4个段Lingo是一个可以简洁地阐述、解决和分析复杂问题的简
便工具。其特点是程序执行速度很快,易于输入、修改、求解和分析一个数学规划问题。Lingo软件——集合•集是相联系的对象的集合,比如工厂、消费者群体、交通工具和雇工等等;•集是LINGO建模语言的基础,是程序设计最强有力的基本构件目标与约束段
;•借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型;•集有成员和属性。集合派生集合基本集合稀疏集合稠密集合元素列表法元素过滤法直接列举法隐式列举法Li
ngo软件——集合setname[/member_list/][:attribute_list];setname(parent_set_list)[/member_list/][:attribute_list];Lingo软件——基本集合元素的列举setname[/member_list/
][:attribute_list];sets:students/JohnJill,RoseMike/:sex,age;endsets集成员不放在集定义中,而在随后的数据部分来定义。sets:students:sex,age;endsetsdata:stud
ents,sex,age=John116Jill014Rose017Mike113;enddata一个原始集是由一些最基本的对象组成的。类型隐式列举格式示例示例集合的元素数字型1..n1..51,2,3,4,5字符-数字型strin
gM..stringNCar101..car208Car101,car102,…,car208星期型dayM..dayNMON..FRIMON,TUE,WED,THU,FRI月份型monthM..monthNOCT..JANOCT
,NOV,DEC,JAN年份-月份型monthYearM..monthYearNOCT2001..JAN2002OCT2001,NOV2001,DEC2001,JAN2002Lingo软件——基本集合元素的隐式列举Lingo软件—
—派生集setname(parent_set_list)[/member_list/][:attribute_list];一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。•稠密集:派生集成员由父集成员所有组合构成;当成员列表被忽略
时•稀疏集:其成员为父集成员所有组合构成的集合的一个子集。如上例显式:links(depot,corps)/d1c2,d2c3,d3c6,d4c3,d5c1,d6c8/:cost,number;过滤:links(dep
ot,corps)|capacity(&1)#ge#demand(&2):cost;Lingo软件——数据段与初始段数据段:输入集成员和数据,提供了模型相对静止部分和数据分离的可能性。object_list=v
alue_list;对象列=数值列;初始段:为决策变量设置初始值。在初始部分输入的值仅被LINGO求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。以“init:
”开始,以“endinit”结束。初始部分的初始声明规则和数据部分的数据声明规则相同。Lingo软件——目标与约束段四个集合循环函数:FOR、SUM、MAX、MIN@function(setname[(set_index
_list)[|condition]]:expression_list);例子:.8,,1,6,,1,8,,1,6,,1..min61816181jjdNiiVNjiNNtsCN
TCiijjijijijijijLingo软件——目标与约束段四个集合循环函数:FOR、SUM、MAX、MIN@function(setname[(set_index_list)[|condition]]:ex
pression_list);[objective]MAX=@SUM(PAIRS(I,J):BENEFIT(I,J)*MATCH(I,J));@FOR(STUDENTS(I):[constraints]@SUM(PAIRS(J,K)|J#EQ#I#OR#K#EQ#I:MATCH(J,
K))=1);@FOR(PAIRS(I,J):@BIN(MATCH(I,J)));MAXB=@MAX(PAIRS(I,J):BENEFIT(I,J));MINB=@MIN(PAIRS(I,J):BENEFIT(I,J));PAI
RSJIJIMATCJIBENEFIT),(),(*),(1),(),(IKorIJPAIRSKJKJMATCH例子:优先级运算符最高#NOT#—(负号)^*/+—(减法)#EQ##NE##GT##GE#
#LT##LE##AND##OR#最低<(=)=>(=)三类运算符:算术运算符逻辑运算符关系运算符Lingo软件——运算符与优先级主要用于集循环函数的条件表达式中形成模型的一个约束条件,指定一个表达式的左边是否等于、小于等于、或者大于等于右边。针对数值进行操作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中的最小值数学函数Lingo软件——函数变量定
界函数@bin(x)限制x为0或1@bnd(L,x,U)限制L≤x≤U@free(x)取消对变量x的默认下界为0的限制,即x可以取任意实数@gin(x)限制x为整数例3——Lingo与Excel的连接corps需求量353722324
1324338拥有量B1B2B3B4B5B6B7B8depot60A16267425955A24953858251A35219743343A47673927141A52395726552A655228143capacity(i)V(i)demand(
j)d(j)cost(i,j)c(i,j)number(i,j)n(i,j).8,,1,6,,1,8,,1,6,,1..min61816181jjdNiiVNjiNNtsCN
TCiijjijijijijij@ole函数是从EXCEL中引入或输出数据的接口函数,它是基于传输的OLE技术。OLE传输直接在内存中传输数据,并不借助于中间文件。例3——Lingo与Excel的连接@OLE可以同时读集成员和集属性(读写)@OLE只能读一维或二维的Rang
es绝对路径@ole(‘data.xls’);相对路径@ole(‘D:\data.xls’);某矿厂现有6个采矿能力不同的矿厂和3个精加工能力不同的加工厂,其坐标及生产能力如表所示。现需新建一所粗加工厂,要求运输成本最
低,试求出其位置。例4——工厂选址问题矿厂123456xa1.258.750.55.7537.25xb1.250.754.7556.57.75output3547611精加工厂123xc3.156.59.25xd0.259.57.35ca
pacity14121001234567891001234567891031226122jijxdyjxcxjcapacityixbyixaxioutputCost非线性规划模型某班准备从5名游泳队员中选择4人组成
接力队,参加学校的4*100m混合泳接力比赛。5名队员4中用字的百米平均成绩如下表所示,问应如何让选拔队员组成接力队?例5——0-1规划问题甲乙丙丁戊蝶泳1`0657``21`181`101`07仰泳1`151`061`071`141`11蛙泳1`2
71`061`241`091`23自由泳58``653``59``457``21`02我们可以:用穷举法:一种组合一种组合的试!数据量大,需要时间长!用Lingo中的0-1规划求解!例5——0-1规划问题甲乙丙丁戊蝶泳1`0
657``21`181`101`07仰泳1`151`061`071`141`11蛙泳1`271`061`241`091`23自由泳58``653``59``457``21`02五个人的成绩:甲乙丙丁戊分别为队员i=1,2,3,4,5;记:蝶
泳、仰泳、蛙泳、自由泳分别为泳姿j=1,2,3,4;记队员i的第j种泳姿的百米最好成绩为Cij,并将成绩以秒为单位列出为:例5——0-1规划问题五个人的成绩:CijI=1I=2I=3I=4I=5J=16657.0
3787067J=27566677471J=38766846983J=458.15359.0757.0362引入0-1变量Xij,表示队员i是否参加了第j种泳姿的比赛,即的比赛没参加泳姿队员的比赛参加了泳姿队员ji0ji1ijX5141ijijijCXT目标:使其最小那么,混
合泳接力比赛的成绩就可以表示为:•Xij只能为0或1•每一个人最多只能入选四种泳姿之一:•每种泳姿必须有一人而且只能有1人入选:例5——0-1规划问题五个人的成绩:CijI=1I=2I=3I=4I=5J=1
6657.03787067J=27566677471J=38766846983J=458.15359.0757.0362变量Xij满足的约束条件为:;5,4321for141,,,iXjij;4321for151,,,jXiij例5——0-1
规划问题最终问题:.4,3,2,11,5,4,3,2,11,4,3,2,1,5,4,3,2,11,0..min51415141jXiXjiXtsCXTiijjijijijijij问题求解:Lingo8.0软件求解,
调用excel表中的数据。Summary•规划问题•Lingo软件的集合、函数、语法•几个例子•加工奶制品的生产计划(线性规划)•运输问题(整数规划)•工厂选址问题(非线性规划)•游泳比赛问题(0-1规划)Thankyouforyourattention!AnyQues
tions?