资源简介

未解决早熟问题,若有想法可相互交流

资源截图

代码片段和文件信息

import numpy as np
import random

file=open(“Buxey.txt“)#数据文件
C =47
#读取数据文件
def readfile(file):
    lines=file.readlines()
    n=int(lines[0].strip().split(‘\t‘)[0])#工序数
    line_times=lines[1:n+1]
    lines=lines[n+1:-1]#优先关系
    row_times=len(line_times)
    rows=len(lines)#优先关系行数
    e=np.zeros((rows2))#生成相应大小的零矩阵
    times=[0]*n
    row=0
    row_time=0
    for line in lines:
        line=line.strip().split(‘\t‘)
        line=line[0]
        line=line.split(‘‘)
        line=[int(line[0])int(line[1])]
        e[row:]=line[:]
        row+=1
    for line in line_times:
        line=line.strip().split(‘\t‘)
        j=‘‘
        for i in line:
            j=j+i
        line=int(j)
        times[row_time]=line
        row_time+=1
    relation=np.zeros((nn))
    for i in range(len(e)):
        a=int(e[i][0])-1
        b=int(e[i][1])-1
        relation[a][b]=1
    return nrelationtimes#返回优先关系矩阵和工序时间列表

#自由工序
def freedots(relationn):
    frees=[]
    for i in range(n):
        if not relation[:i].any():
            frees.append(i)
    return frees
#产生初始种群
def initial(relationpopsizen):#n即代表染色体长度也代表relation矩阵的维度
    pop=[]
    for i in range(popsize):
        pop.append([])
        relation_new=relation
        pre_dots=list(range(1n+1))
        for j in range(n):
            b=len(relation_new[0])
            frees=freedots(relation_newb)
            if len(frees)==1:
                a=frees[0]
                pop[i].append(pre_dots[a])
                pre_dots.remove(pre_dots[a])
                relation_new=np.delete(relation_newa0)
                relation_new=np.delete(relation_newa1)
            else:
                a=random.choice(frees)
                pop[i].append(pre_dots[a])
                pre_dots.remove(pre_dots[a])
                relation_new=np.delete(relation_newa0)
                relation_new = np.delete(relation_new a 1)
    return pop
#计算适应值
def calfitness(poptimes):
    time_fenpei=[]#各工序时间
    for i in range(len(pop)):
        time_fenpei.append([])
        for j in pop[i]:
            time_fenpei[i].append(times[j-1])
    def fenpei(job_fenpeitime_gzzLT):#L表示染色体,T表示对应的时间
        if sum(T)<=C:
           job_fenpei.append(L)
           time_gzz.append(sum(T))
           return job_fenpeitime_gzz
        l=len(L)
        ret=0
        j=0
        while True:
           ret+=T[j]
           j+=1
           if ret>C:
                break
        fenpei_1=L[:j-1]
        job_fenpei.append(fenpei_1)
        time_gzz.append(sum(T[:j-1 ]))
        return fenpei(job_fenpeitime_gzzL[j-1:]T[j-1:])
    zong_fenpei=[]
    zong_time=[]
    for i in range(len(pop)):
        job_fenpei=[]
        time_gzz=[]
        cd=fenpei(job_fenpeitime_gzzpop[i]time_fenpei[i])
        zong_fenpei.append(c)
        zong_time.append(d)
    fitnesses=[]#每条染色体的适应值
    for i in zong_time:
        fitness=0
        for j in

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         337  2020-10-28 16:09  Buxey.txt
     文件        7978  2020-12-07 16:07  遗传算法生产.py

评论

共有 条评论