题目简述

nn 个人分配给 mm 个工作岗位 (nm)(n \geqslant m),每个岗位 11 个人。已知第每个人在每个岗位上的效率,求最佳分配方案使得所有人的效率总和最大。

设立变量

设立变量 xi,jx_{i,j}1in1\leqslant i \leqslant n1jm1\leqslant j \leqslant mxi,j=0x_{i,j}=0 1 1xi,j=1x_{i,j}=1 表示第 ii 个人做第 jj 个工作,xi,j=0x_{i,j}=0 则表示第 ii 个人不做第 jj 个工作。

设立变量 ci,jc_{i,j}1in1\leqslant i \leqslant n1jm1\leqslant j \leqslant mci,jc_{i,j} 表示第 ii 个人在第 jj 个上的效率。

目标函数

zmax(xi,j)=i=1nj=1mci,j×xi,jz_{max}(x_{i,j})=\sum_{i=1}^{n}\sum_{j=1}^{m}c_{i,j} \times x_{i,j}

一个人的岗位选择中为 11 的那个是他选择的岗位,将总和加上他在这个岗位工作的效率。如果是 00 就不加了。目标函数就是求 z(xi,j)z(x_{i,j}) 的最大值。

限制条件

  • xi,j=0x_{i,j}=0 1 1(取值范围)

  • i=1nxi,j=1,1jm\sum_{i=1}^{n}x_{i,j}=1,1\leqslant j \leqslant m(每个岗位有且仅有一个人)

  • j=1mxi,j1,1in\sum_{j=1}^{m}x_{i,j}\leqslant 1,1\leqslant i \leqslant n(每个人最多参与一个岗位)

模型求解

  1. 生成数据

先假设 n=8n=8m=6m=6,然后使用 Excel 随机生成 ci,jc_{i,j} 的值,数据范围为 [0,10)[0,10)xi,jx_{i,j} 也是一张 n×mn \times m 的表格。

  1. 目标函数

随意带入 xi,jx_{i,j} 的值,将 z(xi,j)z(x_{i,j}) 的值用公式算出。

  1. 限制条件

将限制条件相关的值用公式算出,并且加入 xi,jx_{i,j} 为二进制的约束。

  1. 模型求解

将所有变量和限制条件加入,使用 Excel 求出最优 xi,jx_{i,j} 和对应的 zmax(xi,j)z_{max}(x_{i,j})

最终求得 zmax(xi,j)=57.1z_{max}(x_{i,j})=57.1xi,jx_{i,j} 如上图所示。