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

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

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

   现有一艘轮船,分前中后三个舱位,相应的容积与最大允许载重量如表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问题上有着极其突出的优势,操作简单,不易出错!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1472. 设计浏览器历史记录(双栈)

1. 题目 你有一个只支持单个标签页的 浏览器 &#xff0c;最开始你浏览的网页是 homepage &#xff0c;你可以访问其他的网站 url &#xff0c;也可以在浏览历史中后退 steps 步或前进 steps 步。 请你实现 BrowserHistory 类&#xff1a; BrowserHistory(string homepage) …

微软Webcast课程下载软件iReaper正式登陆Android平台

微软Webcast课程下载软件iReaper正式登陆Android平台&#xff0c;我叫它iReaper for Android。目前正处于测试阶段&#xff0c;功能比较单一。 目前支持 1.视频下载 2.课程代码下载 3.讲义下载 4.问答下载 附上截图&#xff0c;敬请期待&#xff01; 1.下载地址&#xff…

LeetCode 1473. 给房子涂色 III(DP)

1. 题目 在一个小城市里&#xff0c;有 m 个房子排成一排&#xff0c;你需要给每个房子涂上 n 种颜色之一&#xff08;颜色编号为 1 到 n &#xff09;。 有的房子去年夏天已经涂过颜色了&#xff0c;所以这些房子不需要被重新涂色。 我们将连续相同颜色尽可能多的房子称为一…

动态规划 - Floyd算法求最短路径 - (Matlab建模)

Floyd算法又称为弗洛伊德算法、插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法&#xff0c;与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名。 课题名称&#xff1a;…

DIV Scroll属性

DIV Scroll属性详解&#xff0c;为DIV层打造不同的滚动条。一、scrollbar属性、样式详解 1&#xff0e;overflow内容溢出时的设置&#xff08;设定被设定对象是否显示滚动条&#xff09; overflow-x水平方向内容溢出时的设置 overflow-y垂直方向内容溢出时的设置 以上…

神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)

目录 神经网络模型简述 实例&#xff1a;交通运输能力预测设计 MATLAB程序及仿真结果 由于货物运输、地方经济及企业发展的紧密联系&#xff0c;因此作为反映货物运输需求的一项重要指标, 货运量预测研究和分析具有较强的实际意义。 常用的货运量预测方法包括时间序列方法、…

LeetCode 135. 分发糖果(DP)

1. 题目 老师想给孩子们分发糖果&#xff0c;有 N 个孩子站成了一条直线&#xff0c;老师会根据每个孩子的表现&#xff0c;预先给他们评分。 你需要按照以下要求&#xff0c;帮助老师给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻的孩子中&#xff0c…

神经网络 - RBF神经网络与BP网络优缺点比较 - 机器学习基础知识

RBF神经网络与BP神经网络优缺点比较 1. RBF 的泛化能力在多个方面都优于BP 网络, 但是在解决具有相同精度要求的问题时, BP 网络的结构要比RBF 网络简单。 2. RBF 网络的逼近精度要明显高于BP 网络,它几乎能实现完全逼近, 而且设计起来极其方便, 网络可以自动增加神经…

网络数据的背后-网络日志的分析指标【转】

通常网站分析的技术包括页面标签分析技术&#xff08;JS技术&#xff09;和日志文件分析技术两种&#xff0c;两种网站分析技术各有优缺点&#xff0c;譬如下文中介绍的基于回话的统计和点击流分析日志文件分析法就要优于页面标签分析法&#xff0c;通常&#xff0c;两种技术具…

词云图 - WorldCloud - Python代码实现

目录 第一步&#xff1a;安装必要的包WorldCloud&#xff08;安装好并且没有出错的可跳过这一步&#xff09; 第二步&#xff1a;准备文件&#xff0c;词云图的图片和文章&#xff0c;按照自己喜好准备吧 第三步&#xff1a;Python实现-源码 第一步&#xff1a;安装必要的包…

运行命令

cmd--------CMD命令提示符ipconfig-------检查IPtsshutdn-------60秒倒计时关机命令cleanmgr-------垃圾整理calc-----------启动计算器notepad--------打开记事本logoff---------注销命令winver---------检查Windows版本mstsc----------远程桌面连接转载于:https://www.cnblog…

[Hands On ML] 2. 一个完整的机器学习项目(加州房价预测)

文章目录1. 项目介绍2. 性能指标3. 确定任务类型4. 查看数据5. 创建测试集6. 数据可视化7. 查找数据关联8. 特征组合9. 为算法准备数据9.1 数据清洗9.2 处理文本特征10. 自定义转换器11. 特征缩放12. 转换流水线Pipeline13. 训练模型14. 交叉验证15. 微调模型15.1 网格搜索15.2…

线性回归 - 机器学习多元线性回归 - 一步一步详解 - Python代码实现

目录 数据导入 单变量线性回归 绘制散点图 相关系数R 拆分训练集和测试集 多变量线性回归 数据检验&#xff08;判断是否可以做线性回归&#xff09; 训练线性回归模型 先甩几个典型的线性回归的模型&#xff0c;帮助大家捡起那些年被忘记的数学。 ● 单变量线性回归&…

Checking battery state… ubuntu

Checking battery state… 当ubuntu启动的时候遇到 “Checking battery state….”时&#xff0c; 按下ctrl alt F1,进入终端&#xff0c;使用管理员权限执行下列代码 sudo rm /etc/X11/xorg.confsudo reboot 转载于:https://www.cnblogs.com/hjslovewcl/archive/2011/06/30/…

层次分析法AHP - 代码注释多 - ( 数据建模 Python代码)

实际生活中&#xff0c;往往有一些很复杂的系统&#xff0c;我们没办法直观草率的确定权重&#xff0c;比如甲、乙、丙三人竞选总统&#xff0c;严谨的说&#xff0c;需要从三人的社交能力、管理能力、经济能力等方面来考虑&#xff0c;在每个方面&#xff0c;三位候选人的得分…

LeetCode 1155. 掷骰子的N种方法(DP)

1. 题目 这里有 d 个一样的骰子&#xff0c;每个骰子上都有 f 个面&#xff0c;分别标号为 1, 2, …, f。 我们约定&#xff1a;掷骰子的得到总点数为各骰子面朝上的数字的总和。 如果需要掷出的总点数为 target&#xff0c;请你计算出有多少种不同的组合情况&#xff08;所…

Android 之自定义组件

1、如何在一个按钮上放上一张图片&#xff1f;把按钮和图片套在一个FrameLayout中 <!-- 必须将button和ImageView分别嵌套在两个LinearLayout中才能 实现将图片放在按钮上 --> <FrameLayout android:orientation"horizontal" android:layout_width&…

职业规划之后,还需要什么?职业规划与职业选择 - 续集

一时的想法写下&#xff0c;竟没想到会有很多的朋友的共鸣&#xff0c;几天前写下了一则文章&#xff1a;职业规划与职业选择 &#xff0c;写的目的只是自己的心得所绘。很多朋友朋友给我的写作提供了宝贵意见&#xff0c;自己以后也会注意的写作的。但是不免有时候是个人的及时…

LeetCode 1223. 掷骰子模拟(DP)

1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束&#xff0c;就是使得投掷骰子时&#xff0c;连续 掷出数字 i 的次数不能超过 rollMax[i]&#xff08;i 从 1 开始编号&#xff09;。 现在&#xff0c;给你一个整数数组 ro…

聚类分析 - K-means - Python代码实现

算法简介 K-means算法是很典型的基于距离的聚类算法&#xff0c;采用距离作为相似性的评价指标&#xff0c;即认为两个对象的距离越近&#xff0c;其相似度就越大。该算法认为簇是由距离靠近的对象组成的&#xff0c;因此把得到紧凑且独立的簇作为最终目标。 算法过程如下&…