matlab怎么打出派,Matlab 指派问题模型代码

本文介绍了如何使用Matlab解决指派问题,包括任务与人的效益矩阵,以及不同人数与任务数情况下的约束条件。通过提供的模型代码,展示了如何利用整数规划函数intlinprog找到最优解。
摘要由CSDN通过智能技术生成

Matlab 指派问题模型代码

指派问题的基本内容

一般来说指派问题解决的是如何将任务分配到人, 使得任务完成的效益最大化 (成本型效益则求最小值, 利润型效益则求最大值). 上述问题一个 0 - 1 整数规划问题.

问题围绕着任务和人展开, 即存在着 m 个任务, 以及 n 个人. 每个人处理每个任务都会有对应的效益, 将所有人的情况写在一起, 就组成了一个 m*n 的效益矩阵.

当 m = n 时, 即此时, 任务数和人数相等, 那么每个人都会处理一项任务, 存在如下约束:

对于任务来说, 每个任务必须分配一个人;

对于人来说, 每个人必须分配一个任务.

类似的, 当 m

对于任务来说, 每个任务必须分配一个人;

对于人来说, 每个人可能会被分配到一个任务, 也可能没有分配到任务.

当 m> n 时, 任务数大于人数, 则存在如下约束:

对于任务来说, 每个任务必须分配一个人;

对于人来说, 每个人可能会被分配到一个或者多个任务, 但最多不超过任务总数.

模型调用形式

[x,min_fval,exitflag] = myTaskArrange2(f)

调用说明:

输入变量为一个 m*n 的效益矩阵, 其中 m 行为 m 个任务, n 列为 n 个人.

输出变量 x 为与效益矩阵同型的 0-1 矩阵, 1 表示被安排, 0 表示不被安排; min_fval 为最优目标值; exitflag 为退出标识符, 一般等于 1 表示解收敛.

模型代码

function [x,min_fval,exitflag] = myTaskArrange2(f)

%% 程序功能说明

% 求解不平衡任务指派问题

%==== 输入参数 ===&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值