计算 6 个产地到 8 个销地的最小费用运输问题。单位商品运价如表所示。
单位商品运价表
产地 \ 销地 | \(B_1\) | \(B_2\) | \(B_3\) | \(B_4\) | \(B_5\) | \(B_6\) | \(B_7\) | \(B_8\) | 产量 |
\(A_1\) | 6 | 2 | 6 | 7 | 4 | 2 | 5 | 9 | 60 |
\(A_2\) | 4 | 9 | 5 | 3 | 8 | 5 | 8 | 2 | 55 |
\(A_3\) | 5 | 2 | 1 | 9 | 7 | 4 | 3 | 3 | 51 |
\(A_4\) | 7 | 6 | 7 | 3 | 9 | 2 | 7 | 1 | 43 |
\(A_5\) | 2 | 3 | 9 | 5 | 7 | 2 | 6 | 5 | 41 |
\(A_6\) | 5 | 5 | 2 | 2 | 8 | 1 | 4 | 3 | 52 |
需求量 | 35 | 37 | 22 | 32 | 41 | 32 | 43 | 38 |
解 这是一个运输问题,总的产量大于总的需求量,是满足供应的运输问题。
设\x_{ij}(i = 1,2,\cdots,6;j = 1,2,\cdots,8)\表示产地\(A_i\)运到销地\(B_j\)的量,\(c_{ij}\)表示产地\(A_i\)到销地\(B_j\)的单位运价,\(d_j\)表示销地\(B_j\)的需求量,\(e_i\)表示产地\(A_i\)的产量。
目标函数是使总的运费最小化,即
\min\sum_{i = 1}^{6}\sum_{j = 1}^{8}c_{ij}x_{ij}\
约束条件分为两类。
(1) 需求量约束,\(B_j\)销地的需求量等于所有产地运到\(B_j\)销地的运量和,即
\sum_{i = 1}^{6}x_{ij}=d_j, \quad j = 1,2,\cdots,8.\
(2) 产量约束,\(A_i\)产地运到所有销地的运量和少于等于该地的产量,即
\sum_{j = 1}^{8}x_{ij}\leq e_i, \quad i = 1,2,\cdots,6.\
综上所述,建立如下线性规划模型:
开始手搓
C = reshape(cij, 1, []);
intcon = 1: length(C);
A = [];
for i = 1: 6A_single = zeros(1, length(C));A_single((i - 1) * 8 + 1: 8 * i) = 1;A = [A; A_single];
end
b = [60; 55; 51; 43; 41; 52];
Aeq = [];
for i = 1: 8Aeq_single = zeros(1, length(C));for j = 1: 6Aeq_single(8 * (j - 1) + i) = 1;endAeq = [Aeq; Aeq_single];
end
beq = [35; 37; 22; 32; 41; 32; 43; 38];
lb = zeros(1, length(C));
[x, y] = intlinprog(C, intcon, A, b, Aeq, beq, lb, []);
solution = reshape(x, 6, 8);
disp("运输方案:")
disp(solution);
disp("总费用:");
disp(y);
看下答案:
Over!
题目来源:《数学建模算法与应用》——司守奎