From a1244920f7cc3ab85424faa7d653b15dd8eb3633 Mon Sep 17 00:00:00 2001 From: Hgq <2757430053@qq.com> Date: Tue, 9 Sep 2025 12:44:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=8E=E7=9A=84=E7=89=88?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=BF=85=E8=A6=81?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86=E7=BB=98?= =?UTF-8?q?=E5=9B=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Decode.py | 2 +- Encode.py | 8 ++--- GA.py | 8 ++--- Instance.py | 62 ++++++++++++++++++++++++++++++++++++- main.py | 36 +++++++++++++-------- 优化后排程方案的甘特图.png | Bin 25527 -> 19103 bytes 6 files changed, 93 insertions(+), 23 deletions(-) diff --git a/Decode.py b/Decode.py index 2a9b386..e6ff57d 100644 --- a/Decode.py +++ b/Decode.py @@ -32,7 +32,7 @@ class Decode: Site = 0 # 按照基因的MS部分按工件序号划分 for S_i in self.J.values(): - Ms_decompose.append(MS[Site:Site + S_i]) + Ms_decompose.append(MS[Site:Site + S_i]) #对MS按照每道工序数进行切分 Site += S_i for i in range(len(Ms_decompose)): # len(Ms_decompose)表示工件数 JM_i = [] diff --git a/Encode.py b/Encode.py index 34c718b..4f27a1e 100644 --- a/Encode.py +++ b/Encode.py @@ -22,12 +22,12 @@ class Encode: self.RS_num = int(0.2 * Pop_size) # 随机选择初始化 self.Len_Chromo = 0 for i in J.values(): - self.Len_Chromo += i + self.Len_Chromo += i # 遍历字典J的所有值并求和,即工序数之和 # 生成工序准备的部分 def OS_List(self): OS_list = [] - for k, v in self.J.items(): + for k, v in self.J.items(): # 遍历字典J的所有键值对,初始化工序矩阵 OS_add = [k - 1 for j in range(v)] OS_list.extend(OS_add) return OS_list @@ -36,7 +36,7 @@ class Encode: def CHS_Matrix(self, C_num): return np.zeros([C_num, self.Len_Chromo], dtype=int) - # 定位每个工件的每道工序的位置 + # 定位每个工件的每道工序的位置,Job第几个工件,Operation第几道工序 def Site(self, Job, Operation): O_num = 0 for i in range(len(self.J)): @@ -84,7 +84,7 @@ class Encode: OS_list = self.OS_List() OS = self.CHS_Matrix(self.LS_num) for i in range(self.LS_num): - random.shuffle(OS_list) # 生成工序排序部分 + random.shuffle(OS_list) # (随机打乱)生成工序排序部分 OS[i] = np.array(OS_list) # 随机打乱后将其赋值给OS的某一行(因为有一个种群,第i则是赋值在OS的第i行,以此生成完整的OS) GJ_List = [i_1 for i_1 in range(self.J_num)] # 生成工件集 for g in GJ_List: # 选择第一个工件(注意:不用随机打乱了) diff --git a/GA.py b/GA.py index 2bec7a4..0c9f003 100644 --- a/GA.py +++ b/GA.py @@ -9,18 +9,18 @@ from Instance import * class GA(): def __init__(self): - self.Pop_size = 400 # 种群数量 + self.Pop_size = 300 # 种群数量 self.Pc = 0.8 # 交叉概率 self.Pm = 0.3 # 变异概率 self.Pv = 0.5 # 选择何种方式进行交叉的概率阈值 self.Pw = 0.95 # 选择何种方式进行变异的概率阈值 - self.Max_Itertions = 100 # 最大迭代次数 + self.Max_Itertions = 20 # 最大迭代次数 # 适应度 def fitness(self, CHS, J, Processing_time, M_num, Len): Fit = [] for i in range(len(CHS)): - d = Decode(J, Processing_time, M_num) + d = Decode(J, Processing_time, M_num) #实例化一个解码器,传入问题参数 Fit.append(d.decode(CHS[i], Len)) return Fit @@ -34,7 +34,7 @@ class GA(): """ T_r = [j for j in range(T0)] r = random.randint(1, 10) # 在区间[1,T0]内产生一个整数r - random.shuffle(T_r) + random.shuffle(T_r) #直接打乱T_r,原地修改 R = T_r[0:r] # 按照随机数r产生r个互不相等的整数 OS_1 = CHS1[O_num:2 * T0] OS_2 = CHS2[O_num:2 * T0] diff --git a/Instance.py b/Instance.py index b375463..45dc2aa 100644 --- a/Instance.py +++ b/Instance.py @@ -5,7 +5,7 @@ M_num:加工机器数 O_num:加工工序数 J_num:工件个数 """ - +""" CKS201 = [[10, 9, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999], [9999, 9999, 14, 16, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999], [9999, 9999, 9999, 9999, 15, 25, 21, 9999, 9999, 9999, 9999, 9999], @@ -24,3 +24,63 @@ J = {i: (5 if i < 4 else 8) for i in range(1, 8)} M_num = 12 O_num = 3 * 5 + 4 * 8 J_num = 7 +""" +CKS201 = [ + [5, 9999, 7, 9999, 9999, 9999], # 工序1: M1=5, M3=7 + [9999, 6, 9999, 8, 9999, 9999], # 工序2: M2=6, M4=8 + [10, 9999, 9999, 9999, 12, 9999], # 工序3: M1=10, M5=12 + [9999, 9999, 15, 9999, 9999, 18], # 工序4: M3=15, M6=18 + [9999, 9, 9999, 11, 9999, 9999], # 工序5: M2=9, M4=11 + [14, 9999, 9999, 9999, 9999, 16] # 工序6: M1=14, M6=16 +] + +CKS301 =[ + [9999, 4, 9999, 6, 9999, 9999], # 工序1: M2=4, M4=6 + [9999, 9999, 5, 9999, 7, 9999], # 工序2: M3=5, M5=7 + [9999, 8, 9999, 9999, 9999, 10], # 工序3: M2=8, M6=10 + [12, 9999, 9999, 14, 9999, 9999], # 工序4: M1=12, M4=14 + [9999, 9999, 16, 9999, 18, 9999], # 工序5: M3=16, M5=18 + [9999, 20, 9999, 9999, 9999, 22] # 工序6: M2=20, M6=22 +] + +CKS401 =[ + [3, 9999, 9999, 9999, 5, 9999], # 工序1: M1=3, M5=5 + [9999, 7, 9999, 9999, 9999, 9], # 工序2: M2=7, M6=9 + [9999, 9999, 11, 13, 9999, 9999], # 工序3: M3=11, M4=13 + [15, 9999, 9999, 9999, 17, 9999], # 工序4: M1=15, M5=17 + [9999, 19, 9999, 9999, 9999, 21], # 工序5: M2=19, M6=21 + [9999, 9999, 23, 25, 9999, 9999] # 工序6: M3=23, M4=25 +] + +CKS501 =[ + [9999, 9999, 9999, 6, 9999, 8], # 工序1: M4=6, M6=8 + [10, 9999, 12, 9999, 9999, 9999], # 工序2: M1=10, M3=12 + [9999, 14, 9999, 9999, 16, 9999], # 工序3: M2=14, M5=16 + [9999, 9999, 9999, 18, 9999, 20], # 工序4: M4=18, M6=20 + [22, 9999, 24, 9999, 9999, 9999], # 工序5: M1=22, M3=24 + [9999, 26, 9999, 9999, 28, 9999] # 工序6: M2=26, M5=28 +] + +CKS601 =[ + [9999, 9999, 5, 9999, 9999, 7], # 工序1: M3=5, M6=7 + [9, 9999, 9999, 11, 9999, 9999], # 工序2: M1=9, M4=11 + [9999, 13, 9999, 9999, 15, 9999], # 工序3: M2=13, M5=15 + [9999, 9999, 17, 9999, 9999, 19], # 工序4: M3=17, M6=19 + [21, 9999, 9999, 23, 9999, 9999], # 工序5: M1=21, M4=23 + [9999, 25, 9999, 9999, 27, 9999] # 工序6: M2=25, M5=27 +] + +CKS701 =[ + [4, 6, 9999, 9999, 9999, 9999], # 工序1: M1=4, M2=6 + [9999, 9999, 8, 10, 9999, 9999], # 工序2: M3=8, M4=10 + [9999, 9999, 9999, 9999, 12, 14], # 工序3: M5=12, M6=14 + [16, 18, 9999, 9999, 9999, 9999], # 工序4: M1=16, M2=18 + [9999, 9999, 20, 22, 9999, 9999], # 工序5: M3=20, M4=22 + [9999, 9999, 9999, 9999, 24, 26] # 工序6: M5=24, M6=26 +] + +Processing_time = [CKS201] + [CKS301] + [CKS401]+ [CKS501]+ [CKS601]+ [CKS701] +J = {i: 6 for i in range(1, 7)} +M_num = 6 +O_num = 6 * 6 +J_num = 6 \ No newline at end of file diff --git a/main.py b/main.py index f1da84d..fc689c2 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,4 @@ import random - import matplotlib.pyplot as plt import numpy as np @@ -13,7 +12,7 @@ from Instance import * def Gantt(Machines): M = ['red', 'blue', 'yellow', 'orange', 'green', 'palegoldenrod', 'purple', 'pink', 'Thistle', 'Magenta', 'SlateBlue', 'RoyalBlue', 'Cyan', 'Aqua', 'floralwhite', 'ghostwhite', 'goldenrod', 'mediumslateblue', - 'navajowhite', 'navy', 'sandybrown', 'moccasin'] + 'navajowhite', 'nawy', 'sandybrown', 'moccasin'] for i in range(len(Machines)): Machine = Machines[i] Start_time = Machine.O_start @@ -49,13 +48,8 @@ if __name__ == '__main__': if best_fitness < Optimal_fit: Optimal_fit = best_fitness Optimal_CHS = Best - Best_fit.append(Optimal_fit) - print('best_fitness', best_fitness) - d = Decode(J, Processing_time, M_num) - Fit.append(d.decode(Optimal_CHS, O_num)) - Gantt(d.Machines) - else: - Best_fit.append(Optimal_fit) + print('iter_{}: new best_fitness = {}'.format(i, best_fitness)) + Best_fit.append(Optimal_fit) # 始终记录当前最优适应度 for j in range(len(C)): Cafter = [] if random.random() < g.Pc: @@ -76,10 +70,26 @@ if __name__ == '__main__': if Cafter != []: Fit = g.fitness(Cafter, J, Processing_time, M_num, O_num) C[j] = Cafter[Fit.index(min(Fit))] - x = np.linspace(0, 50, g.Max_Itertions) + + # 迭代结束后输出最终结果 + print("\n=== 优化结果 ===") + print("最优适应度 (最少完成时间):", Optimal_fit) + + # 解码最优解并绘制甘特图 + d = Decode(J, Processing_time, M_num) + final_fitness = d.decode(Optimal_CHS, O_num) + print("解码验证适应度:", final_fitness) + + # 绘制最优甘特图 + Gantt(d.Machines) + + # 绘制收敛曲线 + x = np.linspace(0, g.Max_Itertions, g.Max_Itertions) + plt.figure() plt.plot(x, Best_fit, '-k') - plt.title('the maximum completion time of each iteration') + plt.title('The maximum completion time of each iteration') plt.ylabel('Cmax') - plt.xlabel('Test Num') + plt.xlabel('Iteration') + plt.grid(True) plt.savefig('最大完成时间的优化过程.png') - plt.show() + plt.show() \ No newline at end of file diff --git a/优化后排程方案的甘特图.png b/优化后排程方案的甘特图.png index dfd8cd081cc60138eb83f1c5292bb2c33a9e524f..241626b354dcb10bd16f8d9e9e671b56e4a876b7 100644 GIT binary patch literal 19103 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 J@e`Av{|{0WS3Cd! literal 25527 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