简单举例:
四个事件A,B,C,D需要1,2,3,4,5;5个⼈去完成每个⼈⽤时不⼀样,每个⼈最多只能做⼀件事
⼈,耗时,事件A(事
件)B C D
1(⼈)序号2(min)357 26432
33541
41114
53243
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24% ⽤时事件 A B C D
% ⼈员
% 1 2 3 5 7
% 2 6 4 3 2
% 3 3 5 4 1
% 4 1 1 1 4
% 5 3 2 4 3
c = [2 3 5 7 6 4 3 2 3 5 4 1 1 1 1 4 3 2 4 3]';%⽬标函数系数矩阵intcon = [1:20]; %16个决策变量 A = zeros(4,20);
%A中1-5对应1号的五件事做不做,6-10对应2号。。。。
%最多只能做⼀件,且可以⼀件都不做
for i = 1:5
A(i,(4*i-3):4*i)=1;
end
b = [1;1;1;1;1];
Aeq = [repmat(eye(4),1,5)]; %每个事件只有⼀个⼈参加
beq = [1;1;1;1];
ub = ones(20,1); %约束上限
[x,fval] = intlinprog(c,intcon,A,b,Aeq,beq,lb,ub);
fval
王筱鹏reshape(x,4,5)'
李纳斯LP: Optimal objective value is 6.000000.
Optimal solution found.
Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal value, options.AbsoluteGapTolerance = 0 (the default value). The intcon variables are
棒棒tvinteger within tolerance, options.IntegerTolerance = 1e-05 (the default value).
乳汁分泌fval = 6
ans = 5×4
1 0 0 0
0 0 0 0
成神经细胞瘤0 0 0 1
0 0 1 0
0 1 0 0