模拟退火算法解决工作指派问题c++源程序.doc

模拟退火算法解决工作指派问题c++源程序.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模拟退火算法解决工作指派问题c源程序

/*********************************************************************** 模拟退火算法解决工作指派问题 输入格式(工作时间):矩阵 行i;工人 列j;工作 ***********************************************************************/ #include iostream #include cmath #include time.h #include stdio.h using namespace std; const int MAXN = 501; //最大约束数n const double INIT_T =2000; //初始温度 const double RATE = 0.95; //温度衰减率 const double FINAL_T = 1E-10; //终止温度 const int IN_LOOP = 13000; //内层循环次数 const int OUT_LOOP = 2000; //外层循环次数 struct work { //定义工作结构类型 int p[MAXN]; //工人序号 double time; //时间 }; int N; //工人数量 double D[MAXN][MAXN]; //工作时间 int x[MAXN][ MAXN]; //选择工人与工作 work bestwork; //最优的遍历路径 void swap(int a,int b) { int t; t=a;a=b;b=t; } inline double totaldist(work p) //计算总时间 { int i,j; double cost = 0,sumi=0, sumj=0; for (j=1; j=N; j++) { sumj+= x[i][j]; } for (i=1; i=N; i++) { sumi+= x[i][j]; } if(sumj==1 sumi==1) { for (j=1; j=N; j++) { for (i=1; i=N; i++) { cost += D[i][j]*x[i][j]; } } return cost; } } void init() //读入数据,并初始化 { cin N; int i,j; for(i=0;i=N;i++) { for(j=0;j=N;j++) cin D[i][j]; } for (i=j=1; i=j=N; i++,j++) //最优解的初始状态 { bestwork.p[i] = i; bestwork.time = totaldist(bestwork); } } /*********************************************************************** 产生指派方法 ***********************************************************************/ work getnext(work p) //新解产生函数 { int x, y,i,j; work ret; ret = p; do { x = rand() % N + 1; y = rand() % N + 1; }while(x == y); swap(ret.p[x], ret.p[y]); //交换两工人位置顺序 ret.time = totaldist(bestwork); return ret; } /*****************************************************************

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档