目 录
摘要 I
ABSTRACT II
第一章 绪论 1
1.1 概述 1
1.2 课题研究的目的、背景及意义 2
1.3 国内外研究现状 2
第二章 车间调度问题简述 5
2.1 车间调度问题描述 5
2.2 车间调度问题的特点及分类 6
2.3 Job shop和Flow shop调度问题 7
第三章 遗传算法和模拟退火算法理论及实现技术 9
3.1 遗传算法简介 9
3.2 遗传算法基本流程 9
3.3 遗传算法参数设计 10
第四章 遗传算法在绿色柔性作业车间调度基本操作设计 12
4.1 编码设计 12
4.1.1二进制编码 13
4.1.2十进制编码 13
4.2适应度函数设计 14
4.3遗传算子设计 15
4.3.1选择算子设计 15
4.3.2 交叉算子设计 15
4.3.3变异算子 16
4.4遗传算法运行参数设计 16
4.4.1种群大小M 16
4.4.2交叉概率Pc 17
4.4.3变异概率Pm 17
4.4.4算法的终止条件 17
4.5模拟退火算法设计 17
4.5.1模拟退火算法基本思想和步骤 18
4.5.2模拟退火算法关键参数和操作的设计 18
第五章 绿色柔性作业车间调度问题仿真 22
5.1 绿色柔性作业车间调度问题的描述与数学模型 22
5.2 绿色柔性作业车间调度问题仿真 23
5.3 遗传算法的设计 25
5.3.1 编码方案 26
5.3.2 群体的确定 26
5.3.3 适应度函数 26
5.3.4 遗传算子的设计 26
5.4 基于遗传算法的绿色柔性作业车间调度问题仿真 27
5.5 结果分析 27
第六章 总结 28
参考文献 29
致谢 31
第三章 遗传算法和模拟退火算法理论及实现技术
3.1 遗传算法简介
遗传算法(Genetic Algorithm,GA)是一种基于生物进化原理的优化算法,用于求解最优化问题。遗传算法通过模拟自然界中的生物进化过程,通过不断的迭代优化,寻找最优解。
遗传算法的基本思想是模拟自然选择、交叉和变异等生物遗传过程,通过对种群的选择、交叉和变异等操作,不断产生新的个体,并筛选出适应度高的个体,在不断迭代中逐步逼近最优解。遗传算法适用于求解复杂、多维、非线性的优化问题,并且具有全局搜索能力和较好的鲁棒性。
遗传算法的基本步骤包括:
初始化:随机生成一组个体作为初始种群。
选择:根据适应度函数,选择适应度高的个体,作为下一代种群的父代。
交叉:对父代个体进行交叉操作,生成新的个体作为下一代种群的子代。
变异:对子代个体进行变异操作,产生新的个体,增加种群的多样性。
评估:计算新一代种群的适应度,并与上一代种群进行比较。
终止条件:如果满足终止条件(如达到最大迭代次数、目标函数值达到一定阈值等),则停止迭代,输出最优解;否则,返回第2步。
总之,遗传算法是一种基于生物进化原理的优化算法,适用于求解复杂、多维、非线性的优化问题。在实际应用中,需要根据具体问题进行参数的调整和适应度函数的设计,以达到最优解的求解。同时,遗传算法也可以与其他优化算法相结合,形成混合优化算法,以充分利用各自的优点,提高求解效率和精度。在实际应用中,遗传算法被广泛应用于各种领域,如机器学习、图像处理、生产调度等。
#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 *pDad,int pos,int *pMum)
{//寻找pDad里pos位上的基因在pMum的位置
int i,j,k=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);
}