资源简介

在对多个分仓库进行送货时,将其中能取得最大“节约里程”的两个分仓库合并在一条线路上,进行巡回送货,能够取得最大的节约里程。同时,在不超过运输车辆载货容量的条件下,对这条选定的巡回线路,如能将其它分仓库按其能取得“节约里程”的大小纳入这条线路中,则能取得更大的里程节约效果。

资源截图

代码片段和文件信息

#include
#include
#include
using namespace std;
typedef struct dtaD
{
double val;
int ijsign;
int headtail;
}dtaD;
typedef struct car
{
int store[10];
double dc; 
}CAR ;
void main()
{
dtaD D[100];
CAR c[100];
int sign[100]={0};
int car[100]={0};
int ncnsijk=1mtemp;
double dc[100]ds[100]cij[100][100];
double v[100]={0.0};
ifstream infile;
infile.open(“parameter.txt“);
infile>>nc>>ns;
for(i=1;i<=nc;i++)
{
infile>>dc[i];
}
for(i=1;i<=ns;i++)
{
infile>>ds[i];
}
for(i=0;i<=ns;i++)
{
for(j=0;j<=ns;j++)
{
infile>>cij[i][j];
}
}
infile.close();
for(i=1;i<=ns;i++)
{
for(j=i+1;j<=ns;j++)
{
     D[k].i=i;
D[k].val=cij[0][i]+cij[0][j]-cij[i][j];
D[k].j=j;
k++;
}
}
D[1].head=0;
D[1].tail=0;
D[0].tail=1;
D[0].val=999999999;

for(i=2;i<=(ns-1)*ns/2;i++)
{
j=0;
while(D[i].val {
j=D[j].tail;
}
if(D[j].tail==0&&D[i].val {
D[j].tail=i;
D[i].head=j;
D[i].tail=0;
}
else
{
D[i].tail=j;
D[i].head=D[j].head;
D[D[j].head].tail=i;
D[j].head=i;
}
}
i=0;
while(D[i].tail!=0)
{
i=D[i].tail;
cout< cout< }
k=1;m=1;
while(k)
{
if(sign[D[k].i]==0&&sign[D[k].j]==0)
{
if(ds[D[k].i]+ds[D[k].j]<=dc[m])
{
     sign[D[k].i]++;
     sign[D[k].j]++;
     v[D[k].i]=ds[D[k].i]+ds[D[k].j];
     v[D[k].j]=ds[D[k].i]+ds[D[k].j];
car[D[k].i]=m;
car[D[k].j]=m;
c[m].store[0]=2;
c[m].store[1]=D[k].i;
c[m].store[2]=D[k].j;
     m++;
}
}
else if((sign[D[k].i]==0&&sign[D[k].j]==1))
{
if(ds[D[k].i]+ds[D[k].j]<=dc[D[k].j])
{
     sign[D[k].i]++;
     sign[D[k].j]++;
     v[D[k].i]=ds[D[k].i]+ds[D[k].j];
car[D[k].i]=car[D[k].j];
c[car[D[k].j]].store[0]++;
if(c[car[D[k].i]].store[1]==D[k].j)
{
for(i=c[car[D[k].j]].store[0]-1;i>1;i--)
{
c[car[D[k].j]].store[i]=c[car[D[k].j]].store[i+1];
}
c[car[D[k].j]].store[1]=D[k].i;
}
else
{
c[car[D[k].j]].store[c[car[D[k].j]].store[0]]=D[k].i;
}
}
}
else if((sign[D[k].i]==1&&sign[D[k].j]==0))
{
if(ds[D[k].i]+ds[D[k].j]<=dc[D[k].i])
{
     sign[D[k].i]++;
     sign[D[k].j]++;
     v[D[k].j]=ds[D[k].i]+ds[D[k].j];
car[D[k].j]=car[D[k].i];
c[car[D[k].i]].store[0]++;
if(c[car[D[k].i]].store[1]==D[k].i)
{
for(i=c[car[D[k].j]].store[0]-1;i>1;i--)
{
c[car[D[k].j]].store[i]=c[car[D[k].j]].store[i+1];
}
c[car[D[k].j]].store[1]=D[k].j;
}
else
{
c[car[D[k].j]].store[c[car[D[k].j]].store[0]]=D[k].j;
}
}
}
else if(sign[D[k].i]==1&&sign[D[k].j]==1)
{
if(ds[D[k].i]+ds[D[k].j]<=dc[D[k].i])
{
car[D[k].j]=car[D[k].i];
if(c[car[D[k].i]].store[c[car[D[k].i]].store[0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5415  2098-01-26 23:06  jieyue.cpp
     文件         184  2010-01-26 23:00  parameter.txt

评论

共有 条评论