• 大小: 8.92MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-10
  • 语言: C/C++
  • 标签: C++  遗传算法  FJSP  GA  

资源简介

用c++写的遗传算法解决柔性作业车间调度问题,主要参考论文 张国辉, 高亮, 李培根, et al. 改进遗传算法求解柔性作业车间调度问题[J]. 机械工程学报, 2009, 45(7):145-151.

资源截图

代码片段和文件信息

// 1210第一版.cpp : 此文件包含 “main“ 函数。程序执行将在此处开始并结束。
//

#include “head.h“
#include 
#include
#include 
#include

using namespace std;


Answer Pop[POPSIZE];//种群
vector>ProTime;
int **Time;//各工序加工时间
vectorPronum;

int main()
{
time_t T_begin = clock();
srand(time(NULL));
Creat();
InitPop(Pop);
CalTime(Pop);
//Print(Pop);
for (int o = 0; o < G; o++)
{
Select(Pop);
Cross(Pop);
Variation2(Pop);
CalTime(Pop);
//cout << o << endl;
Print(Pop);
}
Print(Pop);
time_t T_end = clock();
float RunningTime = float(T_end - T_begin) / CLOCKS_PER_SEC;
cout << “\n时间= “ << RunningTime << endl;
return 0;
}

void Creat()//读文件
{
ifstream in;
in.open(“G:\\Data\\FJSP\\mk01.txt“);
assert(in.is_open());
in >> WorkpieceNum >> MachineNum;
//换行读取思路,读字符,遇到\n停止
int pm;
ProcessNum = 0;
for (int i = 0; i < WorkpieceNum; i++)
{
Pro pro;
pro.star = ProcessNum;

in >> p;
ProcessNum += p;

pro.num = p;
Pronum.push_back(pro);

for (int j = 0; j < p; j++)
{
in >> m;
vectorprotime;
for (int k = 0; k < m; k++)
{
mtime a;
in >> a.m >> a.time;
protime.push_back(a);
}
ProTime.push_back(protime);
}
}
Time = new int*[ProcessNum];
for (int i = 0; i < ProcessNum; i++)
{
Time[i] = new int[MachineNum];
for (int j = 0; j < MachineNum; j++) Time[i][j] =MAX;
for (int j = 0; j < ProTime[i].size(); j++)
{
Time[i][ProTime[i][j].m-1] = ProTime[i][j].time;
}
}

/*for (int i = 0; i < ProcessNum; i++)
{
for (int j = 0; j < MachineNum; j++) cout << Time[i][j] << “ “;
cout << endl;
}*/
}

void Print()
{
cout << WorkpieceNum << “ “ << MachineNum << endl;
for (int i = 0; i < WorkpieceNum; i++)
{
cout <
for (int j = 0; j < Pronum[i].num; j++)
{
int pronum = Pronum[i].star + j;
cout << ProTime[pronum].size() << “ “;

for (int k = 0; k < ProTime[pronum].size(); k++)
{
cout << ProTime[pronum][k].m << “ “ << ProTime[pronum][k].time << “ “;
}
}
cout << endl;
}
}

void InitPop(Answer *pop)//种群初始化
{
for (int i = 0; i < POPSIZE; i++)
{
float s = (rand() % RAND_MAX) / (float)RAND_MAX;
if(s else if(s>1-LS) LS0(pop[i]);
else GS0(pop[i]);

//RD0(pop[i]);
//GS0(pop[i]);
//LS0(pop[i]);
}
}

void Select(Answer *pop) //选择:锦标赛
{
Answer newpop[POPSIZE];
Answer bestpop = pop[0];
for (int i = 0; i < POPSIZE; i++)
{
int index;//三选一最佳个体下标
int mintime;
int a b c;
a = rand() % POPSIZE;
b = rand() % POPSIZE;
c = rand() % POPSIZE;
index = a;
mintime = pop[index].time;
if (pop[b].time < mintime)
{
index = b;
mintime = pop[index].time;
}
if (pop[c].time < mintime)
{
index = c;
mintime = pop[index].time;
}
newpop[i] = pop[index];

if (pop[i].time < bestpop.time)
{
bestpop = pop

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\.vs\
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\
     文件       38400  2019-08-18 17:19  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\.suo
     文件     5541888  2019-08-18 17:19  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\Browse.VC.db
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\ipch\
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\ipch\AutoPCH\
     目录           0  2019-08-18 16:14  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\ipch\AutoPCH\7809e8a1f4bae114\
     文件    34603008  2019-08-18 16:15  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\ipch\AutoPCH\7809e8a1f4bae114\数据格式转换版本.ipch
     文件      327680  2019-06-01 09:07  C++遗传算法解决柔性作业车间调度\代码\.vs\数据格式转换版本\v15\ipch\ec5dd6b31f3c3218.ipch
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\Debug\
     文件      208384  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\Debug\数据格式转换版本.exe
     文件      865708  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\Debug\数据格式转换版本.ilk
     文件      847872  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\Debug\数据格式转换版本.pdb
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\
     文件        1485  2019-06-01 09:07  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本.sln
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\
     文件      158720  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\vc141.idb
     文件      446464  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\vc141.pdb
     文件        1617  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.Build.CppClean.log
     文件        1685  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.log
     文件      756093  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.obj
     目录           0  2019-08-21 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\
     文件         738  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\CL.command.1.tlog
     文件       19800  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\CL.read.1.tlog
     文件         452  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\CL.write.1.tlog
     文件        1144  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\link.command.1.tlog
     文件        3622  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\link.read.1.tlog
     文件         422  2019-06-02 16:01  C++遗传算法解决柔性作业车间调度\代码\数据格式转换版本\Debug\数据格式转换版本.tlog\link.write.1.tlog
............此处省略28个文件信息

评论

共有 条评论