回程启发式算法

#include

#include

main()

{

int m,n,u,v,Q,q,i,j,M,w,r; /*M是一趟最多能搬运的货物数量,w是按照回程启发式算法需要搬运的趟数,

r在循环体中作为一个标识变量,用来判断车子有没有装满*/

int a[1000]; /*数组a[1000]中的元素表示货物在每排货架上的位置,例如a[0]=8表示第一排货架中货物在第8货位;

由于货架的排数n在输入之前是一个不确定的变量,所以用一个足够大的数字1000来定义数组的长度*/

float X=0,Y=0,X1=0,Y1=0,L,L1,x[1000],y[1000],x1[1000],y1[1000];

/*X表示水平方向搬运总距离,Y表示竖直方向搬运总距离,必须先赋值为0,否则在后面进行自加运算的时候结果错误

x[1000],y[1000]两个数组中的元素分别表示第i趟搬运货物水平方向和竖直方向的搬运距离,例如x[0]=55表示第

1趟搬运货物水平方向搬运距离为55*/

for(i=0; i{

x[i]=0;

y[i]=0;

x1[i]=0;

y1[i]=0;

} /*因为x[1000],y[1000]中的元素也会在后面用到自加运算,所以必须先把各个位置的元素都赋值为0,以免结果错误*/

printf(if(r==M)

break; /*判断车子是否装满,如果已经装满则跳出循环,不继续装*/

if(j%2==0 || j==i*M)

y[i]+=2*a[j]*u/m; /*按照实际搬运的顺序模拟执行,如果下一趟搬运的货物在偶数排货架,

则竖直方向搬运距离直接加上货位所在位置到下方通道距离的两倍,如

果下一趟搬运的货物是本趟搬运的第一个货物,则不管货物是否在偶数排货架,

竖直方向搬运距离都直接加上货位所在位置到下方通道距离的两倍*/

else

{

if(a[j]>a[j-1])

y[i]+=2*(a[j]-a[j-1])*u/m;

} /*另外一种情况,如果下一趟搬运的货物在奇数排货架,则需要

判断奇数排货架上货物位置是否比上一个货物位置远,如果更

远,竖直方向搬运距离加上两个货位距离之差的两倍,否则不

处理,实际中可以理解为车子从这个通道中往回走的时候顺带

装上了下一个货物,所以竖直搬运距离不变*/

r++; /*车子每装上一个货物,r都自加一次,表示车子里多了一个货物*/

printf(;

else

if(j==i*M)

y1[i]+=2*u;

else

if(j%2==0)

if(j=(i+1)*M-1)

y1[i]+=2*a[j]*u/m;

else

y1[i]+=2*u;

r++;

}

x1[i]=3*v+6*v*(int)((j-1)/2);

}

for(i=0; i{

X1+=x1[i];

Y1+=y1[i];

}

L1=X1+Y1;

for(i=0; iprintf(

#include

#include

main()

{

int m,n,u,v,Q,q,i,j,M,w,r; /*M是一趟最多能搬运的货物数量,w是按照回程启发式算法需要搬运的趟数,

r在循环体中作为一个标识变量,用来判断车子有没有装满*/

int a[1000]; /*数组a[1000]中的元素表示货物在每排货架上的位置,例如a[0]=8表示第一排货架中货物在第8货位;

由于货架的排数n在输入之前是一个不确定的变量,所以用一个足够大的数字1000来定义数组的长度*/

float X=0,Y=0,X1=0,Y1=0,L,L1,x[1000],y[1000],x1[1000],y1[1000];

/*X表示水平方向搬运总距离,Y表示竖直方向搬运总距离,必须先赋值为0,否则在后面进行自加运算的时候结果错误

x[1000],y[1000]两个数组中的元素分别表示第i趟搬运货物水平方向和竖直方向的搬运距离,例如x[0]=55表示第

1趟搬运货物水平方向搬运距离为55*/

for(i=0; i{

x[i]=0;

y[i]=0;

x1[i]=0;

y1[i]=0;

} /*因为x[1000],y[1000]中的元素也会在后面用到自加运算,所以必须先把各个位置的元素都赋值为0,以免结果错误*/

printf(if(r==M)

break; /*判断车子是否装满,如果已经装满则跳出循环,不继续装*/

if(j%2==0 || j==i*M)

y[i]+=2*a[j]*u/m; /*按照实际搬运的顺序模拟执行,如果下一趟搬运的货物在偶数排货架,

则竖直方向搬运距离直接加上货位所在位置到下方通道距离的两倍,如

果下一趟搬运的货物是本趟搬运的第一个货物,则不管货物是否在偶数排货架,

竖直方向搬运距离都直接加上货位所在位置到下方通道距离的两倍*/

else

{

if(a[j]>a[j-1])

y[i]+=2*(a[j]-a[j-1])*u/m;

} /*另外一种情况,如果下一趟搬运的货物在奇数排货架,则需要

判断奇数排货架上货物位置是否比上一个货物位置远,如果更

远,竖直方向搬运距离加上两个货位距离之差的两倍,否则不

处理,实际中可以理解为车子从这个通道中往回走的时候顺带

装上了下一个货物,所以竖直搬运距离不变*/

r++; /*车子每装上一个货物,r都自加一次,表示车子里多了一个货物*/

printf(;

else

if(j==i*M)

y1[i]+=2*u;

else

if(j%2==0)

if(j=(i+1)*M-1)

y1[i]+=2*a[j]*u/m;

else

y1[i]+=2*u;

r++;

}

x1[i]=3*v+6*v*(int)((j-1)/2);

}

for(i=0; i{

X1+=x1[i];

Y1+=y1[i];

}

L1=X1+Y1;

for(i=0; iprintf(


相关文章

  • 物流配送车辆调度问题毕业论文设计
  • 兰 州 商 学 院 本科生毕业论文(设计) 论文(设计)题目: 物流配送车辆调度问题 学 院. 系: 信息工程学院 数学系 专 业 (方 向) : 信息与计算科学专业 年 级. 班: 2008级信息与计算科学班 学 生 姓 名: 陈海燕 指 ...查看


  • 物流设计大赛
  • "安吉杯"第四届全国 大学生物流大赛 学 院: 河北科技师范学院工商管理学院 参赛队名: 物之舞者 口 号 精细于心,砥砺于行 班 级: 物流管理1103.1104 参赛队员:周章宁.李凡.任宏光.张明静.孙青霞 指导教 ...查看


  • 变邻域搜索算法综述
  • 2009年7月第16卷增刊控制工程 ControlEngineeringofChina Jul.2009Vol.16,S1 文章编号:1671-7848(2009)S1-0001-05 变邻域搜索算法综述 董红宇,黄 敏,王兴伟,郑秉霖 1 ...查看


  • 启发式算法阅读材料
  • Ravindra K. Ahuja 工业与系统工程系 佛罗里达大学 Gainesville,佛罗里达 32611,美国 Özlem Ergun 运筹学研究中心 麻省理工学院 剑桥,马萨诸塞州 02139,美国 [email protected] Ja ...查看


  • 深度优先搜索算法及其改进
  • 软件技术龚建华:深度优先搜索算法及其改进 深度优先搜索算法及其改进 龚建华 (解放军通信指挥学院 湖北武汉 430010) 摘 要:对于一些简单的搜索问题或者不便构建启发式搜索算法的问题,深度优先搜索算法常是解决问题的有效办法.首先对深度优 ...查看


  • 组合最优化问题及其求解优化算法
  • 组合最优化问题最基本的特点就是变量是离散的, 由此导致其数学模型中的目标函数和约束函数在其可行域内是也是离散的.在现实世界中,许多的实际问题本质上是离散事件的而不是连续事件,都可归结为组合最优化问题.这类问题在理论上多数都属于NP难问题,N ...查看


  • 二维矩形排样问题的启发式算法
  • 第26卷第1期 2005年2月 青 岛 科 技 大 学 学 报 JournalofQingdaoUniversityofScienceandTechnologyVo.l26No.1 Feb.2005 文章编号:1672-6987(2005) ...查看


  • 校直机液压系统说明书
  • ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 1.3 方案拟定 1. 3. 1 设计内容 本次设计的主要内容是轴类零件自动校直机液 ...查看


  • 十五数码问题研究及实现
  • 2010年第2期福建电脑 73 十五数码问题研究及实现 闵文杰 (重庆交通大学重庆400047) [摘要]:十五数码问题是人工智能领域中的一个典型问题.本文对该问题进行了详细分析,并用启发式搜索解决了该问题,同时比较了3种不同评估函数的效率 ...查看


热门内容