数学建模软件lingo示例共30页文档
- 格式:ppt
- 大小:2.94 MB
- 文档页数:3
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应用——旅游路线最短问题题目:从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,问如何安排旅游线路,使总旅程最短。
各城市之间的航线距离如下表:运用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进行优化建模和求解问题:**问题描述:**假设有一家制造公司,他们生产两种产品: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实验例子(例子来源:《运筹学教程》(第三版)胡运权主编清华大学出版社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注:做到此步后已得到满意解,可不必再往下求解,因为此时第三级优先因子已不能完全满足。
.例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. 简单的优化问题---- 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例题和答案
例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 高效的求解器可快速求解并分析结果。
§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然后点击工具条上的按钮即可。
解窗口说明例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 模型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个季度。