资源简介
遗传算法解决JSP问题。即多工件分配于多机器的np hard问题。
代码片段和文件信息
clear;
clc;
%输入初始条件
prompt1=‘Please input the size of group\n‘;
NIND=input(prompt1);%种群初始化,种群大小为NIND
prompt2=‘Please input the longth of chrom\n‘;
WNumber=input(prompt2);%一个一行多列的矩阵,矩阵列数取决于总工序数%
prompt3=‘Please input the possible chrom\n‘;
seed=input(prompt3);%种子
prompt5=‘Please input variation probability\n‘;
MUTR=input(prompt5);%设定变异概率
prompt6=‘Please input the number of parts\n‘;
Npart=input(prompt6);%输入零件总数目
prompt7=‘Please input the max number of process for all parts\n‘;
Npro=input(prompt7);%输入零件所需的最大工序数
prompt8=‘Please input the number of machine\n‘;
Nmachine=input(prompt8);%输入机器数目
prompt10=‘Please input the number of generation\n‘;
Ngenera=input(prompt10);%输入代数
for k=1:Npart
prompt9=‘Please input information of parts\n‘;%第一行工序编号,第二行机器编号,第三行时间%
gongjian(k::)=input(prompt9);
end
%建立初始种群
Chrom=zeros(NINDWNumber);%预定义零矩阵,用于存放种群所有染色体
for i=1:NIND
Chrom(i:)=seed(randperm(numel(seed)));%生成染色体并赋到矩阵各行
end
time_opt=zeros(20100);% 预定义存储100代种群中的各个个体时间的空间
pp=zeros(Ngenera1);
P=zeros(WNumber1);%一条染色体上零件编号存储空间
M=zeros(WNumber1);
T=zeros(WNumber1);
t_bz=zeros(NpartNpro);%用于存放各零件各工序时间
T_qunti=zeros(NINDNgenera);
best_time=zeros(Ngenera1);%储存各代的最优时间
for generation=1:Ngenera
%%解码求适应度 计算最短时间
for i=1:NIND %%群体中的各个染色体分别求时间
%解码染色体
for k=1:Npart
a=1;
for j=1:WNumber
if Chrom(ij)==k
P(j)=k*100+a;
M(j)=gongjian(k2a);
T(j)=gongjian(k3a);
a=a+1;
end
end
end
%解码完成
%计算每个染色体的时间
t=zeros(Nmachine1);
for n=1:Nmachine
t(n)=0;
for j=1:WNumber
if M(j)==n
x=floor(P(j)/100);% x为工件号
y=mod(P(j)100);% y为工序号
if y==1%显然,如果该工序为第一个工序,则M1机床时间t1直接为当前时间加上该工序的时间%
t(n)=t(n)+T(j);
t_bz(xy)=t(n);%行数代表工件号,列数代表工序
else %如果该工序不是第一个工序最终时间为该机床当前的时间以及该工件上一工序对应时间%
temp1=[t(n) t_bz(xy-1)];
t(n)=max(temp1)+T(j);%工件在n机床上上对应的机床时间%
t_bz(xy)=t(n);%将该时间赋值到时间矩阵
end
end
end
end
temp=zeros(1Nmachine);
for n=1:Nmachine
temp(1n)=t(n);
end
t0=max(temp); %得出该染色体对应的加工时间
T_qunti(igeneration)=t0; %将该染色体对应的时间赋值给时间矩阵
time_add=sum(T_qunti(:generation)); %计算出种群中各个染色体总时间和
time_indiv=NIND*T_qunti/time_add; %计算每一个个体与总时间的比值
min_time=min(T_qunti(:generation));%该代种群中时间最短的个体时间
best_time(generation)=min(T_qunti(:generation));
end %%截至该句,计算出每个染色体的时间
%以下执行选择操作 ---.>稳态复制的方法
next_pop=Chrom;%初始化群体
best_flag=0;%初设最优染色体数目
for tt=1:NIND
if T_qunti(ttgeneration)==min_time %如果该个体为截止到当前代最好的个体,则保留%
best_flag=best_flag+1;
next_pop(best_flag:)=Chrom(tt:);%最优染色体保留至下一代%
end
end
pp(generation)=best_flag;%pp记录T_qunti中与最小时间个体相同的个体数量
flag=best_flag;
while flag for z=1:NIND %下一代群体的前flag个个体直接取上一带的最佳个体,剩下的个体用随即
- 上一篇:国密SM3算法实现源代码只适合JAVA
- 下一篇:Accp8.0 S1课程单词完全版
相关资源
- jsp模拟酷狗官网源码(附数据库)
- 法律咨询信息系统(java+jsp+sqlserver)
- 煤矿安全管理系统(jsp源码+数据库脚
- 基于JSP实现的美食餐饮管理系统(源
- 北大青鸟jsp+servlte服务管理系统
- 都市供求信息网(源码+数据库+文档)
- jsp+servlet+jdbc开发学生信息后台管理系
- JSP选课系统(源码+文档+数据库)
- 基于JSP的超市销售管理系统(源码+
- jsp宠物商店(源码+数据库)
- jsp进销存管理系统(源码+数据库+文档
- 基于JAVA_JSP电子书系统(源码+数据库
- JSP考试网上报名考试系统(源码+数据
- jsp讲解
- jsp简单登录
- shine网上书城(jsp+mysql)
- 基于JSP学生成绩管理系统软件的开发
- 学生请假管理系统.zip
- 药品进销存管理系统(论文范文_JSP
- JSP购物网站完整源码包含项目源码,
- 奖学金管理系统java+jsp+mysql
- 实现jsp页面二级下拉框联动,实时读
- JSP+SQL音乐网站(毕业设计)
- JSP+MYSQL鞋城在线销售系统
- jsp网站模板
- JSP多文件上传同时上传
- JAVA JSP学生网上报名系统
- 大双引力中的双耦合物质场得到了中
- pdf-chinese.zip
- jsp网上购物系统132410
评论
共有 条评论