此题没有约束条件,目标函数为: 最小化 总里程 = 到每个地点的里程 * 每个地点的送货次数。
代码:
A = [10 30
30 50
16.667 29
0.555 29.888
22.221 49.988];
b = [10 18 20 14 25]';
fun = @(x) sum( sqrt((x(1)-A(:,1)).^2 + (x(2)-A(:,2)).^2) .* b )
x = lsqnonlin(fun,[0 0] )
y = fun(x)
figure
plot(A(:,1),A(:,2),'bo')
hold on
plot(x(1),x(2),'r*')
legend('工厂','仓库')
结果
x =
19.2955 41.5369
y =
1.1825e+03