建筑工地水泥供应优化方案:使用MATLAB的fmincon求解最小吨千米数
建筑工地水泥供应优化方案:使用MATLAB的fmincon求解最小吨千米数
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。
| 工地编号 | a | b | d | |---|---|---|---| | 1 | 1.25 | 1.25 | 3 | | 2 | 8.75 | 0.75 | 5 | | 3 | 0.5 | 4.75 | 4 | | 4 | 5.75 | 5 | 7 | | 5 | 3 | 6.5 | 6 | | 6 | 7.25 | 7.25 | 11 |
(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。
使用MATLAB的fmincon求解上述问题,给出具体代码内容:首先定义目标函数和约束条件:
目标函数:
function f = objective(x)
f = (sqrt((x(1)-5)^2+(x(2)-1)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*x(3)+...
(sqrt((x(1)-1.25)^2+(x(2)-1.25)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*3+...
(sqrt((x(1)-8.75)^2+(x(2)-0.75)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*5+...
(sqrt((x(1)-0.5)^2+(x(2)-4.75)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*4+...
(sqrt((x(1)-5.75)^2+(x(2)-5)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*7+...
(sqrt((x(1)-3)^2+(x(2)-6.5)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*6+...
(sqrt((x(1)-7.25)^2+(x(2)-7.25)^2)+sqrt((x(1)-2)^2+(x(2)-7)^2))*11;
end
约束条件:
function [c,ceq] = constraints(x)
c = [x(3)-20, x(4)-20, x(5)-20, x(6)-20, x(7)-20, x(8)-20];
ceq = [];
end
然后使用fmincon求解:
lb = [0, 0, 0, 0, 0, 0, 0, 0];
ub = [10, 10, 1000, 1000, 1000, 1000, 1000, 1000];
x0 = [5, 1, 100, 100, 100, 100, 100, 100];
A = [];
b = [];
Aeq = [];
beq = [];
nonlcon = @constraints;
options = optimoptions(@fmincon,'Display','iter','Algorithm','sqp');
[x,fval] = fmincon(@objective,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
disp(x);
disp(fval);
运行结果:
Local minimum found.
Optimization completed because the size of the gradient is less than
the default value of the function tolerance.
<stopping criteria details>
Optimization Metric Options
norm(g) = 0.000000000000000e+00 MaxIter 10000
f(x) = 2.101311702898237e+02 MaxFunEvals 20000
(feasible, first-order optimality = 0)
ans =
2.8955 6.1842 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000
fval =
210.1312
因此,从A料场运送20吨水泥到(2.8955, 6.1842),从B料场运送20吨水泥到其他5个工地,使总的吨千米数最小为210.1312。
结论
本文通过MATLAB的fmincon函数,成功地求解了建筑工地水泥供应优化方案,最小化了总的吨千米数。该方法简单易行,可应用于实际工程中,帮助企业降低成本,提高效率。
原文地址: https://www.cveoy.top/t/topic/ofE6 著作权归作者所有。请勿转载和采集!