陈雄达-数学软件介绍-专2015-数模讲座102_第1页
陈雄达-数学软件介绍-专2015-数模讲座102_第2页
陈雄达-数学软件介绍-专2015-数模讲座102_第3页
陈雄达-数学软件介绍-专2015-数模讲座102_第4页
陈雄达-数学软件介绍-专2015-数模讲座102_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学软件介绍-LINGO同济大学陈雄达2015年9月5日提纲LINGO语言简单的例子规划建模的几个技巧竞赛实例LINGO软件建立及求解线性、非线性、整数规划仅需要提供模型,不需要算法模型包括:目标函数,极大化或者极小化决策变量,类型约束条件,等式或不等式混合泳接力队的选拔如何选拔队员组成4

100米混合泳接力队?

甲乙丙丁戊蝶泳1’06”857”21’18”1’10”1’07”4仰泳1’15”61’06”1’07”81’14”21’11”蛙泳1’27”1’06”41’24”61’09”61’23”8自由泳58”653”59”457”21’02”4混合泳接力队的选拔目标函数若选择队员i参加泳姿j的比赛,记xij=1,否则记xij=0

约束条件每人最多入选泳姿之一

每种泳姿有且只有1人混合泳接力队的选拔Model:Min=66.8*x11+57.2*x12+78.0*x13+70.0*x14+67.4*x15

+75.6*x21+66.0*x22+67.8*x23+74.2*x24+71.0*x25

+87.0*x31+66.4*x32+84.6*x33+69.6*x34+83.8*x35

+58.6*x41+53.0*x42+59.4*x43+57.2*x44+62.4*x45;x11+x12+x13+x14+x15=1;x21+x22+x23+x24+x25=1;x31+x32+x33+x34+x35=1;x41+x42+x43+x44+x45=1;x11+x21+x31+x41<=1;x12+x22+x32+x42<=1;x13+x23+x33+x43<=1;x14+x24+x34+x44<=1;x15+x25+x35+x45<=1;@bin(x11);@bin(x12);@bin(x13);@bin(x14);@bin(x15);@bin(x21);@bin(x22);@bin(x23);@bin(x24);@bin(x25);@bin(x31);@bin(x32);@bin(x33);@bin(x34);@bin(x35);@bin(x41);@bin(x42);@bin(x43);@bin(x44);@bin(x45);End混合泳接力队的选拔Model:!Arelayteamassignmentproblem;SETS:MAN/J,Y,B,D,W/;STYLE/Butterfly,Back,Breast,FreeLancer/;JOIN(STYLE,MAN):SPEED,INCLUDE;ENDSETSMIN=@SUM(JOIN(I,K):SPEED(I,K)*INCLUDE(I,K));@FOR(MAN(K):@SUM(STYLE(I):INCLUDE(I,K))<=1);@FOR(STYLE(I):@SUM(MAN(K):INCLUDE(I,K))=1);@FOR(JOIN:@BIN(INCLUDE));DATA:SPEED=66.857.278.070.067.475.666.067.874.271.087.066.484.669.683.858.653.059.457.262.4;ENDDATAEndLINGO基本语法注释行以感叹号(!)开始,并显示为绿色关键字和函数显示为蓝色其它为黑色每一个Lingo语句以分号(;)结束变量名以字母(a-z)开始,且忽略大小写区别点击Solve或者按Ctrl+s求解(万一出错会有出错报告),

弹出解答窗口LINGO中的集合集合:同样类型的变量,可以理解为向量需要在使用之前定义好简单的例子SETS:

Trucks/TR1..TR27/:Capacity;ENDSETS语法:类型名/下标/:变量名列表;LINGO中的集合衍生出的复杂集合SETS:

Product/XY/;

Machine/LM/;

Make(ProductMachine)/XL,XM,YM/;ENDSETSLINGO中的循环@FOR(Trucks(T):Capacity(T)<=3000);对于每一个Trucks类型的下标T,Capacity(T)<=3000;TOTALHAUL=@SUM(Trucks(J):Capacity(J));对于每一个Trucks类型的下标T,Capacity(T)的总和为TOTALHAUL;TOTALHAUL4=@SUM(Trucks(J)|J#LE#4:Capacity(J));对于每一个Trucks类型的不大于4的下标T,Capacity(T)的总和为TOTALHAUL4;LINGO中的数据SETS:SET1/A,B,C/:X,Y;ENDSETSDATA:X=1,2,3;Y=4,5,6;ENDDATALINGO中的变量类型除非另有说明,Lingo中的变量皆为非负;Lingo中有四种变量声明可以覆盖之前的类型:@GIN非负整数@BIN0/1变量@FREE实型变量,无非负要求@BND有界变量,例如

@BND(-1,X,1);LINGO中的数学函数@ABS(X)绝对值@SIGN(X)符号函数@EXP(X)指数函数@LOG(X)自然对数@SIN(X)正弦函数@COS(X)余弦函数@TAN(X)正切函数@FLOOR(X)朝零取整@LGM(X)

log((x-1)!)@SMAX(X1,X2,...,XN)最大值@SMIN(X1,X2,...,XN)最小值LINGO中的逻辑运算运算优先级#NOT#最高^*/+-#EQ##NE##GT##GE##LT##LE##AND##OR#>=<=最低杂项函数语法:

@IF(LOGICAL_CONDITION,True_value,False_value)Model:

MIN=COST;

COST=XCOST+YCOST;

XCOST=@IF(X#GT#0,100,0)+2*X;

YCOST=@IF(Y#GT#0,60,0)+3*Y;

X+Y>=30;

@Free(X);@Free(Y);

End例:值班表问题某医院需要聘请护士值夜班,每个护士连续值五个夜班,休息两天,周而复始。据统计,每天晚上需要值夜班的护士人数最少为18(周一),16,15,16,19,14,12(周日).如何重新安排可使得须值夜班的护士总人数达到最少?例:值班表问题从周i开始值夜班的护士人数为

xi,记周

i

所需人数

ni,则minz=x1+x2+x3+x4+x5+x6+x7s.t.x1+x4+x5+x6+x7>=n1x1+x2+x5+x6+x7>=n2x1+x2+x3+x6+x7>=n3x1+x2+x3+x4+x7>=n4x1+x2+x3+x4+x5>=n5x2+x3+x4+x5+x6>=n6x3+x4+x5+x6+x7>=n7

xi>=0,xi为整数例:值班表问题model:

sets:

days/mon,tue,wed,thu,fri,sat,sun/:need,start;

endsets

min=@sum(days:start);

@for(days(i):

@sum(days(j)|(j#gt#i+2)#or#(j#le#i#and#j#gt#i-5):start(j))>=need(i);

);

@for(days:@gin(start));data:

need=18,16,15,16,19,14,12;enddataend例:值班表问题model:

sets:

days/mon,tue,wed,thu,fri,sat,sun/:need,start;

endsets

min=@sum(days:start);

@for(days(i):@sum(days:start)

-start(@wrap(i+1,7))-start(@wrap(i+2,7))

>=need(i);

);

@for(days:@gin(start));data:

need=18,16,15,16,19,14,12;enddataend规划建模的几个技巧1.背包问题

n

件物品,第

j

件价值为

cj,重量为wj

如何选择装入一个容重为K

的背包,使其具有最大价值?

xj=1或者0,表示第j件是否装入背包中。

规划建模的几个技巧2.选址问题

假设某工厂有m

个客户,现规划中有n

个售后服务站备选地址。

j

个售后服务站的固定费用为cj,而它向第

i

个客户提供服务的代价为

dij.

在这n个售后服务站备选地址中选择若干个,指定各自的客户服务对象,使其总费用最低。规划建模的几个技巧其它

a)对于0/1变量xi,x1+x2+x4=1,{x1,x2,x4}中恰好有一个为1;

x1+x2+x4<=1,{x1,x2,x4}中至多有一个为1;

x2<=x4,如果2号入选,则4号必入选;

x2=x4,2号4号,要么同时选,要么都不选

b)约束ax>=b

和cx>=d

至少有一个成立(其中a,c,x>=0),

ax>=yb,cx>=(1-y)d,y=0or1.c)约束aix>=bi

至少有

k

个成立(其中ai,x>=0),aix>=yibi

,yi=0or1,y1+

y2

+…+

yn>=k.

d)x

只能取离散值{a1,…,

am},

x=y1

a1

+

y2

a2

+…+

ym

am

,yi=0or1,y1+y2+…+

ym=1.竞赛实例:储药柜的优化(2014D)竞赛实例:储药柜的优化竞赛实例:储药柜的优化为保证药品在储药槽内顺利出入,要求药盒与两侧竖向隔板之间、与上下两层横向隔板之间应留2mm间隙药盒在储药槽内推送过程中不会出现并排重叠、侧翻或水平旋转在忽略横向和竖向隔板厚度的情况下,建立数学模型,给出下面几个问题的解决方案。1.药房内的盒装药品种类繁多,药盒尺寸规格差异较大,附件1中给出了一些药盒的规格。请利用附件1的数据,给出竖向隔板间距类型最少的储药柜设计方案,包括类型的数量和每种类型所对应的药盒规格。竞赛实例:储药柜的优化药品编号长(mm)高(mm)宽(mm)1120762421257220312576214917115512572216120852071173726…………1919624525竞赛实例:储药柜的优化假设题目所给的数据准确无误药盒不变形横向与竖向隔板厚度忽略不计假设药盒的长、宽、高与储药柜的长、宽、高一一对应?药盒在传送中只考虑重叠、侧翻、水平旋转(不考虑前后翻转)竞赛实例:储药柜的优化决策变量:竖向隔板类型总数为n,各间距为xj,

yij=0,1表示药品i不/要放入槽j目标:计算隔板类型数固定时,竖向隔板间距最大值条件:药盒在槽内顺利移动不出现重叠不出现侧翻不出现水平旋转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论