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

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

课题名称:任务的分配

设有甲、乙、丙、丁四个人,各有能力去完成A、B、C、D、E五项任务中的任一项,由于四个人的能力和经验不同,所需完成各项任务的时间如表1所示.由于任务数多于人数,要求考虑如下问题:

(1)       任务E必须完成,其他四项中可任选三项完成;

(2)       要求有一个人完成两项任务,其他人各完成一项;

(3)       要求任务A可由甲或丙完成,任务C可由丙或丁完成,任务E可由甲、乙或丁完成,且规定四个人中丙或丁能够完成两项任务,其他人完成一项任务。

试分别确定最优的分配方案,使得完成任务的总时间最少。

表1   每个人完成各项任务的能力

项目

人员

A

B

C

D

E

25

29

31

42

37

39

38

26

20

33

34

27

28

40

32

24

42

36

23

45

    由于任务数大于人数,所以需要有一个虚拟的人,设为戊。因为工作E必须完成,故设戊完成E的时间为M(M为非常大的数),即戊不能做工作E,其余的假想时间为0,建立的效率矩阵如表2:

表2   每个人完成各项任务的能力

项目

人员

A

B

C

D

E

25

29

31

42

37

39

38

26

20

33

34

27

28

40

32

24

42

36

23

45

0

0

0

0

M

令第 i 个人表示甲、乙、丙、丁、戊,第 j 个任务分别表示ABCD、E项任务,cij 表示第 i 个人完成第 j 个任务的时间(d)。设:

Z为完成任务的总时间(d)。则该问题的数学模型为:

为输入程序方便,令M=1000.

方法一:Matlab求解

Matlab程序:

c=[25 29 31 42 37;39 38 26 20 33;34 27 28 40 32;24 42 36 23 45;0 0 0 0 1000];
n=size(c,1);  
c=c(:);
a=zeros(2*n,n^2);
for i=1:na(i,(i-1)*n+1:n*i)=1;a(n+i,i:n:n^2)=1;
end
b=ones(2*n,1);
[x,y]=linprog(c,[],[],a,b,zeros(n^2,1),ones(n^2,1));
X=reshape(x,n,n);
X_min=round((X)),y

Matlab运行结果:

Optimization terminated.
X_min =0     1     0     0     00     0     0     1     00     0     0     0     11     0     0     0     00     0     1     0     0
y =105.0000

方案:甲——B ,乙——D ,丙——E ,丁——A ,  总时间为105(d).

方法二:lingo求解

Lingo程序:

model:
sets:
row/1..5/;
arrange/1..5/;
link(row,arrange):c,x;
endsets	
data:
c=25,29,31,42,37,39,38,26,20,33,34,27,28,40,32,24,42,36,23,45,0,0,0,0,1000;
enddata
[OBJ]min=@sum(link(i,j):c(i,j)*x(i,j));
x(1,1)+x(1,2)+x(1,3)+x(1,4)+x(1,5)=1;
x(2,1)+x(2,2)+x(2,3)+x(2,4)+x(2,5)=1;
x(3,1)+x(3,2)+x(3,3)+x(3,4)+x(3,5)=1;
x(4,1)+x(4,2)+x(4,3)+x(4,4)+x(4,5)=1;
x(5,1)+x(5,2)+x(5,3)+x(5,4)+x(5,5)=1;
x(1,1)+x(2,1)+x(3,1)+x(4,1)+x(5,1)=1;
x(1,2)+x(2,2)+x(3,2)+x(4,2)+x(5,2)=1;
x(1,3)+x(2,3)+x(3,3)+x(4,3)+x(5,3)=1;
x(1,4)+x(2,4)+x(3,4)+x(4,4)+x(5,4)=1;
x(1,5)+x(2,5)+x(3,5)+x(4,5)+x(5,5)=1;
@for(link(i,j):x(i,j)>=0;);
end

Lingo运行结果:

Global optimal solution found.Objective value:                              136.0000Infeasibilities:                              0.000000Total solver iterations:                             9Elapsed runtime seconds:                          0.04Variable           Value        Reduced CostC( 1, 1)        25.00000            0.000000C( 1, 2)        29.00000            0.000000C( 1, 3)        1000.000            0.000000C( 1, 4)        42.00000            0.000000C( 1, 5)        37.00000            0.000000C( 2, 1)        1000.000            0.000000C( 2, 2)        38.00000            0.000000C( 2, 3)        1000.000            0.000000C( 2, 4)        20.00000            0.000000C( 2, 5)        33.00000            0.000000C( 3, 1)        34.00000            0.000000C( 3, 2)        27.00000            0.000000C( 3, 3)        28.00000            0.000000C( 3, 4)        40.00000            0.000000C( 3, 5)        1000.000            0.000000C( 4, 1)        1000.000            0.000000C( 4, 2)        42.00000            0.000000C( 4, 3)        36.00000            0.000000C( 4, 4)        23.00000            0.000000C( 4, 5)        45.00000            0.000000C( 5, 1)        34.00000            0.000000C( 5, 2)        27.00000            0.000000C( 5, 3)        28.00000            0.000000C( 5, 4)        23.00000            0.000000C( 5, 5)        45.00000            0.000000X( 1, 1)        1.000000            0.000000X( 1, 2)        0.000000            11.00000X( 1, 3)        0.000000            981.0000X( 1, 4)        0.000000            28.00000X( 1, 5)        0.000000            10.00000X( 2, 1)        0.000000            969.0000X( 2, 2)        0.000000            14.00000X( 2, 3)        0.000000            975.0000X( 2, 4)        0.000000            0.000000X( 2, 5)        1.000000            0.000000X( 3, 1)        0.000000            0.000000X( 3, 2)        0.000000            0.000000X( 3, 3)        1.000000            0.000000X( 3, 4)        0.000000            17.00000X( 3, 5)        0.000000            964.0000X( 4, 1)        0.000000            966.0000X( 4, 2)        0.000000            15.00000X( 4, 3)        0.000000            8.000000X( 4, 4)        1.000000            0.000000X( 4, 5)        0.000000            9.000000X( 5, 1)        0.000000            0.000000X( 5, 2)        1.000000            0.000000X( 5, 3)        0.000000            0.000000X( 5, 4)        0.000000            0.000000X( 5, 5)        0.000000            9.000000

lingo所得的方案与matlab一致。甲——B ,乙——D ,丙——E ,丁——A ,  总时间为105(d).

lingo的运行结果怎么解读的问题,我已经在上一篇“非线性规划”的文章中说了,不再赘述,不懂的同学可以过去看一看,以后用lingo解决的问题还会有,不会每次都讲解怎么看运行结果哦,希望见谅,下面是“非线性规划”文章的链接。

数据建模-用非线性规划解决问题

    整数规划问题是线性规划问题的一种特殊情况,本例题为典型的非标准形式的指派问题,根据题目的不同要求,相应地添加虚拟人或任务以及修改效率矩阵。另外,在转换成程序语言时,引进的M可以任意取定一个较大的数,方便计算的进行。

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

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

相关文章

Oracle 多表 连接 顺序 与 性能关系 测试

一. 创建表并insert 数据 create table ta (id number,name varchar2(10)); create table tb(id number,job varchar2(10)); begin for i in 1..1000000 loop begin insert into ta values(i,dave); commit; end; end loop; end; begin for i in 1..1000000 loop begin if i<…

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

线性规划研究时间较早&#xff0c;在实际应用中也比较成熟&#xff0c;它是一种辅助人们进行科学管理的数学方法&#xff0c;为合理地利用有限的人力、物力、财力等资源作出的最优决策&#xff0c;提供科学的依据。 课题名称&#xff1a;配货问题&#xff0c;使运费收入最大 现…

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

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

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

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

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

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

LeetCode 135. 分发糖果(DP)

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

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

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

词云图 - WorldCloud - Python代码实现

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

[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;帮助大家捡起那些年被忘记的数学。 ● 单变量线性回归&…

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

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

数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码

目录 归一化 数据归一化的背景介绍 MinMaxScaler&#xff1a;归一到 [ 0&#xff0c;1 ] MaxAbsScaler&#xff1a;归一到 [ -1&#xff0c;1 ] 标准化 去均值&#xff0c;方差规模化 归一化 数据归一化的背景介绍 在之前做聚类分析的时候我们发现&#xff0c;聚类的…

loadrunner 配置远程监控windows服务器系统资源

今天决定监控远程windows xp上的系统资源&#xff0c;本来以为应该很好连接&#xff0c;在同一个局域网内&#xff0c;结果出了一堆问题&#xff0c;可能是第一次就让我遇到了一个棘手的操作系统&#xff0c;郁闷&#xff01; &#xff08;1&#xff09;保证装有loadrunner的测…

Python数据清洗 - 洗什么?怎么洗?看完就明白了

目录 缺失值处理 删除缺失值 插补缺失值 不处理缺失值 重复值处理 异常值处理 遍历查找异常值&#xff0c;并根据规则调整大小 删除异常值 视为缺失值后进行插补 数据挖掘过程中&#xff0c;采集的原始数据里存在着各种不利于分析与建模工作的因素&#xff0c;比如数…

LeetCode 743. 网络延迟时间(最短路径)

文章目录1. 题目2. 解题2.1 弗洛伊德1. 题目 有 N 个网络节点&#xff0c;标记为 1 到 N。 给定一个列表 times&#xff0c;表示信号经过有向边的传递时间。 times[i] (u, v, w)&#xff0c;其中 u 是源节点&#xff0c;v 是目标节点&#xff0c; w 是一个信号从源节点传递到…

逻辑回归 - sklearn (LR、LRCV、MLP、RLR)- Python代码实现

目录 LR&#xff08;LogisticRegression&#xff09; - 线性回归 LRCV&#xff08;LogisticRegressionCV &#xff09;- 逻辑回归 MLP&#xff08;MLPRegressor&#xff09; - 人工神经网络 RLR&#xff08;RandomizedLogisticRegression&#xff09;-随机逻辑回归 logisti…

轻松看懂机器学习十大常用算法 - 基础知识

通过本篇文章可以对机器学习ML的常用算法有个常识性的认识&#xff0c;没有代码&#xff0c;没有复杂的理论推导&#xff0c;就是图解一下&#xff0c;知道这些算法是什么&#xff0c;它们是怎么应用的&#xff0c;例子主要是分类问题。 算法如下&#xff1a; 决策树随机森林算…

数据离散化 - 等宽等频聚类离散 - Python代码

目录 等宽离散 等频离散 聚类离散 附录&#xff1a; rolling_mean函数解释 cut函数解释 其他数据预处理方法 一些数据挖掘算法中&#xff0c;特别是某些分类算法&#xff08;eg:ID3算法、Aprioroi算法等&#xff09;&#xff0c;要求数据是分类属性形式。因此常常需要将…

LeetCode 1444. 切披萨的方案数(DP)

1. 题目 给你一个 rows x cols 大小的矩形披萨和一个整数 k &#xff0c;矩形包含两种字符&#xff1a; ‘A’ &#xff08;表示苹果&#xff09;和 ‘.’ &#xff08;表示空白格子&#xff09;。 你需要切披萨 k-1 次&#xff0c;得到 k 块披萨并送给别人。 切披萨的每一刀…

获取数据 - 将Excel文件读入矩阵matrix中 - Python代码

机器学习中&#xff0c;很多算法的计算逻辑是基于数学的&#xff0c;免不了求特征值和特征向量这种事情&#xff0c;因此&#xff0c;在数据预处理的时候&#xff0c;将数据源中的数据转储成矩阵格式是很有必要的。 原数据&#xff1a; 代码&#xff1a; import numpy as np…