线性规划研究时间较早,在实际应用中也比较成熟,它是一种辅助人们进行科学管理的数学方法,为合理地利用有限的人力、物力、财力等资源作出的最优决策,提供科学的依据。

课题名称:配货问题,使运费收入最大

现有一艘轮船,分前中后三个舱位,相应的容积与最大允许载重量如表1所示。现有一批A,B,C三种货物待运,已知相关数据如表2所示。

表1   各船舱的容积和最大载重量

前舱

中舱

后舱

容积/m

4000

5400

1500

最大载重量/t

2000

3000

1500

表2    三种货物的相关数据

货物

数量/件

体积/(m/件)

重量/(t/件)

运价/(元/件)

A

600

10

8

1000

B

1000

5

6

700

C

800

7

5

600

为了保证航运安全,要求前中后舱在实际载重量上大体保持各船舱最大允许载重量的比例要求,具体要求:前后舱分别与中舱之间载重量比例上偏差不超过15%,前后舱之间不超过10%,问题是:在保证航运安全要求的条件下,轮船应装载A,B,C三种货物各多少件,使运费收入最大。

解法一:matlab解法

解:设轮船前舱应装载A,B,C三种货物各x11,x21,x31件;轮船中舱应装载A,B,C三种货物各x12,x22,x32件;轮船后舱应装载A,B,C三种货物各x13,x23,x33件;则有:

max  z=1000*(x(11)+x(12)+x(13))+700*(x(21)+x(22)+x(23))+600*(x(31) +x(32)+x(33))

st.

转化为求最小问题:

min   w= - 1000*(x(11)+x(12)+x(13))-700*(x(21)+x(22)+x(23))-600*(x(31)+x(32)+x(33))

st.

Matlab程序:

c=[-1000,-1000,-1000,-700,-700,-700,-600,-600,-600];
A=[10,0,0,5,0,0,7,0,0;
0,10,0,0,5,0,0,7,0;
0,0,10,0,0,5,0,0,7;
8,0,0,6,0,0,5,0,0;
0,8,0,0,6,0,0,5,0;
0,0,8,0,0,6,0,0,5;
9.2,-8,0,6.9,-6,0,5.75,-5,0;
-8, 9.2,0, -6, 6.9,0, -5, 5.75,0;
0,-8, 9.2,0, -6, 6.9,0, -5, 5.75;
0,9.2,-8,0,6.9,-6,0,5.75,-5;
-8,0,8.8,-6,0,6.6,-5,0,5.5;
8.8,0,-8,6,0,-6.6,5.5,0,-5;
1,1,1,0,0,0,0,0,0;
0,0,0,1,1,1,0,0,0;
0,0,0,0,0,0,1,1,1;];
b=[4000,5400,1500,2000,3000,1500,0,0,0,0,0,0,600,1000,800];
Aeq=[];
beq=[];
lb=[0,0,0,0,0,0,0,0,0];
ub=[];
[x,w]=linprog(c,A,b,Aeq,beq,lb,ub)
Optimization terminated.

Matlab运行结果:

x =206.7722318.227875.000000.0000000.000000150.000069.1646090.835400.000000
w =-801000

方案:

因为:z=-w,所以z=801000,即轮船前舱应装载A,B,C三种货物各207,0,69件;轮船中舱应装载A,B,C三种货物各318,0,91件;轮船后舱应装载A,B,C三种货物各75,150,0件,才能使运费收入最大且满足其他条件。

解法二:用lingo求解:

lingo程序:

model:
sets:
row/1..3/;
arrange/1..3/;
link(row,arrange):x;
endsets
max=1000*(x(1,1)+x(1,2)+x(1,3))+700*(x(2,1)+x(2,2)+x(2,3))+600*(x(3,1)+x(3,2)+x(3,3));
10*x(1,1)+5*x(2,1)+7*x(3,1)<=4000;
10*x(1,2)+5*x(2,2)+7*x(3,2)<=5400;
10*x(1,3)+5*x(2,3)+7*x(3,3)<=1500;
8*x(1,1)+6*x(2,1)+5*x(3,1)<=2000;
8*x(1,2)+6*x(2,2)+5*x(3,2)<=3000;
8*x(1,3)+6*x(2,3)+5*x(3,3)<=1500;
(8*x(1,1)+6*x(2,1)+5*x(3,1))*1.15-(8*x(1,2)+6*x(2,2)+5*x(3,2))<=0;
(8*x(1,2)+6*x(2,2)+5*x(3,2))*1.15-(8*x(1,1)+6*x(2,1)+5*x(3,1))<=0;
(8*x(1,3)+6*x(2,3)+5*x(3,3))*1.15-(8*x(1,2)+6*x(2,2)+5*x(3,2))<=0;
(8*x(1,2)+6*x(2,2)+5*x(3,2))*1.15-(8*x(1,3)+6*x(2,3)+5*x(3,3))<=0;
(8*x(1,3)+6*x(2,3)+5*x(3,3))*1.10-(8*x(1,1)+6*x(2,1)+5*x(3,1))<=0;
(8*x(1,1)+6*x(2,1)+5*x(3,1))*1.10-(8*x(1,3)+6*x(2,3)+5*x(3,3))<=0;
x(1,1)+x(1,2)+x(1,3)<=600;
x(2,1)+x(2,2)+x(2,3)<=1000;
x(3,1)+x(3,2)+x(3,3)<=800;
end

lingo运行结果:

 Global optimal solution found.Objective value:                                 801000.0Infeasibilities:                                 0.000000Total solver iterations:                               9Variable           Value          Reduced CostX( 1, 1)        206.7722            0.000000X( 1, 2)        318.2278            0.000000X( 1, 3)        75.00000            0.000000X( 2, 1)        0.000000            0.000000X( 2, 2)        0.000000            0.000000X( 2, 3)        150.0000            0.000000X( 3, 1)        69.16460            0.000000X( 3, 2)        90.83540            0.000000X( 3, 3)        0.000000            0.000000Row       Slack or Surplus       Dual Price1           801000.0              1.0000002           4000.000              0.0000003           5400.000              0.0000004           1500.000              0.0000005           2000.000              0.0000006           3000.000              0.0000007           1500.000              0.0000008           0.000000              938.70269           0.000000              924.958810           0.000000              954.508011           600.0000              0.00000012           1000.000              0.00000013           800.0000              0.000000

所得方案与matlab一致,即轮船前舱应装载A,B,C三种货物各207,0,69件;轮船中舱应装载A,B,C三种货物各318,0,91件;轮船后舱应装载A,B,C三种货物各75,150,0件,才能使运费收入最大且满足其他条件。

相对于matlab,Lingo在LP问题上有着极其突出的优势,操作简单,不易出错!

线性规划 - 用单纯形法解决LP问题 - (Matlab、Lingo建模)相关推荐

  1. 线性规划 - 用单纯形法解决整数规划问题 - (Matlab、Lingo建模)

    现实生活中,比如机器的台数,参与工作的人数,可调动的车辆数,这些数据都是整数.因此对于变量中包含整数.或者完全是整数的规划问题,我们称之为整数规划.在解决整数规划常用的算法便是单纯形法. 课题名称:任 ...

  2. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )

    文章目录 一.基矩阵 + 非基矩阵 约束条件 二.基矩阵 + 非基矩阵 线性规划 三.线性规划 可行解 四.目标函数 推导 五.XN=OX_N = OXN​=O 目标函数最大 分析 六.总结 在上一篇 ...

  3. 线性规划与单纯形法(线性规划、单纯形法、单纯形表、人工变量法)

    线性规划与单纯形法 文章目录 线性规划与单纯形法 概念.建模.标准型 标准型.基.基解.基可行解.可行基 单纯形法 单纯形表的应用 关于检验数和退化的讨论 人工变量法之"大M法" ...

  4. 线性规划之单纯形法【超详解+图解】-转载

    线性规划之单纯形法[超详解+图解] 目录 1.作用 2.线性规划的一般形式 5.1几何意义 5.2如何判断最优 5.3如何选择新的基变量 5.4如何选择被替换的基变量 5.5终止条件 标准型: 转化为 ...

  5. matlab求解参数线性规划问题,实验三十用MATLAB求解线性规划问题

    <实验三十用MATLAB求解线性规划问题>由会员分享,可在线阅读,更多相关<实验三十用MATLAB求解线性规划问题(27页珍藏版)>请在人人文库网上搜索. 1.实验三十 用MA ...

  6. 王树尧老师运筹学课程笔记 10 线性规划与单纯形法(关于检测数与退化的讨论)

    第10讲 线性规划与单纯形法(关于检测数与退化的讨论) 对单纯形表中一些列的理解 主要注意的是,在如上图所示的单纯形表中,bbb列和填ai,ja_{i,j}ai,j​的列中本质上填的应该是B−1bB^ ...

  7. 【运筹学】线性规划数学模型 ( 单纯形法 | 第二次迭代 | 方程组同解变换 | 生成新单纯形表 | 计算检验数 | 最优解判定 | 线性规划解个数分析 )

    文章目录 一.第二次迭代 二.方程组同解变换 三.生成新的单纯形表 四.计算检验数.最优解判定 五.最优解个数说明 1.唯一最优解 2.无穷最优解 3.无界解 4.总结 六.出基变量选择说明 上一篇博 ...

  8. 【运筹学】线性规划数学模型 ( 单纯形法 | 第一次迭代 | 方程组同解变换 | 计算新单纯形表 | 计算检验数 | 入基变量选择 | 出基变量选择 )

    文章目录 一.初始基可行解后第一次迭代 二.迭代后新的单纯形表 三.方程组同解变换 四.生成新的单纯形表 五.解出基可行解 六.计算检验数 σj\sigma_jσj​ 并选择入基变量 七.计算 θ\t ...

  9. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 线性规划求解示例 )

    文章目录 一.单纯形法计算示例 二.转化标准形式 三.查找初始基可行解 四.列出单纯形表 五.最优解判定 在上一篇博客 [运筹学]线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 单纯形表 | ...

最新文章

  1. python退出程序-Python退出命令的总结
  2. 索引的工作原理及其优缺点
  3. 2020年AI领域有哪些让人惊艳的研究?
  4. Deep Learning(深度学习)学习笔记整理系列三
  5. wex5 app应用 定时退出
  6. CentOS关闭休眠和屏保模式
  7. java异常应用_Java异常处理机制 —— 深入理解与开发应用
  8. 12.2 新特性:RMAN 自动恢复到 REDO 终点的步骤简化
  9. ESP8266调试-P2P(AP模块与STA模块通信)
  10. 李宏毅机器学习2021】机器学习模型的可解释性 (Explainable ML)
  11. 小学生也能看懂的ArrayList底层原理
  12. Windows Store App 音频和视频
  13. markdown引入代码_将Swagger2文档导出为HTML或markdown等格式离线阅读
  14. 跳转定义_解决tensorflow2.0在Pycharm中的自动补全及跳转定义问题
  15. 学校管理系统C#(数据库、源码、演讲内容、ppt等)
  16. 搭建Eclipse 2020安卓开发环境
  17. win10计算机桌面天气,win10电脑桌面显示时间和天气日期怎么设置
  18. 微信登录界面安卓代码_安卓Activity劫持与反劫持
  19. 阿里ICON图标,使用教程
  20. AntDesign 表格设置背景色

热门文章

  1. CS224n笔记3 高级词向量表示
  2. 【NS2】在linux下安装低版本GGC
  3. 给创业者的30条建议
  4. 通信教程 | 串口丢数据常见的原因
  5. 致驱动工程师的一封信
  6. STM32——时钟系统
  7. java 8 兼容_甲骨文限制 Java 9 到 Java 8 的向后兼容性
  8. cython python3_30倍!使用Cython加速Python代码
  9. 手机java软件_浅谈软件开发就业前景
  10. LeetCode 2007. 从双倍数组中还原原数组(map)