最新公告:
五湖四海热线

18653267775

常见问题

problems
联系我们
联系我们
青岛五湖四海诚信物流有限公司
咨询热线:18653267775
公司电话:0532-67769988
企业邮箱:qdwhshwl@126.com
总部地址:青岛市城阳区仙山东路万都物流园

北京地址:北京市丰台区新发地汉龙南站大户型8号

      电话:010-67926888 67937788 58050098

     https://www.qdwhshwl.com.cn


【青岛到天津物流】物流配送路径最优算法,让最后一公里配送路径尽可能短
当前位置:首页> 常见问题

【青岛到天津物流】物流配送路径最优算法,让最后一公里配送路径尽可能短

* 来源: * 作者: admin * 发表时间: 2019/10/24 17:23:00 * 浏览: 38

如果大家希望直接使用路径优化算法服务,欢迎大家查看 物流路径规划API 

 

1. 物流企业为N个客户配送产品,企业有一台卡车,客户的包裹均为小件,一车可以全部装载。请设计配送路径,使得配送所通过的总路程最短。

2. 分别做三次实验,每次试验中客户数分别为N = 10, 100, 1000

3. 每次实验按下述步骤进行:

(1) 客户分别为1, 2, …, N,随机产生每两个客户之间的距离

(2) 卡车从物流企业出发,遍历所有客户,每个客户只需访问一次,最后卡车要返回物流企业

(3) 记录下卡车访问客户的顺序π,同时计算卡车所通过的总路程L

(4) 首先按顺序遍历,即访问客户的顺序为1, 2, …,N,记录总路程L0。然后,请设计配送方法,所得配送总路程L1,计算改进的百分比α:

α = (L1 – L0)/L0

若α> 30%,实验成功。记录下此时的算法、访问顺序和总路程。

#include
#include
#include
#include 
#define maxDistance 100 // 随机取2个客户之间距离的最大上限 
#define N 50 //定义客户数为N 
#define maxNumber 1000000 
using namespace std;
typedef struct listNode{
int value;
struct listNode * next;

} * list;

void initial (float distanceMatrix [N+1][N+1] )//初始化距离矩阵的值 
{ for(int i=0;i<N+1;i++)
{for(int j=0;j<=i;j++)
{ srand((int)time(NULL)+i*130+j*10); //设置随机函数的种子 
distanceMatrix[i][j]=rand()%maxDistance+1;//随机数赋值(1~maxDistance) 

distanceMatrix[j][i]= distanceMatrix[i][j];
if(j==i)
{ distanceMatrix[j][i]=0;
distanceMatrix[i][j]=0;
}



}






//以下是范例:共三个客户: 
//解题思想: 假设首先选择从物流中心到(0)到客户 1,那么只要求1到0最短路径。然后求1到0最短路径又可以继续分为子问题。。。
//方法缺陷 : 送货车回来的路可以是重复的,而本算法只假定了 每次路过不同节点。
//对于解决旅行商问题 ,如此的动态规划并不是最佳的算法。算法性能较差,对于 10*10的矩阵已经很吃力了。 


for(int i=0;i<N+1;i++) //打印距离矩阵 
{
for(int j=0;j<N+1;j++)
{
cout<<distanceMatrix[i][j]<<" br="" style="box-sizing: border-box;" float="" l0="l0+distanceMatrix[i][(i+1)%(N+1)];<br" void="" calculatel0="" distancematrix="" int="" i="0;i<N+1;i++)<br" list="" ::iterator="" j="notSolvedV.begin();j!=notSolvedV.end();j++)<br" if="" cur="=*j)<br" l="new" value="cur;<br" next="p;" return="" min="x;" x="distanceMatrix[cur][notSolvedV[i]]+getMinDisatance(distanceMatrix,notSolvedV[i],notSolvedV,p);<br" u="p-" delete="" p="u;<br" l1="getMinDisatance(distanceMatrix,0,notSolvedV,L);<br" --="">";
L=L->next;
}
cout<<"0 br="" style="box-sizing: border-box;" l1:="" int="" float="" distancematrix="" calculatel0="" return="" --="">
}