当前位置:
文档之家› 线性规划模型、求解及灵敏度分析
线性规划模型、求解及灵敏度分析
0 ≤ x i ≤ ai ,
0 ≤ y i ≤ bi ,
i = 1, , , , , , , 2345678
x 1 + x 2 + x 3 + y 1 + y 2 + y 3 ≤ 100 x 6 + x 7 + x 8 + y 6 + y 7 + y 8 ≤ 115
x 2 + x 4 + x 7 + y 2 + y 4 + y 7 ≤ 120 x 3 + x 5 + x 8 + y 3 + y 5 + y 8 ≤ 110
St.louis,Buffalo 中的 450 运到 New York,剩下的运到 Phila。运费最少为 6400.
5. 投资策略
某部门现有资金 10 万元,五年内有以下投资项目可供选择: 项目 A:从第一年到第四年每年初投资,次年末收回本金且获利 15%; 项目 B:第三年初投资,第五年末收回本金且获利 25%,最大投资额为 4 万元; 项目 C:第二年初投资,第五年末收回本金且获利 40%,最大投资额为 3 万元; 项目 D:每年初投资,年末收回本金且获利 6%; 问如何确定投资策略使第五年末本息总额达最大? 分析: 分析: 先考虑只能投资一次的项目 C,项目 A 连续投资两次,其利润为 32.25%,项目 D 连续投资 4 次其利 润为 26.25%,明显项目 C 的利润要高,所以第二年首先选择项目 C 的 3 万元。 再考虑只能投资一次的项目 B,可以由项目 A 和项目 D 组合而成,而其利润为 21.90%,所以第三年首 先投资 4 万元到项目 B。
Bond1=x(1); Bond2=x(2); Bond3=x(3); Returnexpectation=-fmin 结果为: 结果为: x = 0.0000 15.0000 3.0000 fmin =-78.0000 Returnexpectation =78.0000
应用实验
2. 两种面包产品的产量配比问题
田园食品公司生产的面包很出名。他们生产两种面包:一种是叫“唐师”的白面包,另一种是叫“宋 赐”的大黑面包。每个唐师面包的利润是 0.05 元,宋赐面包是 0.08 元。两种面包的月生产成本是固定 的 4000 元,不管生产多少面包。 该公司的面包生产厂分为两个部:分别是烤制和调配。 烤制部有 10 座大烤炉,每座烤炉的容量是每天出 140 台,每台可容纳 10 个唐师面包或 5 个更大的宋 赐面包。可以在一台上同时放两种面包,只需注意宋赐面包所占的空间是唐师面包的两倍。 调配部每天可以调配最多 8000 个唐师面包和 5000 个宋赐面包。有两个自动调配器分别用于两种面包 的调配而不至于发生冲突。 田园公司决定找出这两种面包产品的最佳产量配比,即确定两种面包的日产量,使得在公司面包厂的 现有生产条件下利润最高。 作出假设: 作出假设: TS:为唐师面包的日产量(个/日) SC:为宋赐面包的日产量(个/日) 建立模型: 建立模型: 根据题目,面包的日产量可以归结为以下的最优化模型: 目标函数: fmax=0.05TS+0.08SC-4000/30 约束条件: 0.1TS+0.2SC ≤ 1400 0 ≤ TS ≤ 8000 0 ≤ SC ≤ 5000 编程: 用 MATLAB 编程: c=[-0.05;-0.08] A=[0.1 0.2] b=[1400] xL=[0;0] xU=[8000;5000] [x,fmin]=LINPROG(c,A,b,[],[],xL,xU) Bond1=x(1); Bond2=x(2); Fmax=-fmin 结果如下: 结果如下:
基础实验
1.求解下述线性规划问题
min s.t.
− 5 x1 − 4 x2 − 6 x3 x1 − x2 + x3 ≤ 20
3x1 + 2x 2 + 4x 3 ≤ 42 3x1 + 2x 2 ≤ 30
0 ≤ x1, 0 ≤ x 2 , 0 ≤ x 3
编程如下: 用 matlab 编程如下: c=[-5;-4;-6] A=[1 -1 1;3 2 4;3 2 0] b=[20;42;30] xL=zeros(3,1) [x fmin]=LINPROG(c,A,b,[],[],xL)
max z =
∑ (pi x i i
=1
+ qi y i )
s.t. 航班 AC 上的销售机票总数为 3 个航线 AC、AD、AE 的销售机票数之和,不准超过班机容量 100,故有
x 1 + x 2 + x 3 + y 1 + y 2 + y 3 ≤ 100
航班 BC 上的销售机票总数为 3 个航线 BC、BD、BE 的销售机票数之和,不准超过班机容量 115,故有
表1 第一段的运输单价 To From Toronto Detroit Chicago $4 $ 5 表2 Buffalo $ 7 $ 7 第二段的运输单价 Supply 600 500
To From Chicago Buffalo Demand New York $3 $ 1 450 Phila. $ 2 $ 3 350 St.louis $ 2 $ 4 300
x =8000 3000 fmin =-640.0000 Fmax =640.0000 所以唐师面包的日产量 8000 个/日,宋赐面包的日产量,5000 个/日时,利润最大为 640-400/3=506.67 元。
3. 航空公司的机舱设计及机票销售
在五个城市 A、B、C、D、E 之间,有唯一一家航空公司提供四个航班服务,这四个航班的“出发地— 目的地”分别为 AC、BC、CD、CE,可搭载旅客的最大数量分别为 100 人、115 人、120 人、110 人,机票 的价格分头等舱和经济舱两类。经过市场调查,公司销售部得到了每天旅客的相关信息,见下表。该公 司应该在每条航线上分别分配多少张头等舱和经济舱的机票? 出发地-目的地 AC AD(经 C 转机) AE(经 C 转机) BC BD(经 C 转机) BE(经 C 转机) CD CE 头等舱 需求(人) 31 22 10 25 20 8 34 13 价格(元) 190 244 261 170 260 280 140 186 52 41 60 33 31 41 59 15 经济舱 需求(人) 价格(元) 90 193 199 110 150 165 80 103
开课学院、实验室: 开课学院、实验室:数理学院 DS1401
课程 数学实验 名称 指导 李东 教师 实验项目 名 成 称 绩
实验时间 :2011 年 5 月 2 日
实验项目类型
验证 演示 综合 设计 其他
线性规划模型、 线性规划模型、求解及灵 敏度分析
实验目的
学习最优化技术和基本原理,了解最优化问题的分类; 掌握线性规划的建模技巧和求解方法; 学习灵敏度分析问题的思维方法; 熟悉 MATLAB 软件求解线性规划模型的基本命令; 通过范例学习,熟悉建立线性规划模型的基本要素和求解方法。 通过该实验的学习,使学生掌握最优化技术,认识面对什么样的实际问题,提出假设和建立优化 模型,并且使学生学会使用 MATLAB 软件进行线性规划模型求解的基本命令,并进行灵敏度分析。解决现 实生活中的最优化问题是本科生学习阶段中一门重要的课程,因此,本实验对学生的学习尤为重要。 [1] [2] [3] [4] [5]
x 6 + x 7 + x 8 + y 6 + y 7 + y 8 ≤ 115
在另外两个航班 CD、CE 上,有同样的容量限制,故有
x 2 + x 4 + x 7 + y 2 + y 4 + y 7 ≤ 120 , x 3 + x 5 + x 8 + y 3 + y 5 + y 8 ≤ 110 ;
每条航线上有需求量的限制,故有 所以 s.t.
建立模型: 建立模型: 。 Xij 为 i 地到 j 地运输的货物量(0 ≤ xij) s.t.: x13+x14=600 x23+x24=500 -x13- x23+x35+x36+x37 =0 -x14- x24+x45+x46+x47 =0 x35+ x45=450 x36+ x46=350 x37+ x47=300 目标函数: Min=4x13+7x14+7 x23+5x24+ 3x35+2x36+x37+ x45+3x46+4x47 编程如下: 用 matlab 编程如下: c=[4;7;7;5;3;2;1;1;3;4] xL=zeros(10,1) Aeq=[1 1 0 0 0 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;-1 -1 0 0 1 1 1 0 0 0;0 0 -1 -1 0 0 0 1 1 1;0 0 0 0 1 0 0 1 0 0;0 0 0 0 0 1 0 0 1 0;0 0 0 0 0 0 1 0 0 1] seq=[600;500;0;0;450;350;300] [x,fmin]=LINPROG(c,[],[],Aeq,seq,xL) 结果如下: 结果如下: x =600.0000 0.0000 0.0000 500.0000 0.0000 300.0000 300.000 450.0000 50.0000 0.0000 fmin = 6400 运输方案如下: 运输方案如下: Toronto 的 600 全运到 Chicago,Detroit 的 500 全运到 Buffalo,Chicago600 中的 300 运到 Phila,剩下的运到
目标函数为:
max z =
编程: 用 matlab 编程: c=[-190;-244;-261;-140;-186;-170;-260;-280;-90;-193;-199;-80;-103;-110;-150;-165] A=[1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0;0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1;0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0; 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1] b=[100;115;120;110] xL=zeros(16,1) xU=[31;22;10;34;13;25;20;8;52;41;60;59;15;33;31;41] [x,fmin]=LINPROG(c,A,b,[],[],xL,xU) fmax=-fmin 运行结果如下: 运行结果如下: x =31.0000 22.0000 10.0000 34.0000 13.0000 25.0000 20.000 8.0000 0.0000 2.0000 35.0000 42.0000 15.0000 33.0000 0.0000 29.0000 fmin = -5.3407e+004 fmax = 5.3407e+004 方案如下: 方案如下: AC、AD、AE、CD、CE、BC、CD、CE 上经济舱票数分别为:31 22 10 34 13 25 20 8;AC、AD、 AE、CD、CE、BC、CD、CE 上豪华舱票数分别为:0 2 35 42 15 33 0 29;最大收入为 53407 元。