有一个淘宝商户,在某城市有n个仓库,每个仓库的储货量不同,现在要通过货物运输,将每次仓库的储货量变成一致的,n个仓库之间的运输线路围城一个圈,即1->2->3->4->...->n->1->...,货物只能通过连接的仓库运输,设计最小的运送成本(运货量*路程)达到淘宝商户的要求,并写出代码。
网上的解答多如牛毛, 也乱七八糟, 这里是比较好的一个
列方程, 将所有的cost用一个变量表示。
如
av表示平均下来每个仓库的容量。 ki表示仓库i向仓库i+1输送多少(可以为负),列出方程组
wi表示仓库i的存储量
av=w1+kn-k1
av=w2+k1-k2
av=w3+k2-k3
...
av=wn+ kn-1 + kn
将所有k都用kn表示, 有
k1=kn+ w1 - av
k2=kn+ w1+w2 - 2*av
k3=kn+ w1+w2+w3 - 3*av
...
kn = kn //这里就不必也不能推出别的式子了
令 sum(i) = -(w1+w2+...+wi-i*av) (写成这样方便)
目标函数:
{ |kn-sum(1)|+|kn-sum(2)|+...+|kn-sum(n-1)| + |Kn| }
最小一乘,