資源簡介
車間作業調度問題(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的霍爾編碼器解析程序
評論
共有 條評論