资源简介
车间作业调度问题(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的霍尔编码器解析程序
相关资源
- QGA 量子遗传算法
- 基于遗传算法的排课系统
- 遗传算法的M文件
- 遗传算法PPT(Genetic_Algorithms.ppt)
- 遗传算法的堆石料非线性本构模型参
- 遗传算法越野小车unity5.5
- 车间布局遗传算法
- 遗传算法论文11篇
- 基于遗传算法的立体车库车位调度研
- 遗传算法解决TSP旅行商问题程序开源
- 基于GA-ELM的瓦斯涌出量预测
- 5种多旅行商问题(MTSP)的遗传算法
- 人工智能和遗传算法的结合推荐必读
- 遗传算法0-1背包问题论文
- 改进的k_均值聚类排挤小生境遗传算法
- 论文研究-考虑工件移动时间的柔性作
- 基于遗传优化的无刷直流电机模糊控
- GA+ICP代码
- 计算智能大作业合集
- 遗传算法与工程优化_玄光男_程润伟
- NSGA和NSGAII算法
- 群体智能.ppt
- Qt写的遗传算法加画图程序
- 基于改进蚁群算法的车间调度研究方
- 遗传算法优化支持向量机算法
- 遗传算法原理及应用--选择交叉变异算
- 使用神经网络与遗传算法的小游戏
- 遗传算法的适应度函数构造
- 车间调度遗传算法程序
- 遗传算法及其代码实现
评论
共有 条评论