数学建模软件lingo示例共30页文档
数学建模中lingo的使用

20桶牛奶生产A1, 30桶生产A2,利润3360元。
首页 上页 下页 返回
结果解释
OBJECTIVE FUNCTION VALUE
max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100;
1)
3360.000
VARIABLE
X1 X2
VALUE
Variable X1 X2 Row 1 2 3 4
Value 16.80000 22.30000
Reduced Cost 0.000000 0.000000
Slack or Surplus Dual Price 229.1000 1.000000 0.000000 2.200000 0.000000 0.1000000 53.90000 0.000000
首页上页返回下页资料仅供参考1桶桶牛奶3公斤a112小时8小时4公斤a2或或获利24元公斤获利16元公斤x1桶牛奶生产a1x2桶牛奶生产a2获利243x1获利164x2原料供应5021??xx劳动时间48081221??xx加工能力10031?x决策变量目标函数216472xxzmax??每天获利约束条件非负约束021?xx线性规划模型lp时间480小时至多加工100公斤a150桶牛奶每天首页上页返回下页资料仅供参考模型求解图解法x1x20abcdl1l2l3l4l55021??xx48081221??xx10031?x021?xx约束条件50
首页
上页
下页
返回
Lingo中的集
Lingo中集的定义语法: setname/member_list/:attribute_list; 说明: setname为集的名称; /member_list/为成员列表; attribute_list为属性列表。
数学建模软件lingo示例共32页

❖ 知识就是财富 ❖ 丰富你的人生
71、既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。——康德 72、家庭成为快乐的种子在外也不致成为障碍物但在旅行之际却是夜间的伴侣。——西塞罗 73、坚持意志伟大的事业需要始终不渝的精神。——伏尔泰 74、路漫漫其修道远,吾将上下而求索。——屈原 75、内外相应,言行相称。——韩非
数学建模软件lingo示例
11、用道德的示范来造就一个人,显然比用法律来约束他更有价值。—— 希腊
12、法律是无私的,对谁都一视同仁。在每件事上,她都不徇私情。—— 托马斯
13、公正的法律限制不了好的自由,因为好人不会去做法律不允许的事 情。——弗劳德
14、法律是为了保护无辜而制定的。——爱略特 15、像房子一样,法律和法律都是相互依存的。——伯克
数学建模必备知识——lingo处理实例(多目标问题)

一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 •用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@BND另行说明)。 •变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 •语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 •以感叹号开始的是说明语句(说明语句也需要以分号结束))。
LINGO中定义集合及其属性
LP模型在LINGO中的一个典型输入方式
以“MODEL:”开 始
集合定义部分从 (“SETS:”到 “ENDSETS” ): 定义集合及其属性 给出优化目标 和约束 集合定义部分从 (“DATA:”到 “ENDDATA” )
以“END”结 束
目标函数的定义方式 @SUM(集合(下标):关于集合的属性的表达式) 对语句中冒号“:”后面的表达式,按照“:”前 面的集合指定的下标(元素)进行求和。 本例中目标函数也可以等价地写成
LINGO软件的基本使用方法
内容提要
1. LINGO入门 2.在LINGO中使用集合
3. 运算符和函数
4. LINGO的主要菜单命令 5. LINGO命令窗口
6.习题
1. LINGO入门 2.在LINGO中使用集合
3. 运算符和函数
1. LINGO入门 4. LINGO的主要菜单命令 5. LINGO命令窗口
Lingo超经典案例大全

Lingo超经典案例大全LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”。
Lingo超强的优化计算能力在很多方面(线性规划、非线性规划、线性整数规划、非线性整数规划、非线性混合规划、二次规划等)比matlab、maple等强得多,Lingo编程简洁明了,数学模型不用做大的改动(或者不用改动)便可以直接采用Lingo语言编程,十分直观。
Lingo模型由4个段构成:(1)集合段(sets endsets);(2)数据段(data enddata);(3)初始段(init endinit);(4)目标与约束段。
Lingo的五大优点:1. 对大规模数学规划,LINGO语言所建模型较简洁,语句不多;2. 模型易于扩展,因为@FOR、@SUM等语句并没有指定循环或求和的上下限,如果在集合定义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件;3. 数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据部分即可,其它语句不变;4. “集合”是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是实际问题到数学量的抽象,它比C语言中的数组用途更为广泛。
5. 使用了集合以及@FOR、@SUM等集合操作函数以后可以用简洁的语句表达出常见的规划模型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加.一、求解线性整数规划、非线性整数规划问题:1.线性整数规划:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;@gin(x1);@gin(x2);end求得x1=3,x2=1,最大值为4.运用matlab求时可以发现有两组解:x1=3,x2=1和x1=2,x2=2。
通过验证也可知这两组解均满足。
Lingo软件与数学建模

变量数目:变量总数 (Total)、非线型变量 数(Nonlinear)、整数 变量数(Integer)
约束变量:约束总数 ( Total )、非线性约束 个数(Nonlinear)
非线性系数数量:总数 ( Total )、非线性项的 系数个数(Nonlinear)
内存使用量:单位为千字节
数据多,咋办?
value=1,1.2,0.9,1.1;
enddata
max=@sum(goods:weight*value);
@for(goods:@bin(x));
end
游泳
四名同学的混合泳接 力赛的四种成绩如左 表所示,确定如何分 配使成绩最佳。
蛙蝶自仰 泳泳由泳
泳
甲 99 60 59 73
线性规划
二次规划
非线性规划
LINGO软件的基本操作
双击快捷方式 即可计入程序编辑界面
Lingo软件介绍
➢解决一个简单的线性规划(LP)问题
max z 2x 3y 4x 3y 10
s.t. 3x 5y 12 x, y 0
LINGO软件介绍
点击图标
运行,屏幕上显示运行状态窗口如下: 对于LINGO运行状态窗口,
基 @EXP(X):指数函数(以自然对数e为底),返回eX的值
本 数 学
@ LOG(X):自然对数函数,返回X的自然对数值; @POW(X,Y):指数函数,返回XY的值;
函 @SQR(X):平方函数,返回X2的值;
数 @SQRT( X ):平方根函数,返回X的平方根;
@FLOOR(X):取整函数,返回X的整数部分(向靠近0 的方向取);
@GIN(X):限制X为整数.
0-1规划(线性规划)
Lingo的应用实例

Lingo应用——旅游路线最短问题题目:从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,问如何安排旅游线路,使总旅程最短。
各城市之间的航线距离如下表:运用lingo软件求解模型建立前问题分析:1.这是一个求路线最短的问题,题目给出了两两城市之间的距离,而在最短路线中,这些城市有的两个城市是直接相连接的(即紧接着先后到达的关系),有些城市之间就可能没有这种关系,所以给出的两两城市距离中有些在最后的最短路线距离计算中使用到了,有些则没有用。
这是一个0-1规划的问题,也是一个线性规划的问题。
2.由于每个城市去且仅去一次,最终肯定是形成一个圈的结构,这就导致了这六个城市其中有的两个城市是直接相连的,另外也有两个城市是不连接的。
这就可以考虑设0-1变量,如果两个城市紧接着去旅游的则为1,否则为0。
就如同下图实线代表两个城市相连为1,虚线代表没有相连为03. 因为每个城市只去一次,所以其中任何一个城市的必有且仅有一条进入路线和一条出去的路线。
求解:为了方便解题,给上面六个城市进行编号,如下表(因为北京是起点, 将其标为1)假设:设变量x ij 。
如果x ij =1,则表示城市i 与城市j 直接相连(即先后紧接到达关系),否则若x ij =0,则表示城市i 与城市j 不相连。
特别说明:x ij 和x ji 是同一变量,都表示表示城市i 与城市j 是否有相连的关系。
这里取其中x ij (I<j)的变量。
模型建立:由于这是一个最短路线的问题,且变量已经设好。
目标函数:min z=51*x12+78*x13+68*x14+51*x15+13*x16+56*x23+35*x24+21*x25+60*x26+21*x34+57*x35+70*x36+36*x45+68*x46+61*x56约束条件:1. 上面目标函数中的变量是表示两个城市是否直接相连接的关系,且最短路线是可以形成圈的,如下图实线代表两个城市相连为1,虚线代表没有相连为0如上图城市a和城市b有直接相连接的关系,所以之间变量为1,而城市a 与城市e则没有直接相连接的关系,之间变量为0。
lingo案例

LINGO是一种用于线性规划、整数规划、非线性规划、混合整数规划等数学建模和优化问题的软件工具。
它可以用于解决各种实际问题,包括生产计划、物流、资源分配、网络设计等。
以下是一个简单的LINGO案例,以帮助您了解如何使用LINGO进行优化建模和求解问题:**问题描述:**假设有一家制造公司,他们生产两种产品:A和B。
公司有两个工厂,每个工厂都有不同的生产能力和成本。
公司希望确定每个工厂应该生产多少产品A和B,以最大化利润,同时满足生产能力和市场需求的限制。
**问题数据:**- 工厂1的生产能力:最多生产500个A和300个B- 工厂2的生产能力:最多生产400个A和600个B- 产品A的利润:每个A产品的利润为30美元- 产品B的利润:每个B产品的利润为40美元- 生产一个A产品的成本:工厂1为10美元,工厂2为15美元- 生产一个B产品的成本:工厂1为12美元,工厂2为10美元- 市场需求:产品A的市场需求为600个,产品B的市场需求为800个**LINGO建模和求解:**在LINGO中,可以使用数学表达式来建立优化模型。
以下是一个LINGO模型的示例:```SETS:FACTORIES = 1..2;ENDSETSDATA:CAPACITY(FACTORIES) = 500 300400 600;PROFIT = 30 40;COST(FACTORIES) = 10 1512 10;DEMAND = 600 800;ENDDATAVARIABLES:X(FACTORIES) = 0;ENDVARIABLESMAX = @SUM(FACTORIES, PROFIT(FACTORIES) * X(FACTORIES))SUBJECT TOCAPACITY_CONSTRAINT(F)$(FACTORIES): @SUM(FACTORIES, COST(F, FACTORIES) * X(FACTORIES)) <= CAPACITY(F);DEMAND_CONSTRAINT(I)$(FACTORIES): @SUM(FACTORIES,X(FACTORIES)) >= DEMAND(I);POSITIVE_X(F)$(FACTORIES): X(F) >= 0;ENDSUBMODEL:MAX;SOLVE;```上述LINGO模型首先定义了SETS、DATA、VARIABLES和MAX,然后使用SUBJECT TO部分定义了约束条件,最后使用MODEL和SOLVE命令求解优化问题。
lingo及举例

location2
Lingo程序入门
LINGO模型的构成:4个段
集合段(SETS ENDSETS)
数据段(DATA ENDDATA)
LP:移到数据段
初始段(INIT ENDINIT)
目标与 约束段
局部最优:89.8835(吨公里 )
Lingo程序入门
Lingo举例
例4:匹配问题 某班8名同学准备分成4个调查队(每队两人)前往四个地区进行
高 ﹣(取反) ^ ﹡/
低 ﹢﹣
Lingo程序入门
(2)逻辑运算符 #not# 否定该操作数的逻辑值,#not#是一个一元运算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase #ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true 这些运算符的优先级由高到低为:
c=0.02 0.07 0.04 0.03 0.05;
b=7 3 10; enddata
5 i 1
ci
xi
5 i 1
Aji
xi
bj ,
j
1, 2, 3
min=@sum(feed(i):c(i)*x(i)); !定义目标函数并求最小化问题
@for(nutr( j):@sum(feed(i):a( j,i)*x(i))>=b( j)); !定义约束条件
Lingo例子(学生版)

Lingo实验例子(例子来源:《运筹学教程》(第三版)胡运权主编清华大学出版社2007年第三版) 一、线性规划及单纯形法、灵敏度分析例1 P28页例5 Lingo程序:max=2*x1+x2;5*x2<=15;6*x1+2*x2<=24;x1+x2<=5;例2 P44页习题1.7(1)Lingo程序:model:max=2*x1-x2+2*x3;x1+x2+x3>=6;-2*x1+x3>=2;2*x2-x3>=0;end其余课本上的例题和习题同学们自己动手编写程序并进行调试运行,分析运行结果。
二、运输问题例3 P82页例1 Lingo程序:model:sets:gy/g1..g3/:ai;xs/x1..x4/:dj;link(gy,xs):c,x;endsetsdata:ai=16,10,22; dj=8,14,12,14;c=4,12,4,112,10,3,98,5,11,6;enddatamin=@sum(link(i,j):c(i,j)*x(i,j) );@for(gy(i):@sum(xs(j):x(i,j))=ai (i));@for(xs(j):@sum(gy(i):x(i,j))=dj (j));end例4 P98页例5(转运)Lingo程序:model:sets:plant/x1..x5/:produce; customer/y1..y5/:require;link(plant,customer):c,x; endsetsdata:produce=60,90,50,50,50;require=50,50,50,80,70;c=-4,5,3,2,1005,-1,2,100,43,2-3,5,52,100,5-3,6100,4,5,6,-5;enddatamin=@sum(link:c*x);@for(plant(i):@sum(customer(j):x (i,j))=produce(i));@for(customer(j):@sum(plant(i):x (i,j))=require(j));end三、目标规划例5 P108页例2 Lingo程序:第一种做法分三步来完成第一步:考虑目标:min=11P d-model:min=dminus1;5*x1+10*x2<=60;x1-2*x2+dminus1-dplus1=0;4*x1+4*x2+dminus2-dplus2=36;6*x1+8*x2+dminus3-dplus3=48; end第二步:考虑目标:min=1122P d P d-++model:min=dminus1+dplus2;5*x1+10*x2<=60;x1-2*x2+dminus1-dplus1=0;4*x1+4*x2+dminus2-dplus2=36;6*x1+8*x2+dminus3-dplus3=48; end第三步:考虑目标:min=112233P d P d P d-+-++model:min=dminus1+dplus2+dminus3;5*x1+10*x2<=60;x1-2*x2+dminus1-dplus1=0;4*x1+4*x2+dminus2-dplus2=36;6*x1+8*x2+dminus3-dplus3=48;end注意:如果想要在上述各步中进行灵敏度分析,只需按快捷键Ctrl+R就可以得到相应的结果或者采用一个程序进行输值运算:model:sets:level/1..3/:P,z,goal;variable/1..2/:x;h_con_num/1..1/:b;s_con_num/1..3/:g,dplus,dminus; h_cons(h_con_num,variable):A;s_cons(s_con_num,variable):C;obj(level,s_con_num):wplus,wminu s;endsetsdata:P=? ? ?;goal=? ? 0;b=60;g=0 36 48;A=5 10;C=1 -2 4 4 6 8;wplus=0 0 00 1 00 0 0;wminus=1 0 00 0 00 0 1;enddatamin=@sum(level:P*z);@for(level(i):z(i)=@sum(s_con_nu m(j):wplus(i,j)*dplus(j))+@sum(s _con_num(j):wminus(i,j)*dminus(j ))); @for(h_con_num(i):@sum(variable( j):A(i,j)*x(j))<=b(i));@for(s_con_num(i):@sum(variable( j):C(i,j)*x(j))+dminus(i)-dplus( i)=g(i));@for(level(i)|i #lt#@size(level):@bnd(0,z(i),goal(i) ));end例6 P110页例4 Lingo程序:第一种做法分四步来完成第一步:考虑目标:min=11P d-model:min=dminus1;x1+2*x2+dminus1-dplus1=6;x1+2*x2+dminus2-dplus2=9;x1-2*x2+dminus3-dplus3=4;x2+dminus4-dplus4=2;end第二步:考虑目标:min=1122P d P d-++model:min=dminus1+dplus2;x1+2*x2+dminus1-dplus1=6;x1+2*x2+dminus2-dplus2=9;x1-2*x2+dminus3-dplus3=4;x2+dminus4-dplus4=2;end第三步:考虑目标:min= 1122335P d P d P d-+-++model:min=dminus1+dplus2+5*dminus3+3*d minus4;x1+2*x2+dminus1-dplus1=6;x1+2*x2+dminus2-dplus2=9;x1-2*x2+dminus3-dplus3=4;x2+dminus4-dplus4=2;end第四步:考虑目标:min= 1122334(53)P d P d P d d-+--+++model:min=dminus1+dplus2+5*dminus3+3*d minus4+dplus1;x1+2*x2+dminus1-dplus1=6;x1+2*x2+dminus2-dplus2=9;x1-2*x2+dminus3-dplus3=4;x2+dminus4-dplus4=2;end注:做到此步后已得到满意解,可不必再往下求解,因为此时第三级优先因子已不能完全满足。
lingo建模应用举例

.例1 某服务部门一周中每天需要不同数目的雇员:周一到周四每天至少需要50人,周五至少需要80人,周六和周日至少需要90人.现规定应聘者需连续工作5天,试确定应聘方案,即周一到周日每天聘用多少人,使在满足需要的条件下聘用总人数最少.模型:记7654321x x x x x x x ,,,,,,分别表示周一、周二、周三、周四、周五、周六、周日聘用的人数.∑==71i i x z min .⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧≥≥++++≥++++≥++++≥++++≥++++≥++++≥++++-为整数.,,,,,,,0909080505050507176543654325432174321763217652176541x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x .t .s 例2 某公司用A 和B 两种原油混合加工成甲、乙两种汽油.甲、乙两种汽油含原油A 的最低比例分别为50%和60%,每吨售价分别为4800元和5600元.该公司现有原油A 和B 的库存量分别为500吨和1000吨,还可以从市场上买到不超过1500吨的原油A .原油A 的市场价为:购买量不超过500吨时的单价为10000元/吨;购买量超过500吨但不超过1000吨时,超过500吨的部分8000元/吨;购买量超过1000吨时,超过1000吨的部分6000元/吨.该公司应如何安排原油的采购和加工.模型:设原油A 用于生产甲、乙两种汽油的数量分别为1211x x ,,原油B 用于生产甲、乙两种汽油的数量分别为2221x x ,,记321x x x ,,分别表示以价格10千元/吨、8千元/吨、6千元/吨采购的原油A 的吨数.()()()3212212211168106584x x x x x .x x .z max ++-+++=.()()1112123212211112112122212231112212212350010000.50.6..5000500000500x x x x x x x x x x x s t x x x x x x x x x x x x x +≤+++⎧⎪+≤⎪⎪≥⎪+⎪⎪⎪≥⎨+⎪⎪-=⎪-=⎪⎪≥⎪⎪≤≤⎩,,,,,,,,,,,,.例3 某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出.从钢管厂进货时得到的原料钢管都是19米长.(1)现有一客户需要50根4米长、20根6米长和15根8米长的钢管.应如何下料最省?(2)零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本,所以该零售商规定采用的不同切割模式不能超过3种.此外,该客户除需要(1)中的三种钢管外,还需要10根5米长的钢管.应如何下料最省? 模型1:钢管下料的合理切割模式i ∑==71i i x z min .⎪⎪⎩⎪⎪⎨⎧≥≥++≥+++≥++++-为整数.,,,015220325023471753654254321x x x x x x x x x x x x x .t .s模型2:用()321,,=i x i 表示按照第i 种模式切割的原料钢管的根数.设第i 种模式下每根原料钢管可生产4米长、5米长、6米长、8米长的钢管数量分别为1i r ,2i r ,3i r ,4i r .∑==31i i x z min .()⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎨⎧==≥≥≤+++≤≤+++≤≤+++≤≥++≥++≥++≥++-.,,,;,,为整数为整数,,,,,,,,4321321001986541619865416198654161520105031343332312423222114131211334224114333223113332222112331221111j i r x r r r r r r r r r r r r x r x r x r x r x r x r x r x r x r x r x r x r .t .s ij例4 有4名同学到一家公司参加三个阶段的面试:公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的).由于4名同学的专业背景不同,所以每人在三个阶段的面试时间也不同,如下表所示(单位:分钟).这4名同学约定他们全部面试完以后一起离开公司.假定现在时间是早晨8:00,问他们最早何时能离开公司?面试时间模型:记ij t 为第i 名同学参加第j 阶段面试需要的时间(已知),令ij x 表示第i 名同学参加第j 阶段面试的开始时刻(不妨记早上8:00为0时刻) ?(123,4123ij ==,,;,,),T 为完成全部面试所花的时间,用0—1变量iky 表示第k 名同学是否排在第i 名同学前面(1表示“是”,0表示“否”).{}33i i it x max T min +=.()⎪⎪⎪⎩⎪⎪⎪⎨⎧<====≥<==-≤-+<==≤-+==≤++.,,,,,,,或取.,,,,,,,.,,,,,,,,.,,,,,,,,.,,,,,,k i k i y j i x k i k j i y T x t x k i k j i Ty x t x j i x t x .t .s ikij ik ij kj kj ik kj ij ij j ,i ij ij 432321103214321043232114323212143211 或改写为T min()⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎨⎧<====≥<==-≤-+<==≤-+==≤++≥+≥+≥+≥+.,,,,,,,或取.,,,,,,,.,,,,,,,,.,,,,,,,,.,,,,,,,,,,k i k i y j i x k i k j i y T x t x k i k j i Ty x t x j i x t x t x T t x T t x T t x T .t .s ik ij ik ij kj kj ik kj ij ij j ,i ij ij 4323211032143210432321143232121432114343333323231313 例5 某市消防中心同时接到了三处火警报告.根据当前的火势,三处火警地点分别需要2辆、2辆和3辆消防车前去灭火.三处火警地点的损失将依赖消防车到达的及时程度:记ij t 为第j 辆消防车到达火警地点i 的时间,则三处火警地点的损失分别为:333231222112115893746t t t t t t t ++++,,.目前可供消防中心调度的消防车正好有7辆,分别属于三个消防站,可用消防车数量分别为3辆、2辆、2辆.消防车从三个消防站到三个火警地点所需时间如下表所示.消防中心应如何调度消防车,才能使总损失最小?消防站到三个火警地点所需时间(单位:分钟)模型:将每一火警地点视为与该火警地点所需消防车数目相同数目的需求点.记ij x 表示第i 个消防站是否向第j 个需求地点派车(1表示“是”,0表示“否”)(7654321321,,,,,,,,,==j i ).利用损失函数与已知到达时间可计算得到如下损失矩阵:损失矩阵∑∑===7131j i ij ij x c z min .⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧=======∑∑∑∑====.,,,,,,,,,,或取,,,.,,,,,,,3765432132110223765432117171271131j i x x x x j x .t .s ij j j j j j j i ij 例6 设有两个工厂A 、B ,产量分别为9,8个单位;四个顾客分别为1,2,3,4,需求量分别为3,5,4,5;三个仓库x ,y ,z .其中工厂到仓库、仓库到顾客的运费单价如下表所示.试求总运费最少的运输方案.工厂到仓库、仓库到顾客的运费单价说明:其中“—”表示两地无道路通行.模型:设有m 个工厂,l 个仓库,n 个顾客,i a 表示第i 个工厂的产量,k b 表示第k 个顾客的需求量,ij c 表示第i 个工厂到第j 个仓库的运费单价,jk d 表示第j 个仓库到第k 个顾客的运费单价,ij x 表示第i 个工厂到第j 个仓库的运量,jk y 表示第j 个仓库到第k 个顾客的运量.∑∑∑∑====+m i l j l j nk jk jk ij ij y d x c min 1111.⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧===≥≥===≥=≤∑∑∑∑====.,,,,,,,,,,,,,,,,,,,,,,,,,,,,n k l j m i y x n k b y l j y x m i a x .t .s jk ijk lj jk n k jk mi ij i lj ij 212121002121211111例7 在下图中,用点表示城市,现有A ,B 1,B 2,C 1,C 2,C 3,D 共7个城市.点与点之间的连线表示城市间有道路相连.连线旁的数字表示道路的长度.现计划从城市A 到城市D 铺设一条天然气管道,请设计出最小价格管道铺设方案.模型:用n 个顶点表示n 个城市,城市编号为i (n i ,,, 21=),()j i ,表示连接城市i 与j 的道路,其长度记为ij w ,E 为边集.设决策变量为ij x ,且()⎩⎨⎧=,否则.的路上,至城市位于城市,,当011n j i x ij 则最短路问题的数学规划表达式为()∑∈Ej i ijijx w min,.()()()()()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧∈-====∑∑∑∑∈∈∈∈.,,或取,,,,,,,,,,,E j i x n i x x x x .t .s ij E i j j ji E j i j ij En j jjn Ej j j 101321111 例8 现需要将城市s 的石油通过管道运送到城市t ,中间有4个中转站v 1,v 2,v 3,v 4,城市与中转站的连接以及管道的容量如图所示,求从城市s 到城市t 的最大流.模型:用n 个顶点表示n 个城市,城市编号为i (n i ,,, 21=),()j i ,表示连接城市i 与j 的弧,弧()j i ,上的容量记为ij c ,流量记为ij f ,A 为弧集.则最大流问题的数学规划表达式为v max .()()()()()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧∈≤≤-====∑∑∑∑∈∈∈∈.,,,,,,,,,A j i c f n i f f v f v f .t .s ij ij A i ,j j ji A j ,i j ij An ,j jjn Aj ,j j 013211。
lingo软件的使用具体例子

1
4
0
0
3
2
3
1
0
1
3
2
0
1
3
4
1
2
0
3
5
1
1
1
1
6
0
3
0
1
7
0
0
2
3
需求
50
20
15
约束 满足需求
4 x13 x22 x3x4x550 整数约束:
x22x4x53x620
x3x52x715
xi 为整数
钢管下料问题1
当余料没有用处时,通常以总根数最少为目标
目标2(总根数) M Z 2 i x 1 n x 2 x 3 x 4 x 5 x 6 x 7
客户需求
原料钢管:每根19米
4米50根
6米20根
8米15根
问题1. 如何下料最节省 ? 节省的标准是什么?
问题2. 客户增加需求:
5米10根
由于采用不同切割模式太多,会增加生产和管理成本, 规定切割模式不能超过3种。如何下料最节省?
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。
4米1根 6米1根
切割多少根原料钢管,最为节省?
两种 标准
1. 原料钢管剩余总余量最小 2. 所用原料钢管总根数最少
决策变量 xi ~按第i 种模式切割的原料钢管根数(i=1,2,…7)
目标1(总余量) M Z 1 3 i x 1 n x 2 3 x 3 3 x 4 x 5 x 6 3 x 7
模式 4米根数 6米根数 8米根数 余料
vk(xk,uk)gk(uk)
资源分配问题
Lingo的典型应用举例

假设预先准备的箱子总数为n个,即使每件物品单 独装一个箱子也够用,用决策变量yi=1或0表示第j个箱 子是用还是不用,用变量xij=1或0表示第i件物品是否放 入第j个箱子中,建立0-1规划模型如下:
n
min
z y j,
j1
n
w i x ij Cy
j , j 1,2 ,...,
n,
i1
s
表2.1 当前可供蔬菜养分含量(mg)和价格
养分
蔬菜
铁
A1 青 豆 0.45
A2 胡萝卜 0.45
A3 花 菜 0.65
A4 卷心菜 0.4
A5 芹 菜 0.5
A6 土 豆 0.5
每周最低需求 6
每份蔬菜所含养分数量
每份价格
磷 维生素A 维生素C 烟酸 (元)
20
415
22
0.3
2.1
28
4065
例2.1 某疗养院营养师要为某类病人拟定本周蔬菜类菜单, 当前可供选择的蔬菜品种、价格和营养成分含量,以及病 人所需养分的最低数量见表2.1所示。病人每周需14份蔬 菜,为了口味的原因,规定一周内的卷心菜不多于2份, 胡萝卜不多于3份,其他蔬菜不多于4份且至少一份。在满 足要求的前提下,制订费用最少的一周菜单方案。
.t
.
n
x ij 1 , i 1 , 2 ,...,
n,
j1
yj x ij
0或 0或
1, j 1, i,
j
1,2 ,..., n , 1,2 ,..., n .
例5.1 已知30个物品,其中6个长0.51m,6个长 0.27m,6个长0.26m,余下的12个长0.23m,箱子长为 1m。问最少需要多少个箱子才能把30个物品全部装进箱 子。
Lingo软件应用举例

Lingo 软件应用举例1. 简单的优化问题---- Lingo 软件的体验1.1 线性规划及线性整数规划例1. 在LINGO 中求解如下问题(线性规划):0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x %----------------------------------------------------------其LINGO 代码如下:min =2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;说明:(1) 在这里之所以没有对x1和x2进行非负的限制,是由于在默认情况下,Lingo 规定变量取非负实数(即非负要求,取值连续)(2) 若要求取整数,则函数@gin(x)限定x 取值为整数;(3) 若要求无约束,则函数@free(x)取消x 默认下界为0的限制,使x 可以取任意实数;(4) 若要求取非正数,则函数@bnd(L,x,U)可以限定L ≤x ≤U 。
%----------------------------------------------------------计算结果:Global optimal solution found at iteration: 2Objective value: 800.0000Variable Value Reduced CostX1 250.0000 0.000000X2 100.0000 0.000000Row Slack or Surplus Dual Price1 800.0000 -1.0000002 0.000000 -4.0000003 150.0000 0.0000004 0.000000 1.000000结果的解释:(1) “Global optimal solution found at iteration: 2”表示2次迭代后得到全局最优解。
数学建模值班lingo例题和答案

数学建模值班lingo例题和答案
例1
某工厂有两条生产线,分别用生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和 120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时成为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?
解:设两种产品的生产量分别为x和x,则
目标函数max z = 200x +300x,
例2
生产计划安排问题(@if函数的应用)。
某企业用A,B两种原油混合加工成甲、乙两种成品油销售。
数据见下表,表中百分比是成品油中原油A的最低含量。
成品油甲和乙的销售价与加工费之差分别为5和5.6(单位:千元/吨),原油A,B的采购价分别是采购量x(单位:吨)的分段函数
f(x)和g(x)(单位:千元/吨),该企业的现有资金限额为7200(千元),生产成品油乙的最大能力为2000吨。
假设成品油全部能销售出去,试在充分利用现有资金和现有库存的条件下,合理安排采购和生产计划,使企业的收益最大。
解:设原油A,B的采购量分别为x, y,原油A用于生产成品油甲、乙的数量分别为x,,原油B用于生产成品油甲、乙的数量分别为x1,x,则采购原油
A,B的费用分别为f(x)和g(x),目标函数是收益最大,约束条件有采购量约束,生产能力约束、原油含量约束、成品油与原油的关系、资金约束。
建立规划模型如下:
max z = 5(X1+x1)+5.6(X2+x2)- f(x)-g(x)。
全国数学建模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个收点的最小费用运输问题。
产销单位运价如下表。
单位 销地 运 价 产地B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 产量 A 1 6 2 6 7 4 2 5 9 60 A 24953858255A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量35 37 22 32 41 32 43 38使用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应用实例

解窗口说明例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。
生产数据如下表所示:若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。
max=60*desks+30*tables+20*chairs;8*desks+6*tables+chairs<=48;4*desks+2*tables+1.5*chairs<=20;2*desks+1.5*tables+.5*chairs<=8;tables<=5;求解这个模型,并激活灵敏性分析。
这时,查看报告窗口(Reports Window),可以看到如下结果。
“Global optimal solution found at iteration: 3”表示3次迭代后得到全局最优解。
“Objective value:280.0000”表示最优目标值为280。
“Value”给出最优解中各变量的值:造2个书桌(desks), 0个餐桌(tables), 8个椅子(chairs)。
所以desks、chairs是基变量(非0),tables是非基变量(0)。
“Slack or Surplus”给出松驰变量的值:第1行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束)第2行松驰变量 =24第3行松驰变量 =0第4行松驰变量 =0第5行松驰变量 =5“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。
其中基变量的reduced cost值应为0,对于非基变量 X j, 相应的 reduced cost值表示当某个变量X j 增加一个单位时目标函数减少的量( max型问题)。
本例中:变量tables对应的reduced cost值为5,表示当非基变量tables的值从0变为 1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。
lingo多目标规划模型

x1 x1
15 x2
d
1
d
1
40
x2
d
2Leabharlann d210x2
d
3
d
3
7
x1
,
x
2
,
d
j
,
d
j
0,
j
1,2,3
第4页/共92页
解:首先对应于第一优先等级,建立线性规划问题:
minz d1 用LINGO求解,得最优解=0,最优s值.t.为100。x具1 体x11求,5x解x22过,d程1d如,1d下1:d10 40
理, 。 因此四个方案的优劣性见表。
第29页/共92页
非劣性可以用下图说明。
图 多目标规划的劣解与非劣解
在图1中,max(f1, f2) .就 方案①和②来说,①的 f2 目标值比②大,但其目 标值 f1 比②小,因此无 法确定这两个方案的优 与劣。
在各个方案之间, 显然:④比①好,⑤比 ④好, ⑥比②好, ⑦比 ③好……。
当目标函数处于冲突状态时,就不会存在使所有目 标函数同时达到最大或最小值的最优解,于是我们只能 寻求非劣解。
第36页/共92页
二、多目标决策的非劣解的求解方法
为了求得多目标规划问题的非劣解,常常需要将 多目标规划问题转化为单目标规划问题去处理。实现 这种转化,有如下几种建模方法。
效用最优化模型 罚款模型 约束模型 目标规划模型
第25页/共92页
对于单目标决策问题的解一般具有全 序最优性,而多目标决策问题的可行方案 集中的各方案只有部分序而非全序,并且 一般不存在满足最优性的可行解,而只有 矛盾性,即,尽管某一个可行解能使n个目 标中的某个目标最优,但不可能使其他的
lingo教程(有样例)

Lingo 模型Lingo 是较好的最优化建模工具(详细使用说明见Lingo模型参考),Lingo 模型由两部分组成:(一) 目标(objective):最优化目标。
(二)限制条件(constraint). (下载网址:)1.我的食谱由四种食品组成:,果仁巧克力,冰淇淋,可乐,奶酪.一块果仁巧克力价格为50 美分,一杯冰淇淋价格为20美分, 一瓶可乐价格为30美分, 一快奶酪价格为80美分.我每天的营养最低需求: 500 卡路里,6 盎司巧克力,10 盎司〔讲评〕师:该问题的目标是什么?生:食谱中饮食的成本最低师:限制条件?生:满足每天卡路里,巧克力,糖,脂肪的最低需求师:选择哪些变量?生:果仁巧克力,冰淇淋,可乐,奶酪的数量( 参考模型:lingo-LP1.lg4)讨论:如果巧克力冰淇淋的价格变为原来的两倍,食谱将如何改动?练习:1.1.你决意生产两种糖果:硬糖和软糖,糖果仅由糖,坚果,和巧克力制成.你现在有100盎司糖,20盎司坚果,30盎司巧克力.软糖须含有至少20%的坚果.硬糖须含有至少10%的坚果和10%的巧克力.一盎司的软糖售价为25美分, 一盎司的硬糖售价为20美分. 试安排生产计划( 参考模型:lingo-LP1-1.lg4)1.2.某公司生产 A, B, C 三种产品,售价分别为: A, $10;B,$56;C,$100.生产一单位A,需1小时的劳力; 生产一单位 B,需2小时的劳力加上2单位的A; 生产一单位 C,需3小时的劳力加上1单位的B.现有40小时的劳力, 试安排生产计划.( 参考模型:lingo-LP1-2.lg4)2.Donovan公司生产一种电子产品.已知明年四季度的需求(须按时交货):季度1,4000件; 季度2,2000件; 季度3,3000件; 季度4,10000件;公司员工每年有一个季度休假,每个员工年薪为$30,000,每季度最多可生产500件产品.每个季度末公司须为每件存货付存储费$30.公司现有600件产品,如何安排明年的生产?〔讲评〕师:该问题的目标是什么?生:员工年薪与存储费总和最低师:限制条件?生:每季度初的库存与该季度生产量的和须满足该季度的需求师:如何表示员工总数?生甲:各季度上班的员工x(1),x(2),x(3),x(4)总和生乙:甲的总和是员工总数的3倍,因为每个员工工作3个季度。
数学建模软件lingo示例

该集合的属性x,y,e
———表示坐标(xj,yj) 、日储量ej
❖ 定义数组下标集合link(demand,supply)———表示6×2 个料场到建筑工地的连接
该集合的属性c
———表示每个料场与建筑工地之间供应计划c i j
数学建模课件
主讲人:孙云龙
Lingo 建模语言——集合段 数据段
❖ 建立下标集合
派生集合 基本集合
稀疏集合 稠密集合
元素列表法 元素过滤法 直接列举法 隐式列举法
SETS:
CITIES /A1,A2,A3,B1,B2/;
ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D;
ENDSETS
SETS:
STUDENTS /S1..S8/;
主讲人:孙云龙
location
sets: demand/1..6/:a,b,d; supply/1..2/:x,y,e; link(demand,supply):c;
需求
供应 连接
集合段
endsets
data: a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20;
6
11
❖(1)现有2料场,位于A(5,1),B(2,7),记(xj,yj),j=1,2, 日储 量ej各有20吨。
❖目标:制定每天的供应计划,即从A, B两料场分别向各工 地运送多少吨水泥,使总的吨公里数最小。
数学建模课件
主讲人:孙云龙
解:
目标:吨公里
约束:需求 供应
数学建模软件lingo示例

元素列表——稀疏集合
解:
目标:吨公里
约束:需求 供应
26
min
cij [(x j ai )2 ( y j bi )2 ]1/ 2
j 1 i1
2
s.t
cij di , i 1,..., 6
j 1
6
cij ej , j 1, 2
i 1
cij 0, i 1,..., 6, j 1, 2
决策变量:料场j到工地i的运量—— cij
——12维
线性规划模型
location
lingo——表达式?
1、Lingo建模语言
构成:4个段
❖ 目标与约束段 ❖ 集合段(SETS ENDSETS) ❖ 数据段(DATA ENDDATA) ❖ 初始段(INIT ENDINIT) ❖ (计算段 (CALC ENDCALC))
基本使用
MODEL: Title Location Problem;
需求点的位置 供需量
数据段
enddata
init:
endinit
初始点
初始段
m@ifnor=@(dseumma(nldi(n目ik标)(:i@,sju)m:c(s(uip,pjl)y*((j()x:(cj()-ia,(ji))))=^d2(+i();y)(j;)-b(i))^2)^(1/2));
@for(supply(i):@sum(demand(j):c(j,i))<=e(i);); @for(supply: @free(X); @free(Y); );
a
2 8.75 0.5 5.75 3 7.25
b
3 0.75 4.75 5