单仓库设施选址决策方法(重心法,C语言代码)

原创 2007年07月17日 20:45:00

下面是大二的时候仓储老师布置的一个作业,是关于单仓库选址的问题,要我们用C语言写代码,编一个程序!

这只是一个作业!!!

单仓库设施选址决策方法

 

 

       单设施选址模型有不同的名称,如:精确重心法、网格法和重心法等,因为选址因素只包括运输费率和该点的货物运输量,所以此方法较为简单。

 

       我们以预计仓库点位到达各个目的点位的成本最低为考察目标:

 

       即:

 

              Min TC=ViRidi                            i 遍历所有目的地           ……………(0

 

       其中: TC——总运输成本;

 

                     Vi——i 点运输量;

 

                     Ri——到 i 点的运输费率;

 

                     di——从待定仓库位置到i 点的距离。

 

      

 

       在坐标平面中设待定仓库坐标为(X0,Y0

 

               ViRiXi/di
    
 X0=                               ........(1
                 ViRi/di
                  ViRiYi/di
     Y0=                             …(2
                   ViRi/di

 

       其中di可以坐标间公式
    di =SQR((X0-Xi)2+(Y0-Yi)2)                 …(3

 

       该方法求解过程:

 

1、确定各目的地点的坐标,同时确定各点货物运输量和直线距离运费;

 

2、不考虑距离因素,用重心公式估算初始选址点:

 

 

              ViRiXi
 X0=                                …(4
               ViRi
                 ViRiYi
   Y0                                …(5
                ViRi

 

 

3、根据公式(3),用步骤2得到的(X0,Y0)计算di

 

4、di代入公式(1),(2),得到修正的(X0,Y0)坐标;

 

5、根据修正的(X0,Y0)坐标,再重新计算di

 

6、 重复步骤4和步骤5直至(X0,Y0)坐标在连续迭代过程中都不再变化或变化在误差范围内;

 

7、最后,如果需要,利用公式(0)计算最优选址的总成本。

 


#include <stdio.h>
#include <math.h>
struct xuanzhi
{
  double x,y,v,r;

}xz[5]={{3,8,2000,0.050},{8,2,3000,0.050},{2,5,2500,0.075},{6,4,1000,0.075},{8,8,1500,0.075}};

main()
{
    struct xuanzhi;
    int i;
    double d[5];
    double x0=0.0,y0=0.0,min=0.0,TC=0.0,t=0.0,m=0.0,w=0.0,x1=0.0,y1=0.0,m1=0.0,m2=0.0,w2=0.0,t1=0.0,m3=0.0,w3=0.0;

     for(i=0;i<5;i++)
       {
           m+=xz[i].v*xz[i].r*xz[i].x;
           w+=xz[i].v*xz[i].r;
           m1+=xz[i].v*xz[i].r*xz[i].y;
       }
           x0=m/w;
           y0=m1/w;
     for(i=0;i<5;i++)
       {
            d[i]=sqrt((xz[i].x-x0)*(xz[i].x-x0)+(xz[i].y-y0)*(xz[i].y-y0));
            m3+=xz[i].v*xz[i].r*xz[i].x/d[i];
            t1+=xz[i].v*xz[i].r*xz[i].y/d[i];
            w3+=xz[i].v*xz[i].r/d[i];
        }
            x1=m3/w3;
            y1=t1/w3;
    do
    {    
            x0=x1;
            y0=y1;
       for(i=0;i<5;i++)
       {
            d[i]=sqrt((xz[i].x-x0)*(xz[i].x-x0)+(xz[i].y-y0)*(xz[i].y-y0));
            m2+=xz[i].v*xz[i].r*xz[i].x/d[i];
            t+=xz[i].v*xz[i].r*xz[i].y/d[i];
            w2+=xz[i].v*xz[i].r/d[i];
        }

        x1=m2/w2;
        y1=t/w2;
        m2=0.0;
        t=0.0;
        w2=0.0;
    }while(fabs(x0-x1)-0.00000001>0&&fabs(y0-y1)-0.00000001>0);
    printf("x0=%12lf,y0=%12lf/n",x0,y0);
    for(i=0;i<5;i++)
    {
        d[i]=sqrt((xz[i].x-x0)*(xz[i].x-x0)+(xz[i].y-y0)*(xz[i].y-y0));
        min=xz[i].v*xz[i].r*d[i];
        TC+=min;
    }
    printf("min TC=%12lf/n",TC);
    getch();
}
 

邮局选址问题 源代码以及测试数据

  • 2012年03月24日 11:15
  • 65KB
  • 下载

算法导论 第十六章:贪心算法之单任务调度问题

贪心算法是使所做的选择看起来都是当前最优的,通过所做的局部最优选择来产生一个全局最优解。 其具有的性质如下: 1)贪心选择性质:一个全局最优解可以通过局部最优(贪心)选择来达到。即,在考虑如何做选...
  • u010183397
  • u010183397
  • 2015年07月18日 10:07
  • 2870

0-1背包问题、贪心算法、动态规划

0-1背包问题
  • songshiMVP1
  • songshiMVP1
  • 2016年08月29日 18:32
  • 4044

[算法]背包问题的经典算法和贪心算法解答,C语言实现

圣诞前夜讲点比较具有圣诞感觉的算法,背包问题算法,这里我写了经典算法和贪心算法两种解决方法,因为时间不多,所以给出的数组是已经排序的,因为贪心算法可能要用得到,经典算法因为是一个一个比较,因此排序也就...
  • yctccg
  • yctccg
  • 2016年08月16日 10:38
  • 3696

费率非线性的重心法选址c语言代码

  • 2012年01月12日 16:07
  • 4KB
  • 下载

决策树C语言代码

  • 2015年07月13日 16:02
  • 7KB
  • 下载

C语言代码仓库

  • 2014年09月17日 21:51
  • 12.25MB
  • 下载

学校超市选址问题(数据结构C语言版)

  • 2010年01月06日 16:43
  • 47KB
  • 下载

C语言超市选址

  • 2014年03月31日 08:36
  • 5KB
  • 下载

应急设施的优化选址-帮同学建模解题

今日马同学给了我一个任务,数学建模啥的……#include #include #include #include using namespace std; //////////////////...
  • okcd00
  • okcd00
  • 2013年11月21日 23:56
  • 783
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单仓库设施选址决策方法(重心法,C语言代码)
举报原因:
原因补充:

(最多只允许输入30个字)