From 532d8d8522151f45d1c7e8ee653c9c21120f6bf6 Mon Sep 17 00:00:00 2001 From: Hgq <2757430053@qq.com> Date: Tue, 9 Dec 2025 17:42:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BE=93=E5=85=A5=E9=87=8F?= =?UTF-8?q?=E9=94=99=E8=AF=AF=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=97=A9=E5=81=9C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF=EF=BC=88=E7=BB=9D=E5=AF=B9?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E6=94=B9=E4=B8=BA=E7=9B=B8=E5=AF=B9=E5=8F=98?= =?UTF-8?q?=E5=8C=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_structures.py | 6 +++--- main.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data_structures.py b/data_structures.py index 01f1651..a51a0cc 100644 --- a/data_structures.py +++ b/data_structures.py @@ -13,7 +13,7 @@ class RiskEnterpriseData: def __init__(self): self.I = 8 # 物料种类数(与订单一致) self.C0_i_min = [50, 100, 150, 80, 100, 150, 80, 100] # 单物料的单位时间最小产能 - self.C0_total_max = 18000 # 总产能上限(单位时间) + self.C0_total_max = 1800 # 总产能上限(单位时间) self.distance = 30 # 与需求点的距离 class SupplierData: """供应商数据类:存储各供应商的产能、价格、距离等信息""" @@ -78,7 +78,7 @@ class SupplierData: [0, 0, 10, 0, 12, 0, 8, 16] ] # 供应商与需求点的距离(supplier_count) - self.distance = [50, 40, 60, 30, 60, 80, 50, 60] + self.distance = [50, 40, 60, 30, 60, 80] class Config: """算法参数配置类:存储NSGA-II的各类参数""" def __init__(self): @@ -99,7 +99,7 @@ class Config: self.early_stop_threshold = 0.1 # 目标值变化阈值 # 目标函数数量 self.objective_num = 2 # 双目标(成本+延期) - self.duplicate_threshold = 0.01 # 重复解保留数量 + self.duplicate_threshold = 0.01 # 重复解保留数量比例 self.print_top_n = 10 # 打印前N个最优解 class DataStructures: diff --git a/main.py b/main.py index 1675127..435cb2a 100644 --- a/main.py +++ b/main.py @@ -74,9 +74,9 @@ def main(): cost_change = abs(avg_cost - prev_avg_cost) tardiness_change = abs(avg_tardiness - prev_avg_tardiness) - # 检查是否两个目标的变化都小于阈值 - if (cost_change < config.early_stop_threshold and - tardiness_change < config.early_stop_threshold): + # 检查是否两个目标的变化率 + if (cost_change < config.early_stop_threshold * prev_avg_cost and + tardiness_change < config.early_stop_threshold * prev_avg_tardiness): no_improve_count += 1 else: