- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ii i
i
i i
单一物流中心选址重心法 c++程序设计
(选址)某企业有五个供应商,他们的位置分别是(4+i,4+i),(12+i,4+i ),(2+i,7+i), (11+i,11+i),(7+i,14+i),该企业从这五个供应商处的采购量每年为
4+i、3+i、2+i、4+i、1+i,假设运输费率相同,i 为序号的末位数。请用计算机编写一个通用程 序,完成下面的题目。
用城市距离为该企业推荐一个地址,使该企业的费用最省。
将第 1 问中的结果作为一个初始解,用欧氏距离进行重新优化,推荐一个最优的位置。 要求:
前后两次结果之差小于 0.001;
程序的通用性高,可以满足任何多个供应商;
程序的可读性强;
操作界面友好;
在手册中要记录所有的程序、运行结果及相关界面图形。
解:
图 供应地和需求地分布情况
重心法是一种模拟方法。这种方法将物流系统中的需求点和资源点看成是分布 在某一平面范围内的物流系统,各点的需求量和资源量分别看成是物体的重量,物体 系统的重心作为物流网点的最佳设置点,利用求物体系统重心的方法来确定物流网点 的位置。
运输总费用 minTC ? 式中:Vi—i 点运输量;
1
m? n
? V R d
i ? 1
(1)
220 ??X
2
2
0 ?
?X
R
i
—待定物流中心到 i 点的运输费率;
di—待定物流中心到 i 点的距离。 求解算法—数值分析法(重心法)
1)
设供应点和需求点所在地的坐标为(Xi,Yi),待定物流中心的位置坐标为
(X
0
,Y
0
)
则
d i ?
?Xi?X 0 ???Yi?Y0?
(2)
2)
将(2)式代入(1)式,然后求运输总费用 TC 对 X0 和 Y0 的偏导数,并令其等 于零。
TC ?
?Vi Ri
( X i ?X 0 )
2
?(Yi ?Y0 )
2
?TC
?X0
??
?
Vi
Ri
( X
i
?X
d i
0
)
?0
?
Vi Ri X i Vi Ri d i d i
?0
X 0 ?
?(Vi Ri X i d i ) ?(Vi Ri d i )
(3)
Y0 ?
?(Vi Ri Yi d i ) ?(Vi Ri d i )
(4)
上述两式中仍含有未知数 di,因此一次不能求得 X0 和 Y0(解析解),需要通过迭代收敛 法得到数值解。
迭代收敛法具体步骤:
1、先用重心公式估算初始选址点(大致位置):
X
0
?
?(Vi Ri X i ) ?(Vi Ri )
(5)
Y0 ?
?(Vi Ri Yi ) ?(Vi Ri )
(6)
2、将 X
0
和 Y
0
代入公式 2,计算 d
i(i=1,2,…,m+n);
3、将 di 代入公式 3 和 4,解出修正值 X0 和 Y0;
4、根据修正值 X
0
和 Y
0
,再重新计算 d
i;
5、重复步骤 3 和 4,直至 X0 和 Y0 的值在连续迭代过程中不再变化,即△
2
X
0
≈0,△Y
0
≈0,即得到精确仓库选址位置,继续计算无意义。
程序设计具体步骤:
Step1:
利用几何重心公式(5)和(6)估算初始点 X0,Y0
X 0 ?
?(Vi Ri X i ) ?(Vi Ri )
Y0
Step2:
?
?(Vi Ri Yi ) ?(Vi Ri )
将 X
0
,Y
0
代入距离公式(2),计算 d
i(i=1,2,…,5)
d 1 ?
( X 1 ?X 0 )
2
?(Y1 ?Y0 )
2
d 2 ?
( X 2 ?X 0 )
2
?(Y2 ?Y0 )
2
d 3 ?
( X 3 ?X 0 )
2
?(Y3 ?Y0 )
2
d 4 ?
( X 4 ?X 0 )
2
?(Y4 ?Y0 )
2
d
5
?
( X
5
?X
0
)
2
?(Y5
?Y0
)
2
Step3:
将 d
i
(i=1,2,…,5)代入公式 3 和公式 4,修正值 X
0
和 Y
0
X
0
?
?(Vi Ri X i d i ) ?(Vi Ri d i )
Y0 ?
?(Vi Ri Yi d i ) ?(Vi Ri d i )
Step4:
重复步骤 2 和 3,直至修正值 X0 和 Y0 的值在连续迭代过程中不再变化。(用 C++程序进 行编译),程序如下所示:
#include iostream.h
#include math.h
#include stdlib.h
文档评论(0)