资源简介
车间作业调度问题(Job Shop Scheduling Problem)是一个著名的NP难题,具有很强的条件约束,当问题规模较大时很难找到全局最优解。因此作业车间调度是一类求解困难的组合优化问题。近几年各种智能计算方法逐渐被引入到作业调度问题中,如遗传算法、模拟退火算法、启发式算法等。如何有效的安排各零件的加工顺序将直接关系到生产效率,也是本文所要解决的问题之一。本文提出了实现车间调度的混合遗传算法的设计方案,把遗传算法与模拟退火算法相结合,充分发挥遗传算法良好的全局搜索能力和模拟退火算法有效避免陷入局部极小的特性,通过实验验证了基于混合算法的作业车间调度方法显著提高了搜索效率,GASA改进了收敛性能。
代码片段和文件信息
#include “stdlib.h“
#include “stdio.h“
#include “time.h“
#define PARA 1.1
#define CYNUM 10
//////////////////////结构体定义/////////////////////////////
typedef struct{
char GZname[5];//工种的名称
int GXnum;//工序数
int GJnum;//工件数
}GZ;//工种
typedef struct{
int time;//每个工序所用的时间
int machine;//每个工序所用的机器
}GX;//工序
struct JCNode //定义机床任务队列的节点
{
int tasknum;
int lasttime;
int *tasklist;
struct JCNode *next;
}list*plist;
//////////////////////功能函数定义//////////////////////////
int getGXnum(GZ* gz)
{//返回某个工种的工序数
return (gz->GXnum);
}
int getGJnum(GZ* gz)
{//返回某个工种的工件数
return (gz->GJnum);
}
int location(int *pDadint posint *pMum)
{//寻找pDad里pos位上的基因在pMum的位置
int ijk=0;
int *p;
i=*(pDad+pos);
for(j=0;j<=pos;j++)
if (*(pDad+j)==i)
k++;
p=pMum;
while (k!=0)
if(*(pMum++)==i)
k--;
return(pMum-p-1);
}
void crossover(float crossoverrateint *pDadint *pMumint GXTnum)
{//杂交
int xytijkmin;
float iscross;
int*p*q;
//求杂交的位置
x=rand()%GXTnum;
y=rand()%GXTnum;
if(x>y)
{
t=x;
x=y;
y=t;
}
iscross=(float)(rand()%100/100.0);
if (iscross {
q=(int*)malloc(sizeof(int)*(y-x+1));
p=q;
for(i=x;i<=y;i++)
{
*(p++)=location(pDadipMum);
}
//对杂交的位置进行排序
for(i=0;i {
min=*(q+i);
k=i;
for(j=i+1;j {
if(min>*(q+j))
{
min=*(q+j);
k=j;
}
}
t=*(q+i);
*(q+i)=*(q+k);
*(q+k)=t;
}
//进行交换
for(i=x;i<=y;i++)
{t=*(pDad+i);
j=*(q++);
*(pDad+i)=*(pMum+j);
*(pMum+j)=t;
}
}
}
//求某个基因对应的工序的工时
int GetGenetime(int *pchromoint iGZ *pGZGX*pGXint GZnum)
{
int jk=0txsum;
x=*(pchromo+i);
for(j=0;j {//求得属于哪个工种
x=x-(pGZ+j)->GJnum;
if (x<=0)
{
break;
}
}
t=0;
x=*(pchromo+i);
for(k=0;k {
if (*(pchromo+k)==x)
t++;
}
sum=0;
for(k=0;k sum=sum+(pGZ+k)->GXnum;
return((pGX+t+sum)->time);
}
int getGZcode(int GJint GZnumGZ *pGZ)
{
int j;
for(j=0;j {
GJ=GJ-(pGZ+j)->GJnum;
if (GJ<=0)
{
break;
}
}
return j;
}
//求染色体上某个基因对应的机床号
int JCcode(int *pchromoint iGZ *pGZGX*pGXint GZnum)
{
int jk=0txsum;
x=*(pchromo+i);
for(j=0;j {
x=x-(pGZ+j)->GJnum;
if (x<=0)
{
break;
}
}
t=0;
x=*(pchromo+i);
for(k=0;k {
if (*(pchromo+k)==x)
t++;
}
sum=0;
for(k=0;k sum=sum+(pGZ+k)->GXnum;
return((pGX+t+sum)->machine);
}
int AtJCnum(int iint *pchromoint GXTnumGZ *pGZGX *pGXint GZnum)
{//求某一机床号上的基因个数
int jkt=0;
for(j=0;j {
k=JCcode(pchromojpGZpGXGZnum);
if (k==i)t++;
}
return t;
}
void Mutation(float MutationRateint *pchromoint GXTnumGZ *pGZGX *pGXint GZnum)
{//变异
float ismul;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 168960 2008-06-02 18:41 基于混合遗传算法车间调度优化\论文.doc
文件 16737 2008-06-18 21:58 基于混合遗传算法车间调度优化\车间结稿\GA.c
文件 19700 2008-06-18 21:57 基于混合遗传算法车间调度优化\车间结稿\GASA.c
文件 9995 2008-06-18 21:58 基于混合遗传算法车间调度优化\车间结稿\车间结稿.rar
文件 3740 2008-05-29 09:50 基于混合遗传算法车间调度优化\遗传算法退火算法\matlabTSP.m
文件 183659 2008-05-29 10:01 基于混合遗传算法车间调度优化\遗传算法退火算法\一种基于遗传算法的车间调度算法求解.pdf
文件 150746 2008-05-29 10:02 基于混合遗传算法车间调度优化\遗传算法退火算法\基于混合遗传算法的车间调度问题的研究.pdf
文件 176371 2008-05-29 10:00 基于混合遗传算法车间调度优化\遗传算法退火算法\基于混合遗传算法的车间调度问题研究.pdf
文件 137442 2008-05-29 09:56 基于混合遗传算法车间调度优化\遗传算法退火算法\基于遗传算法的车间作业调度.pdf
文件 35560 2005-07-16 14:18 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\Data_discrete_analysis.m
文件 2852 2005-07-18 13:52 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\main.m
文件 3235 2005-07-18 15:09 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\main_88.asv
文件 3320 2005-07-18 16:52 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\main_88.m
文件 572 2005-07-10 21:21 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\Rand_Tong_yong.m
文件 59 2005-07-13 09:52 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\wh_JC.m
文件 269 2005-07-10 21:16 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\Wh_rand.m
文件 35759 2005-07-16 15:18 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\wh_test.m
文件 116538 2005-07-18 10:34 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\wh_test_44.m
文件 233976 2005-07-16 14:21 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\wh_test_88.m
文件 69 2005-07-13 09:55 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火法(Sb除Sw)\模拟退火法(Sb除Sw)\wh_ZHS.m
文件 174 2006-11-24 16:52 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法\1.txt
文件 304 2006-11-24 16:53 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法\2.txt
文件 4716 2007-12-13 20:28 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法\main.cpp
文件 31232 2008-06-01 07:22 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法.doc
文件 5882 2008-05-28 21:12 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法.mht
文件 6416546 2008-05-28 21:26 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法.pdf
文件 61667 2008-05-29 09:51 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法_百度百科.mht
文件 109332 2008-05-29 09:48 基于混合遗传算法车间调度优化\遗传算法退火算法\模拟退火算法源程序(转)_I.mht
文件 18952 2008-05-31 12:09 基于混合遗传算法车间调度优化\遗传算法退火算法\研学论坛 - Re【原创】车间作业调度问题遗传算法通用Matlab程序(附图).files\33725376.jpg
文件 161 2008-05-31 11:41 基于混合遗传算法车间调度优化\遗传算法退火算法\研学论坛 - Re【原创】车间作业调度问题遗传算法通用Matlab程序(附图).files\advu.gif
............此处省略209个文件信息
- 上一篇:pixhawk源码分析1
- 下一篇:基于STM32F4的霍尔编码器解析程序
相关资源
- 基于遗传算法启发式算法退火算法的
- 基于遗传算法的机场终端区飞机排序
- 基于遗传算法的二维排样算法研究
- 通俗易懂的遗传算法入门.ppt
- 并行遗传算法最优化
- 遗传算法和遗传规划
- 遗传算法原理及应用pdf
- 遗传算法约束条件的处理
- 遗传算法程序 带GUI界面
- 进化算法概述进化算法概述
- 智能优化算法蚁群算法、狼群算法、
- 遗传算法及其在电力系统中的应用
- 电力系统无功优化的遗传算法实现
- 遗传算法工具箱GEATBX
- 车间调度及其遗传算法
- 遗传算法各类版本的遗传算法源代码
- 清华大学遗传算法PPT―MOGA
- 遗传算法和遗传规划pdf
- 遗传算法在变电站选址中的应用
- 《遗传算法原理及应用》 - 周明、孙
- TSP_中国省会城市遗传算法.rar
- 算法集合道格拉斯、遗传算法、krig
- 黄竞伟《计算智能》课件
- Kriging+遗传算法
- 遗传并行算法代码-高性能
- 《基于遗传算法的自动组卷系统》
- 基于改进的广义回归神经网络的态势
- 改进遗传算法求解走班制下的排课问
- 遗传算法优化PID参数的代码
- 遗传算法完整毕业设计
评论
共有 条评论