实验2Lingo求解运输问题与整数规划
运筹学实验报告
运筹学实验报告中南民族⼤学管理学院学⽣实验报告课程名称:《管理运筹学》年级:2011级专业:会计学指导教师:胡丹丹学号:姓名:实验地点:管理学院综合实验室2012学年⾄2013学年度第2 学期⽬录实验⼀线性规划建模及求解实验⼆运输问题实验三⽣产存储问题实验四整数规划问题实验五⽬标规划实验六⽤lingo求解简单的规划问题实验七实验⼋实验九实验⼗实验(⼀)线性规划建模及求解实验时间:2013-5-18实验内容:某轮胎⼚计划⽣产甲、⼄两种轮胎,这两种轮胎都需要在A、B、C三种不同的设备上加⼯。
每个轮胎的⼯时消耗定额、每种设备的⽣产能⼒以及每件产品的计划如表所⽰。
问在计划内应该如何安排⽣产计划,使总利润最⼤?(1)请建⽴模型。
(2)使⽤“管理运筹学”软件求得结果。
根据“管理运筹学”软件结果,回答下列问题:(3)哪些设备的⽣产能⼒已使⽤完?哪些设备的⽣产能⼒还没有使⽤完?其剩余的⽣产能⼒为多少?(4)三种设备的对偶价格各为多少?请对此对偶价格的含义给予说明。
(5)保证产品组合不变的前提下,⽬标函数中的甲产品产量决策变量的⽬标系数的变化范围是多少?(6)当⼄中轮胎的单位售价变成90元时,最优产品的组合是否改变?为什么?(7)如何在A、B、C三台设备中选择⼀台增加1⼩时的⼯作量使得利润增加最多,请说明理由。
(8)若增加设备C的加⼯时间由180⼩时增加到200⼩时,总利润是否变化?为什么?(9)请写出约束条件中常数项的变化范围。
(10)当甲种轮胎的利润由70元增加到80元,⼄种轮胎的利润从65元增加到75元,请试⽤百分之⼀百法则计算其最优产品组合是否变化?并计算新利润(11)当设备A的加⼯时间由215降低到200,⽽设备B的加⼯时间由205增加到225,设备C的加⼯时间由180降低到150,请试⽤百分之⼀百法则计算原来的⽣产⽅案是否变化,并计算新利润。
实验相应结果:解:(1)设计划⽣产甲⼄两种轮胎的数量分别为x1,x2. 此线性规划的数学模型如下:Max f =70*x1+65*x2约束条件:7*x1+3*x2≤2154*x1+5*x2≤2052*x1+4*x2≤180x1 ≥0 , x2 ≥0(2)⽤运筹学软件求的结果如下:则当x1=20, x2=25时,最⼤利润为3025元(3)由(2)中结果可知,设备A和设备B的⽣产能⼒已经使⽤完,设备C 的⽣产能⼒还没有⽤完,还剩40h。
运筹学实验
《运筹学》上机实验报告学 院 机电工程学院 专 业 工业工程 指导教师 吴小东 班 级 工业10-1班 学生姓名 林 金 铎 学生学号实验时间 2012-2013学年第一学期实验一 使用LINGO 求解线性规划问题班级:工业10-1班 姓名:林金铎 学号: 评阅成绩: 已知如下线性规划模型:123max 303540z x x x =++1231231231233251823412229,,0x x x x x x x x x x x x ++≤⎧⎪++≤⎪⎨++≤⎪⎪≥⎩ 一、利用集的方法编写上述线性规划模型的LINGO 程序。
在LINGO 软件模型中编写本题的程序如下图1-1所示所示。
图1-1 LINGO 模型窗口截图点击LINGO 菜单下的Solve 选项,LINGO 软件求解所输入的模型,得到LINGO 运行状态窗口如图1-2所示图1-2 LINGO运行状态窗口截图运行结束后,关闭LINGO运行状态窗口,获得LINGO软件的结果报告窗口,如图1-3、1-4所示。
图1-3 LINGO结果报告窗口截图(一)图1-4 LINGO结果报告窗口截图(二)二、根据编写的程序,回答以下问题:1、哪些是原始集答:var(j), const(i)是原始集2、哪个是派生集该派生集是稠密集还是稀疏集该派生集有多少个成员答:A(i,j)是派生集,属于稠密集合,共有9个成员3、属性值“5”是属于成员(b1,x3)还是(b3,x1)的属性值答:属于成员(b1,x3)的属性值三、根据程序的运行结果,回答以下问题:1、全局最优值是否已经找到该值是多少答:已经找到,最优值为1652、该模型求解一共迭代了多少次答:共迭代了2次3、在求解结果的界面中,Variable、Value、Reduced Cost、Row、Slack or Surplus 和Dual Price分别表示什么答:Variable表示运算时各定义变量的取值;Value表示给出最优解中各变量的值;Reduced Cost表示列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率;Row表示行数;Slack or Surplus 表示给出松驰变量的值;Dual Price表示当对应约束有微小变动时, 目标函数的变化率。
整数规划与运输问题
式中 xj-Myj≤0 是处理 xj 与 yj 一对变量之间逻辑关系的特殊约束,M为 任意大的正数当 xj>0 时 yj=1 ,当 xj=0 时,为使 Z 最小化,有 yj=0。 此问题为混合整数规划问题。
3.1.3 整数规划问题的解
从数学模型上看整数规划似乎是线性规划的一种特殊形式,求解 只需在线性规划的基础上,通过舍入取整,寻求满足整数要求的 解即可。但实际上两者却有很大的不同,通过舍入得到的解(整 数)也不一定就是最优解,有时甚至不能保证所得到的解是整数 可行解。
举例说明。
例3.5 设整数规划问题如下
max Z x1 x2
s.t.
146xx11
9x2 3x2
51 1
x1
,
x2
0且为整数
首先不考虑整数约束,得到线性规划问题(一般称为松弛问题)。
max Z x1 x2
s.t.
146xx11
9x2 3x2
(LP)
n
aij x j
j 1
bi
(i 1, 2,
, m)
x
j
0,(
j
1, 2,
, m)
1、先不考虑整数约束,解( IP )的松弛问题( LP ),可能得到以下情况 之一:
⑴.若( LP )没有可行解,则( IP )也没有可行解,停止计算。
⑵.若( LP )有最优解,并符合( IP )的整数条件,则( LP )的最优 解即为( IP )的最优解,停止计算。
max Z 3x1 2x2
max Z 3x1 2x2
2x1 x2 9
(
用Lingo求解整数(0-1)规划模型.
Lingo 程序: max=2*x1+5*x2+3*x3+4*x4;
-4*x1+x2+x3+x4>=0; -2*x1+4*x2+2*x3+4*x4>=1; x1+x2-x3+x4>=1; @bin(x1);@bin(x2);@bin(x3);@bin(x4);
温州大学城市学院
例 2 用Lingo软件求解整数规划问题 min z 2 x1 5 x2 3 x3
温州大学城市学院
注意:
Lingo 默认变量的取值从0到正无穷大,
变量定界函数可以改变默认状态.
@free(x): 取消对变量x的限制(即x可取任意实数值)
例 4 求函数 z x 2 y 2 的最小值.
2 2
温州大学城市学院 例 4 求函数 z x 2 y 2 的最小值.
,8
温州大学城市学院
温州大学城市学院
上机作业题
要求:
1、建立数学模型,
2、用lingo循环语句编写程序.
温州大学城市学院
上机作业题
人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一 定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
成绩 甲 乙 丙 丁 自由泳 / s 56 63 57 55 蛙泳 / s 74 69 77 76 蝶泳 / s 61 65 63 62 仰泳 / s 63 71 67 62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩?
温州大学城市学院
实验二利用Lingo求解整数规划及非线性规划问题
例 3 用Lingo软件求解非线性规划问题
min z x1 12 x2 22
x2 x1 1,
x1
x2
2,
x1
0,
x2
0.
Lingo 程序: min= x1-1 ^2+ x2-2 ^2;
x2-x1=1;
x1+x2<=2;
注意: Lingo 默认变量的取值从0到正无穷大, 变量定界函数可以改变默认状态. @free x : 取消对变量x的限制 即x可取任意实数值
例 4 求函数 zx22y22 的最小值.
例 4 求函数 zx22y22 的最小值.
解: 编写Lingo 程序如下:
min= x+2 ^2+ y-2 ^2; @free x ; 求得结果: x=-2, y=2
二、Lingo 循环编程语句
1 集合的定义 包括如下参数: 1 集合的名称.
sets: endsets
44
minZ
aijxij
i1 j1
4
xij
1
j 1,2,3,4
s.t.
i 1 4
xij
1
i 1,2,3,4
j1
xij 0或1 i, j 1,2,3,4
LINGO程序如下:
MODEL: SETS: person/A,B,C,D/; task/1..4/; assign person,task :a,x; ENDSETS DATA: a=1100,800,1000,700,
77
63
67
丁
55
76
62
62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩
实验二、利用Lingo求解整数规划及非线性规划问题
建立数学模型
根据问题要求,建立相应的数 学模型,包括变量、约束条件 和目标函数等。
设置求解参数
根据问题类型和规模,设置合 适的求解参数,如求解方法、 迭代次数等。
分析结果
对求解结果进行分析,验证模 型的正确性和可行性。
05 整数规划问题求解实例
问题描述
问题背景
本实验将通过一个具体的整数规划问题,展示如 何利用LINGO软件进行求解。该问题涉及到生产 计划优化,目标是最大化利润,同时满足一系列 约束条件。
非线性规划问题在数学、经济、工程等领域有广泛应用,是 优化理论的重要分支。
非线性规划问题的分类
01
按照目标函数的性质,非线性规划问题可以分为凸规
划和凹规划。
02
按照约束条件的性质,非线性规划问题可以分为无约
束、有界约束和等式约束三种类型。
03
按照决策变量的个数,非线性规划问题可以分为单变
量和多变量规划。
定义约束条件
使用LINGO的FROM命令定义约束条件,例 如FROM ... >= ... (P1,P2,...,Pn)。
LINGO求解过程及果分析
求解过程
在LINGO中输入模型,选择求解器类型(整数求解器或线性求解器),设置参数,运行求解过程。
结果分析
查看求解结果,包括最优解、最优值、松弛解等信息。对结果进行解释和评估,分析其对实际问题的 指导意义。
07 实验总结与展望
实验收获与体会
掌握整数规划和非线性规划的基本概念和求解方法
通过实验,我深入了解了整数规划和非线性规划的基本概念和求解方法,包括数学模型 建立、约束条件处理、目标函数处理等。
熟练使用LINGO软件
通过实验,我掌握了LINGO软件的基本操作和参数设置,能够利用LINGO软件求解整 数规划和非线性规划问题。
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=11Pd-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=1122Pd 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=112233Pd 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=11Pd-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=1122Pd 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= 1122335Pd 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)Pd 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解线性规划和整数规划
用LINGO 解线性规划和整数规划在工程技术、经济管理、科学研究和日常生活等许多领域中,人们经常遇到的一类决策问题是:在一系列客观或主观限制条件下,寻求使关注的某个或多个指标达到最大(或最小)的决策。
例如:★ 结构设计要在满足强度要求条件下选择材料的尺寸,使其总重量最轻; ★ 资源分配要在有限资源约束下制定各用户的分配数量,使资源产生的总效益最大;★ 运输方案要在满足物资需求和装载条件下安排从各供应点到各需求点的运量和路线,使运输总费用最低;★ 生产计划要按照产品工艺流程和顾客需求,制定原料、零件、部件等订购、投产的日程和数量,尽量降低成本使利润最高。
上述这种决策问题通常称为优化问题。
人们解决这些优化问题的手段大致有以下几种:1.依赖过去的经验判断面临的问题。
这似乎切实可行,并且没有太大的风险,但是其处理过程会融入决策者太多的主观因素,难以客观地加以描述,从而无法确认结果的最优性。
2.做大量的试验反复比较。
这固然比较真实可靠,但是常要花费太多的资金和人力,而且得到的最优结果基本上离不开开始设计的试验范围。
3.用数学建模的方法建立数学规划模型求解最优决策。
虽然由于建模时要作适当的简化,可能使得结果不一定完全可行或达到实际上的最优,但是它基于客观规律和数据,又不需要多大的费用,具有前两种手段无可比拟的优点。
如果在此基础上再辅之以适当的经验和试验,就可以期望得到实际问题的一个比较圆满的回答,是解决这种问题最有效、最常用的方法之一。
1.1.1 数学规划模型数学规划模型一般有三个要素:一是决策变量,通常是该问题要求解的那些未知量,不妨用n 维向量12n x (x ,x ,,x )'= 表示;二是目标函数,通常是该问题要优化(最小或最大)的那个目标的数学表达式,它是决策变量x的函数,这里抽象地记作f(x);三是约束条件,由该问题对决策变量的限制条件给出,即x允许取值的范围x∈Ω,Ω称可行域,常用一组关于x的不等式(也可是等式)g i(x)≤0(I=1,2,…,m)来界定。
用lingo编程解决运输问题大全
LINGO是用来求解线性和非线性优化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用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 1B 2B 3B 4B 5B 6B 7B 8产量A 1 6 2 6 7 4 2 5 9 60 A 2 4 9 5 3 8 5 8 2 55 A 3 5 2 1 9 7 4 3 3 51 A 4 7 6 7 3 9 2 7 1 43 A 5 2 3 9 5 7 2 6 5 41 A 6 5 5 2 2 8 1 4 3 52 销量3537223241324338使用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程序
X56 0.000000 32.00000
X64 30.00000 0.000000
X65 0.000000 3.000000
X66 0.000000 7.000000
Row Slack or Surplus Dual Price
1 1620.000 -1.000000
x12+x22+x32+x42+x52=50;
x13+x23+x33+x43+x53=40;
x14+x24+x34+x44+x54+x64=30;
x15+x25+x35+x45+x55+x65=30;
x16+x26+x36+x46+x56+x66=20;
LINGO求解结果:
Global optimal solution found.
供应限制:x11+x12+x13+x14+x15+x16=20
x21+x22+x23+x24+x25x+26=30
x31+x32+x33+x34+x35+x36=50
x41+x42+x43+x44+x45+x46=40
x52+x53+x54+x55+x56=30
x64+x65+x66=30
需求限制:x11+x21+x31+x41=30
10 0.000000 -10.00000
实验2 Lingo求解运输问题和整数规划
a=1.25,8.75,0.5,5.75,3,7.25;
b=1.25,0.75,4.75,5,6.5,7.75;
!quantities of the demand and supply(供需量);
d=3,5,4,7,6,11; e=20,20;
x,y=5,1,2,7;
enddata
init:
!initial locations for the supply(初始点);
j 1 i1
2
s.t.
cij d i , i 1,...,6
线性规划模型
j 1
6
cij e j ,
j 1,2
用例中数据计算,
最优解为
i
i 1
12 345 6
ci1( 料 场A) 3 5 0 7 0 1
ci2( 料 场B) 0 0 4 0 6 10
总吨公里数为136.2
Location(Linear)
月份型 monthM..monthN OCT..JAN
OCT, NOV, DEC, JAN
年份月份型
monthYearM..mo nthYearN
OCT2001..JAN OCT2001,
2002
NOV2001,
DEC2001,
JAN2002
运算符的优先级
三类运算符:
算术运算符 逻辑运算符 关系运算符 优先级 运算符 最高 #NOT# —(负号)
43
A5
2 3 9 57 2
65
41
A6
5 5 2 28 1
43
52
销量
35 37 22 32 41 32 43 38
a i 6 0 5 5 1 4 3 4 1 5 2 30 2 b i 3 3 5 2 7 3 2 4 2 3 1 4 2 3 3 2 88
运筹学上机实践报告
运筹学实验报告姓名:学号:班级:采矿1103 教师:(一)实验目的(1)学会安装并使用Lingo软件(2)利用Lingo求解一般线性,运输,一般整数和分派问题(二)实验设备(1)计算机(2)Lingo软件(三)实验步骤(1)打开已经安装Lingo软件的计算机,进入Lingo(2)建立数学模型和Lingo语言(3)输入完Lingo语言后运行得出求解结果LINGO是用来求解线性和非线性规化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
当在windows 下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面是以一般线性,运输,一般整数和分派问题为例进行实验的具体操作步骤:A:一般线性规划问题数学模型(课本31页例11)求解线性规划:Minz=-3x1+x2+x3x1 - 2x2 + x3<=11-4x1 + x2 + 2x3>=3-2x1 + x3=1x1,x2,x3>=0打开lingo输入min=-3*x1+x2+x3;x1-2*x2+x3<=11;-4*x1+x2+2*x3>=3;-2*x1+x3=1;End如图所示:然后按工具条的按钮运行出现如下的界面,也即是运行的结果和所求的解:然后按工具条的按钮运行出现如下的界面,也即是运行的结果和所求的解:结果:由longo运行的结果界面可以得到该运输问题的最优运输方案为运6吨至B3;运2吨至B4,由A2运4吨至B1,运1吨至B4,由A3运吨7至B2,运4吨至B4,此时对应的的目标函数值为Z=6X4+2X11+4X2+1X9+7X5+4X6+122(元)到此lingo软件已经解决了运输问题。
用lingo编程解决运输问题大全
LINGO是用来求解线性和非线性优化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用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 1B 2B 3B 4B 5B 6B 7B 8产量A 1 6 2 6 7 4 2 5 9 60 A 2 4 9 5 3 8 5 8 2 55 A 3 5 2 1 9 7 4 3 3 51 A 4 7 6 7 3 9 2 7 1 43 A 5 2 3 9 5 7 2 6 5 41 A 6 5 5 2 2 8 1 4 3 52 销量3537223241324338使用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然后点击工具条上的按钮即可。
运筹学:运输问题
数学与计算科学学院实验报告
实验项目名称运输问题
所属课程名称运筹学B
实验类型综合实验
实验日期
班级
成绩
附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求.
3.实验原理:简要说明本实验项目所涉及的理论知识。
4.实验环境:实验用的软、硬件环境。
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。
概括整个实验过程。
对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明.对于创新性实验,还应注明其创新点、特色。
6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7.实验结论(结果):根据实验过程中得到的结果,做出结论。
8.实验小结:本次实验心得体会、思考和建议.
9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价.。
用LINGO求解整数规划
用LINGO求解整数规划在LINGO中,输入总是以model:开始,以end结束;中间的语句之间必须以“;”分开;LINGO不区分字母的大小写;目标函数用MAX=…;或MIN=…;给出(注意有等号“=”)。
在LINDO中所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用@bin(x1)表示x1为0-1整数。
在现在的LINDO中,默认设置假定所有变量非负。
函数中变量的界定:@GIN(X):限制X为整数@BIN(X):限定变量X为0 或1。
@FREE(X):取消对x的符号限制(即可取任意实数包括负数)@BND(L,X,U):限制L<= X <= ULINGO提供了大量的标准数学函数:@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@smax(x1,x2,…,xn)? 返回x1,x2,…,xn中的最大值@smin(x1,x2,…,xn)? 返回x1,x2,…,xn中的最小值例1:整数规划模型在LINGO中可以如下输入:model:Max=5*x1+8*x2;!*号不能省略x1+x2<=6;!约束条件和目标函数可以写在model:与end之间的任何位置5*x1<=45-9*x2;@gin(x1);@gin(x2); !和LINDO不同,不能写在end之后end运行后同样得到最优解为x1=0,x2=5,最优值为40。
例2:在线性规划中的应用max Z =5X1+3X2+6X3,s.t.X1 +2 X2 + X3 ≤182 X1 + X2 +3 X3 =16X1 + X2 + X3 =10X1 ,X2 ≥0 , X3 为自由变量应用LINGO 来求解该模型,只需要在 lingo窗口中输入以下信息即可:max=5*x1+3*x2+6*x3;x1+2*x2+x3<=18;2*x1+x2+3*x3=16;x1+x2+x3=10;@free(x3);然后按运行按钮,得到模型最优解,具体如下:Objective value: 46.00000Variable Value Reduced Costx1 14.00000 0.000000x2 0.000000 1.000000x3 -4 .000000 0.000000由此可知,当 x1 =14 , x2 =0 , x3 =-4 时,模型得到最优值,且最优值为 46。
数学实验报告整数规划
一、实验目的1. 理解整数规划的概念及其应用领域。
2. 掌握整数规划问题的建模方法。
3. 熟悉求解整数规划问题的软件工具。
4. 分析整数规划问题的求解结果,评估模型的合理性。
二、实验背景整数规划是一种数学规划方法,用于求解含有整数变量的优化问题。
在实际应用中,整数规划广泛应用于物流、生产、金融、资源分配等领域。
本实验以一个简单的整数规划问题为例,介绍整数规划的基本原理和求解方法。
三、实验内容1. 问题背景某公司需要从两个供应商处采购A、B两种原材料,分别用于生产C、D两种产品。
供应商1提供的A原材料每吨价格为1000元,B原材料每吨价格为1500元;供应商2提供的A原材料每吨价格为1200元,B原材料每吨价格为1600元。
公司生产C产品每吨需要A原材料0.5吨,B原材料0.3吨,利润为2000元;生产D产品每吨需要A原材料0.2吨,B原材料0.4吨,利润为1500元。
公司每月最多可采购A 原材料50吨,B原材料30吨。
要求:(1)确定从两个供应商处采购A、B原材料的数量,使公司利润最大。
(2)求出满足条件的整数解。
2. 建立数学模型(1)变量设x1为从供应商1处采购A原材料的数量(吨),x2为从供应商2处采购A原材料的数量(吨),y1为从供应商1处采购B原材料的数量(吨),y2为从供应商2处采购B原材料的数量(吨),z为公司的总利润。
(2)目标函数最大化公司的总利润:Max z = 2000 (0.5 x1 + 0.2 x2) + 1500 (0.3 y1 + 0.4 y2)(3)约束条件① 采购的原材料数量限制:x1 + x2 ≤ 50y1 + y2 ≤ 30② 采购的原材料价格限制:1000 x1 + 1200 x2 ≤ 1000001500 y1 + 1600 y2 ≤ 150000③ 变量取值范围:x1, x2, y1, y2 ≥ 0x1, x2, y1, y2 为整数3. 求解整数规划问题(1)使用软件工具本实验采用Lingo软件求解整数规划问题。
运筹学实验一 线性规划求解、运输问题、整数规划求解 2
西华大学上机实验报告一、实验目的掌握线性规划求解的基本方法,熟悉灵敏度分析的步骤和内容;掌握运输问题的模型,概念,求解方法;掌握整数规划的算法。
在熟悉lingo软件基本功能基础上,能熟练操作,正确完成模型求解过程及分析过程。
二、实验内容或设计思想1.lingo软件或运筹学实验软件的安装及菜单熟悉了解.2.lingo软件或运筹学实验软件应用内容之:任选几种不同类型的LP输入计算程序,运行求解;完成产销平衡的运输问题求解;求解任一整数规划。
三、实验环境与工具计算机、lingo软件四、实验过程或实验数据1用lingo求解线性规划某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。
生产数据如下表所示:用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: 3Objective value: 280.0000Variable Value Reduced Cost DESKS 2.000000 0.000000 TABLES 0.000000 5.000000 CHAIRS 8.000000 0.000000 Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.0000002 用运筹学软件求解线性规划(例子和过程参照教材)使用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;enddataendGlobal optimal solution found at iteration: 20Objective value: 664.0000Variable Value Reduced Cost CAPACITY( WH1) 60.00000 0.000000 CAPACITY( WH2) 55.00000 0.000000 CAPACITY( WH3) 51.00000 0.000000 CAPACITY( WH4) 43.00000 0.000000 CAPACITY( WH5) 41.00000 0.000000 CAPACITY( WH6) 52.00000 0.000000 DEMAND( V1) 35.00000 0.000000 DEMAND( V2) 37.00000 0.000000 DEMAND( V3) 22.00000 0.000000 DEMAND( V4) 32.00000 0.000000 DEMAND( V5) 41.00000 0.000000 DEMAND( V6) 32.00000 0.000000 DEMAND( V7) 43.00000 0.000000 DEMAND( V8) 38.00000 0.000000 COST( WH1, V1) 6.000000 0.000000 COST( WH1, V2) 2.000000 0.000000 COST( WH1, V3) 6.000000 0.000000 COST( WH1, V4) 7.000000 0.000000 COST( WH1, V5) 4.000000 0.000000 COST( WH1, V6) 2.000000 0.000000 COST( WH1, V7) 9.000000 0.000000 COST( WH1, V8) 5.000000 0.000000 COST( WH2, V1) 4.000000 0.000000 COST( WH2, V2) 9.000000 0.000000 COST( WH2, V3) 5.000000 0.000000 COST( WH2, V4) 3.000000 0.000000 COST( WH2, V5) 8.000000 0.000000 COST( WH2, V6) 5.000000 0.000000 COST( WH2, V7) 8.000000 0.000000 COST( WH2, V8) 2.000000 0.000000 COST( WH3, V1) 5.000000 0.000000 COST( WH3, V2) 2.000000 0.000000 COST( WH3, V3) 1.000000 0.000000 COST( WH3, V4) 9.000000 0.000000 COST( WH3, V5) 7.000000 0.000000 COST( WH3, V6) 4.000000 0.000000 COST( WH3, V7) 3.000000 0.000000 COST( WH3, V8) 3.000000 0.000000 COST( WH4, V1) 7.000000 0.000000 COST( WH4, V2) 6.000000 0.000000 COST( WH4, V3) 7.000000 0.000000 COST( WH4, V4) 3.000000 0.000000 COST( WH4, V5) 9.000000 0.000000 COST( WH4, V6) 2.000000 0.000000 COST( WH4, V7) 7.000000 0.000000 COST( WH4, V8) 1.000000 0.000000 COST( WH5, V1) 2.000000 0.000000 COST( WH5, V2) 3.000000 0.000000 COST( WH5, V3) 9.000000 0.000000COST( WH5, V4) 5.000000 0.000000 COST( WH5, V5) 7.000000 0.000000 COST( WH5, V6) 2.000000 0.000000 COST( WH5, V7) 6.000000 0.000000 COST( WH5, V8) 5.000000 0.000000 COST( WH6, V1) 5.000000 0.000000 COST( WH6, V2) 5.000000 0.000000 COST( WH6, V3) 2.000000 0.000000 COST( WH6, V4) 2.000000 0.000000 COST( WH6, V5) 8.000000 0.000000 COST( WH6, V6) 1.000000 0.000000 COST( WH6, V7) 4.000000 0.000000 COST( WH6, V8) 3.000000 0.000000 VOLUME( WH1, V1) 0.000000 5.000000 VOLUME( WH1, V2) 19.00000 0.000000 VOLUME( WH1, V3) 0.000000 5.000000 VOLUME( WH1, V4) 0.000000 7.000000 VOLUME( WH1, V5) 41.00000 0.000000 VOLUME( WH1, V6) 0.000000 2.000000 VOLUME( WH1, V7) 0.000000 6.000000 VOLUME( WH1, V8) 0.000000 6.000000 VOLUME( WH2, V1) 1.000000 0.000000 VOLUME( WH2, V2) 0.000000 4.000000 VOLUME( WH2, V3) 0.000000 1.000000 VOLUME( WH2, V4) 32.00000 0.000000 VOLUME( WH2, V5) 0.000000 1.000000 VOLUME( WH2, V6) 0.000000 2.000000 VOLUME( WH2, V7) 0.000000 2.000000 VOLUME( WH2, V8) 0.000000 0.000000 VOLUME( WH3, V1) 0.000000 4.000000 VOLUME( WH3, V2) 11.00000 0.000000 VOLUME( WH3, V3) 0.000000 0.000000 VOLUME( WH3, V4) 0.000000 9.000000 VOLUME( WH3, V5) 0.000000 3.000000 VOLUME( WH3, V6) 0.000000 4.000000 VOLUME( WH3, V7) 40.00000 0.000000 VOLUME( WH3, V8) 0.000000 4.000000 VOLUME( WH4, V1) 0.000000 4.000000 VOLUME( WH4, V2) 0.000000 2.000000 VOLUME( WH4, V3) 0.000000 4.000000 VOLUME( WH4, V4) 0.000000 1.000000 VOLUME( WH4, V5) 0.000000 3.000000 VOLUME( WH4, V6) 5.000000 0.000000 VOLUME( WH4, V7) 0.000000 2.000000 VOLUME( WH4, V8) 38.00000 0.000000 VOLUME( WH5, V1) 34.00000 0.000000 VOLUME( WH5, V2) 7.000000 0.000000 VOLUME( WH5, V3) 0.000000 7.000000 VOLUME( WH5, V4) 0.000000 4.000000 VOLUME( WH5, V5) 0.000000 2.000000 VOLUME( WH5, V6) 0.000000 1.000000 VOLUME( WH5, V7) 0.000000 2.000000 VOLUME( WH5, V8) 0.000000 5.000000 VOLUME( WH6, V1) 0.000000 3.000000 VOLUME( WH6, V2) 0.000000 2.000000 VOLUME( WH6, V3) 22.00000 0.000000 VOLUME( WH6, V4) 0.000000 1.000000 VOLUME( WH6, V5) 0.000000 3.000000 VOLUME( WH6, V6) 27.00000 0.000000 VOLUME( WH6, V7) 3.000000 0.000000 VOLUME( WH6, V8) 0.000000 3.000000Row Slack or Surplus Dual Price1 664.0000 -1.0000002 0.000000 -4.0000003 0.000000 -5.0000004 0.000000 -4.0000005 0.000000 -3.0000006 0.000000 -7.0000007 0.000000 -3.0000008 0.000000 -6.0000009 0.000000 -2.00000010 0.000000 3.00000011 22.00000 0.00000012 0.000000 3.00000013 0.000000 1.00000014 0.000000 2.00000015 0.000000 2.000000model:!3发点4收点运输问题;sets:warehouses/wh1..wh3/: capacity;vendors/v1..v4/: 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 ;demand=35 37 22 72 ;cost=6 2 6 74 95 35 2 1 9;enddataendGlobal optimal solution found at iteration: 5Objective value: 561.0000Variable Value Reduced Cost CAPACITY( WH1) 60.00000 0.000000 CAPACITY( WH2) 55.00000 0.000000 CAPACITY( WH3) 51.00000 0.000000 DEMAND( V1) 35.00000 0.000000 DEMAND( V2) 37.00000 0.000000 DEMAND( V3) 22.00000 0.000000 DEMAND( V4) 72.00000 0.000000 COST( WH1, V1) 6.000000 0.000000 COST( WH1, V2) 2.000000 0.000000 COST( WH1, V3) 6.000000 0.000000 COST( WH1, V4) 7.000000 0.000000 COST( WH2, V1) 4.000000 0.000000 COST( WH2, V2) 9.000000 0.000000 COST( WH2, V3) 5.000000 0.000000 COST( WH2, V4) 3.000000 0.000000 COST( WH3, V1) 5.000000 0.000000 COST( WH3, V2) 2.000000 0.000000 COST( WH3, V3) 1.000000 0.000000 COST( WH3, V4) 9.000000 0.000000 VOLUME( WH1, V1) 6.000000 0.000000 VOLUME( WH1, V2) 37.00000 0.000000 VOLUME( WH1, V3) 0.000000 4.000000 VOLUME( WH1, V4) 17.00000 0.000000 VOLUME( WH2, V1) 0.000000 2.000000 VOLUME( WH2, V2) 0.000000 11.00000 VOLUME( WH2, V3) 0.000000 7.000000 VOLUME( WH2, V4) 55.00000 0.000000 VOLUME( WH3, V1) 29.00000 0.000000 VOLUME( WH3, V2) 0.000000 1.000000 VOLUME( WH3, V3) 22.00000 0.000000 VOLUME( WH3, V4) 0.000000 3.000000 Row Slack or Surplus Dual Price1 561.0000 -1.0000002 0.000000 -6.0000003 0.000000 -2.0000004 0.000000 -2.0000005 0.000000 -7.0000006 0.000000 0.0000007 0.000000 4.0000008 0.000000 1.000000示例3 分配问题model:!4个工人,4个工作的分配问题;sets:workers/w1..w4/;jobs/j1..j4/;links(workers,jobs): cost,volume;endsets!目标函数;min=@sum(links: cost*volume);!每个工人只能有一份工作;@for(workers(I):@sum(jobs(J): volume(I,J))=1;);!每份工作只能有一个工人;@for(jobs(J):@sum(workers(I): volume(I,J))=1;);data:cost= 6 2 6 74 95 35 2 1 97 6 7 3 ;enddataendGlobal optimal solution found at iteration: 0Objective value: 10.00000Variable Value Reduced Cost COST( W1, J1) 6.000000 0.000000 COST( W1, J2) 2.000000 0.000000 COST( W1, J3) 6.000000 0.000000 COST( W1, J4) 7.000000 0.000000 COST( W2, J1) 4.000000 0.000000 COST( W2, J2) 9.000000 0.000000 COST( W2, J3) 5.000000 0.000000 COST( W2, J4) 3.000000 0.000000 COST( W3, J1) 5.000000 0.000000 COST( W3, J2) 2.000000 0.000000 COST( W3, J3) 1.000000 0.000000 COST( W3, J4) 9.000000 0.000000 COST( W4, J1) 7.000000 0.000000 COST( W4, J2) 6.000000 0.000000 COST( W4, J3) 7.000000 0.000000 COST( W4, J4) 3.000000 0.000000 VOLUME( W1, J1) 0.000000 1.000000 VOLUME( W1, J2) 1.000000 0.000000 VOLUME( W1, J3) 0.000000 0.000000 VOLUME( W1, J4) 0.000000 3.000000 VOLUME( W2, J1) 1.000000 0.000000 VOLUME( W2, J2) 0.000000 8.000000 VOLUME( W2, J3) 0.000000 0.000000 VOLUME( W2, J4) 0.000000 0.000000 VOLUME( W3, J1) 0.000000 5.000000 VOLUME( W3, J2) 0.000000 5.000000 VOLUME( W3, J3) 1.000000 0.000000 VOLUME( W3, J4) 0.000000 10.00000 VOLUME( W4, J1) 0.000000 3.000000 VOLUME( W4, J2) 0.000000 5.000000 VOLUME( W4, J3) 0.000000 2.000000 VOLUME( W4, J4) 1.000000 0.000000 Row Slack or Surplus Dual Price1 10.00000 -1.0000002 0.000000 -1.0000003 0.000000 0.0000004 0.000000 4.0000005 0.000000 0.0000006 0.000000 -4.0000007 0.000000 -1.0000008 0.000000 -5.0000009 0.000000 -3.000000示例4 解整数规划,在lingo窗口输入以下代码,min=3*x1+x2+3*x3+3*x4+x5+x6+3*x7;4*x1+3*x2+2*x3+x4+x5>=50;x2+2*x4+x5+3*x6>=20;x3+x5+2*x7>=15;@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x3);@gin(x6);@gin(x7);END运行结果为:Global optimal solution found.Objective value: 27.00000Extended solver steps: 0Total solver iterations: 5Variable Value Reduced CostX1 0.000000 3.000000X2 12.00000 1.000000X3 0.000000 2.000000X4 0.000000 3.000000X5 15.00000 0.000000X6 0.000000 1.000000X7 0.000000 1.000000Row Slack or Surplus Dual Price1 27.00000 -1.0000002 1.000000 0.0000003 7.000000 0.0000004 0.000000 -1.0000002 用运筹学实验软件计算运输问题和整数规划问题五、总结对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非线性规划 (NLP)
Lingo
LINDO/LINGO软件的求解过程
1. 确定常数
2. 识别类型
LINDO/LINGO预处理程序
LP QP NLP IP 全局优化(选) 分枝定界管理程序 ILP IQP INLP
线性优化求解程序
非线性优化求解程序
1. 单纯形算法 2. 内点算法(选)
1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选)
m in c ij x ij
i 1 j 1 8 x ij a i ( i 1,2,...,6) j61 s .t . x ij d i ( j 1,2,...,8) i 1 x ij 0, i 1,2,...,6, j 1....,8
6
8
model: !6发点8收点运输问题; sets: chandi/A1..A6/: a; xiaodi/B1..B8/: d; links(chandi,xiaodi): c, x; endsets !目标函数; min=@sum(links(i,j): c(i,j)*x(i,j)); !需求约束; @for(xiaodi(J): @sum(chandi(I): x(I,J))=d(J)); !产量约束; @for(chandi(I): @sum(xiaodi(J): x(I,J))<=a(I)); !这里是数据; data: a=60 55 51 43 41 52; d=35 37 22 32 41 32 43 38; c=6 2 6 7 4 2 9 5 49538582 52197433 76739271 23957265 5 5 2 2 8 1 4 3; enddata end
数学规划
实验2 Lingo求解运输问题和整数规划
LINGO软件简介
LINGO模型的优点
•包含了LINDO的全部功能 •提供了灵活的编程语言(矩阵生成器)
LINGO模型的构成:4个段
•目标与约束段 • 集合段(SETS ENDSETS)
• 数据段(DATA ENDDATA) •初始段(INIT ENDINIT)
产销不平衡问题
m in c ij x ij
i 1 j 1 8 x ij c i ( i 1,2,...,6) j61 s .t . x ij d i ( j 1,2,...,8) i 1 x ij 0, i 1,2,...,6, j 1....,8
i
6
8
a
i i
i
60 55 51 43 41 52 302
b 35 37 22 32 41 32 43 38 280
使用LINGO软件,编制程序如下:
使用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 5 49538582 52197433 76739271 23957265 5 5 2 2 8 1 4 3; enddata end
41
A6
销量
5
35
5
37
2
22
2
32
i i
8
41
1
32
4
43
3
38
52
a
i
i
60 55 51 43 41 52 302
b 35 37 22 32 41 32 43 38 280
• 解:设第I个产地运到第j个销地的单位运价为 cij ,第I个产地运到第j个销地的运量为 xij ,第I 个产地的产量为ai (I=1,2,…,6),第j个销地的销 量为 bj(j=1,2,…,8),运费为z,则此问题的数学 模型为如下的数学规划问题:
简单Lingo程序
•lingo程序:
Model: min=7*x1+3*x2; x1+x2>=345.5; x1>=98; 2*x1+x2<=600; end
优化模型
实际问题中 的优化模型
Min(或Max) z f ( x), x ( x1 ,x n ) s.t. g i ( x) 0, i 1,2, m
二、实验例题 例2.1 使用LINGO软件计算6个发点8个收点的最小费用运输问 题。产销单位运价如下表。
单 位 运 价 产地
销地 B1 B2 B3 B4 B5 B6 B7 B8 产量
A1
6
2
6
7
4
2
5
9
60
A2
A3
4
5
9
2
5
1
3
9
8
7
5
4
8
3
2
3
55
51
A4
A5
7
2
6
3
7
9
3
5
9
7
2
2
7
6
Hale Waihona Puke 1543f(x)~目标函数 gi(x)0~约束条件
T
x~决策变量 数学规划 线性规划(LP) 二次规划(QP) 非线性规划(NLP)
0-1整数规划 一般整数规划
纯整数规划(PIP) 混合整数规划(MIP)
连续规划
整数规划(IP)
LINDO 公司软件产品简要介绍
美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发, 后来成立 LINDO系统 公司(LINDO Systems Inc.), 网址:
What’s Best!: (SpreadSheet e.g. EXCEL) (V7.0)
演示(试用)版、学生版、高级版、超级版、工业版、 扩展版… (求解问题规模和选件不同)
LINDO和LINGO软件能求解的优化模型
优化模型
连续优化
整数规划(IP)
线性规划 (LP)
LINDO
二次规划 (QP)
LINGO
LINDO: Linear INteractive and Discrete Optimizer LINGO: Linear INteractive General Optimizer
(V6.1) (V8.0)
LINDO API: LINDO Application Programming Interface (V2.0)