資源簡介
未解決早熟問題,若有想法可相互交流
代碼片段和文件信息
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
- 上一篇:人臉檢測和識別(opencv3+python)
- 下一篇:親密數對.py
評論
共有 條評論