某公司有6个建筑工地要开工每个工地的位置用平面坐标系ab表距离单位:千米 及水泥日用量d吨由下表给出。目前有两个临时料场的位置未知日储量各有20吨。假设从料场到工地之间均有直线道路相连。各工地的参数abd为12512538750755054754575573656725725112问料场应建在何处此时如何分配两个料场运往各工地的水泥使总的吨千米数最小。使用matlab的fmincon求解上述问题给
clear clc
% 工地参数 sites = [1.25,1.25,3; 8.75,0.75,5; 0.5,4.75,4; 5.75,5,7; 3,6.5,6; 7.25,7.25,11]; n = size(sites,1); % 工地数量
% 目标函数 f = @(x) sum(pdist2([x(1),x(2)],sites(:,1:2)).*sites(:,3));
% 约束条件 A = [1,0;0,1;-1,0;0,-1]; b = [10;10;0;0]; lb = [0,0]; ub = [10,10];
% 初始点 x0 = [5,5];
% 求解 options = optimoptions('fmincon','Display','iter','Algorithm','sqp'); [x,fval] = fmincon(f,x0,A,b,[],[],lb,ub,[],options);
fprintf('两个料场的位置分别为:(%f,%f)和(%f,%f)\n',x(1),x(2),x(3),x(4)); fprintf('最小的总吨千米数为:%f\n',fval)
原文地址: https://www.cveoy.top/t/topic/fq8C 著作权归作者所有。请勿转载和采集!