Page 308 - 数学建模算法与应用
P. 308
Mathematical Modeling Algorithms and Applications
数学建模算法与应用
Atemp(1, nPlant*nCustomer + nCustomer + 5) = -1;
Atemp(1, 3*length(customer) + 1) = 1;
Aineq = [Aineq; Atemp];
bineq = [bineq; 100];% 其他需求量约束
Atemp = sparse(nCustomer, nPlant*nCustomer + nCustomer*2);
for j = 1:nCustomer
Atemp(j, 1:nPlant*nCustomer(nPlant*(j-1)+1:nPlant*j)) = 1*ones(1,
nPlant);
Atemp(j, nPlant*nCustomer + 5 + j) = 1;
Atemp(j, nPlant*nCustomer + nCustomer + 5 + j) = -1;end
Aineq = [Aineq; Atemp];
bineq = [bineq; 0.8*b(:)’];% 附加约束
Atemp = sparse(1, nPlant*nCustomer + nCustomer*2);
Atemp(1, nPlant*nCustomer + 10) = -1;
Atemp(1, 1*length(customer) + 2) = 1;
Aineq = [Aineq; Atemp];
bineq = [bineq; 0];% 目标函数
f = [reshape(C, [], 1); zeros(nCustomer*2, 1)];
f = f + [zeros(nPlant*nCustomer, 1); p1; p2];
% 设置求解器选项
options = optimoptions(‘intlinprog’, ‘Display’, ‘iter’, ‘AbsoluteGapTolerance’,
1e-6);% 解决问题
[xOpt, fVal, exitflag, output] = intlinprog(f, [], Aineq, bineq, Aeq,
beq, lb, ub, options);% 显示结果
if exitflag > 0
disp(‘最优解:’)
disp(xOpt)
disp(‘目标函数值:’)
disp(fVal)
else
298

