物流中心选址重心法c程序设计.docVIP

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

文档评论(0)

beifanglei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档