ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Pymoo 多目标优化实战指南:从 NSGA-II 到 Pareto 前沿的科学计算方案

Pymoo 多目标优化实战指南:从 NSGA-II 到 Pareto 前沿的科学计算方案 Pymoo 多目标优化实战指南从 NSGA-II 到 Pareto 前沿的科学计算方案【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills导读本文基于 scientific-agent-skills 仓库中的 pymoo Agent Skill 编写围绕 pymoo SKILL 文档 及其下完整的 references 参考文档 与可执行 scripts 脚本系统讲解如何在 Python 中使用 pymoo 解决单目标、多目标与高维多目标优化问题。读完本文你将掌握统一minimize()接口、三种问题定义风格、九大实操工作流、算法与遗传算子选型、约束处理、多准则决策MCDM、可视化与并行化等完整技术栈可直接在工程设计、科学研究与 AI Agent 场景中落地使用。一、Skill 概览为什么用它何时用它Pymoo 是一个以多目标优化为核心的 Python 优化框架内置了 NSGA-II、NSGA-III、MOEA/D、SPEA2 等前沿算法ZDT、DTLZ、WFG 等标准基准测试问题可自定义的遗传算子以及一整套多准则决策方法。它最擅长处理的是**目标相互冲突、需要寻找折中解Pareto 前沿**的优化问题。仓库中的 Skill 元数据将其定位为Multi-objective optimization framework. NSGA-II, NSGA-III, MOEA/D, Pareto fronts, constraint handling, benchmarks (ZDT, DTLZ), for engineering design and optimization problems.见 SKILL.md。根据 SKILL.md 的 When to Use 章节本 Skill 适用于以下场景求解单目标或多目标优化问题寻找 Pareto 最优解并分析目标间的折中关系实现进化算法GA、DE、PSO、NSGA-II/III 等处理带约束的优化问题在标准测试问题ZDT、DTLZ、WFG上对算法做基准评测自定义交叉、变异、选择等遗传算子可视化高维优化结果从多个竞争解中做决策选优处理二进制、离散、连续或混合变量问题。二、安装与运行环境Skill 前端元数据声明compatibility: Requires Python 3.10 and pymoo (uv pip install)即要求 Python 3.10 及以上版本并通过 uv 安装 pymoo。基本安装uv pip install pymoo可复现环境的版本锁定uv pip install pymoo0.6.1.6依赖说明见 SKILL.mdNumPy自 0.6.1.3 起兼容 NumPy 2.xSciPy科学计算基础依赖matplotlib可视化绘制散点图、平行坐标图等必需autograd可选自 0.6.1.3 起支持基于梯度的特性joblib可选用于JoblibParallelization并行化见 parallelization.mdoptuna可选当使用pymoo.algorithms.soo.nonconvex.optuna.Optuna包装器时需单独安装。当前稳定版本为pymoo 0.6.1.62025 年 11 月发布。三、核心概念统一接口与问题定义3.1 统一的minimize()接口Pymoo 所有优化任务都通过同一个minimize()函数完成参数语义高度一致优化什么、如何优化、何时停止from pymoo.optimize import minimize result minimize( problem, # What to optimize algorithm, # How to optimize termination, # When to stop seed1, verboseTrue )返回的result对象包含字段含义result.X最优解组的决策变量值result.F最优解组的目标函数值result.G约束违反量若问题带约束result.algorithm算法对象含迭代历史n_gen、evaluator.n_eval等例如仓库脚本 single_objective_example.py 中就是这样读取结果并统计迭代信息的print(fBest solution: {result.X}) print(fBest objective value: {result.F[0]:.6f}) print(fNumber of generations: {result.algorithm.n_gen}) print(fNumber of function evaluations: {result.algorithm.evaluator.n_eval})3.2 三种问题定义风格Pymoo 支持三种问题定义方式见 SKILL.mdProblem向量化风格——_evaluate接收一批解的矩阵batch适合高性能评估ElementwiseProblem一次评估一个解——自定义问题与并行评估的首选也是仓库五个示例脚本统一采用的风格FunctionalProblem以独立函数定义目标与约束无需子类化。3.3 六类问题类型问题类型特征单目标Single-objective一个待最小化/最大化的目标多目标Multi-objective2~3 个冲突目标 → 求 Pareto 前沿高维多目标Many-objective4 个及以上目标 → 高维 Pareto 前沿约束问题Constrained目标 不等式/等式约束混合变量Mixed-variable同一问题中混合连续、整数、二进制、类别变量动态问题Dynamic目标或约束随时间变化四、九大快速上手工作流仓库在 quick_start_workflows.md 中沉淀了九个可直接运行的完整工作流并配套 scripts 下的五个可执行示例。下表是工作流速查#工作流适用场景1单目标优化只有一个目标用 GA 或 DE2多目标优化2-3 目标NSGA-II 求 Pareto 前沿3高维多目标4 目标NSGA-III 或参考方向法4自定义问题定义子类化Problem/ElementwiseProblem5约束处理不等式与等式约束6Pareto 前沿上的决策标量化与 MCDM 选优7可视化散点、PCP、radviz、热力图8并行评估线程、进程或 Dask 处理昂贵目标9混合变量优化整数、二进制、类别变量工作流 1单目标优化对应完整脚本 single_objective_example.py使用遗传算法在 Sphere 函数上做单目标最小化from pymoo.algorithms.soo.nonconvex.ga import GA from pymoo.problems import get_problem from pymoo.optimize import minimize # 内置测试问题10 维 Rastrigin problem get_problem(rastrigin, n_var10) # 配置遗传算法 algorithm GA( pop_size100, eliminate_duplicatesTrue ) # 终止条件200 代 result minimize( problem, algorithm, (n_gen, 200), seed1, verboseTrue ) print(fBest solution: {result.X}) print(fBest objective: {result.F[0]})脚本版本还显式配置了算子组合见 single_objective_example.pyFloatRandomSampling()初始采样 SBX(prob0.9, eta15)交叉 PM(eta20)变异终止条件用get_termination(n_gen, 100)表达。工作流 2多目标优化NSGA-II Pareto 前沿对应完整脚本 multi_objective_example.py在 ZDT1 双目标问题上运行 NSGA-II并将求得的 Pareto 前沿与真实前沿叠加对比from pymoo.algorithms.moo.nsga2 import NSGA2 from pymoo.problems import get_problem from pymoo.optimize import minimize from pymoo.visualization.scatter import Scatter # 双目标基准问题 ZDT1 problem get_problem(zdt1) # NSGA-II 算法 algorithm NSGA2(pop_size100) # 优化 200 代 result minimize(problem, algorithm, (n_gen, 200), seed1) # 可视化红色为求得前沿黑色半透明为真实前沿 plot Scatter() plot.add(result.F, labelObtained Front) plot.add(problem.pareto_front(), labelTrue Front, alpha0.3) plot.show() print(fFound {len(result.F)} Pareto-optimal solutions)脚本还会打印前沿解数量与迭代统计multi_objective_example.py。工作流 3高维多目标NSGA-III 参考方向对应完整脚本 many_objective_example.py在 5 目标 DTLZ2 上使用 NSGA-III并用平行坐标图PCP可视化from pymoo.algorithms.moo.nsga3 import NSGA3 from pymoo.problems import get_problem from pymoo.optimize import minimize from pymoo.util.ref_dirs import get_reference_directions from pymoo.visualization.pcp import PCP # 5 目标问题 problem get_problem(dtlz2, n_obj5) # 生成参考方向NSGA-III 必需 # 注意n_dim 是位置参数写成 n_obj 会抛 TypeError ref_dirs get_reference_directions(das-dennis, 5, n_partitions12) # 配置 NSGA-III algorithm NSGA3(ref_dirsref_dirs) # 优化 300 代 result minimize(problem, algorithm, (n_gen, 300), seed1) # 平行坐标图可视化 plot PCP(labels[ff{i1} for i in range(5)]) plot.add(result.F, alpha0.3) plot.show()该脚本注释中特别强调了仓库实测的一个坑get_reference_directions的维度参数是位置参数传入n_obj关键字会触发TypeError见 many_objective_example.py。工作流 4自定义问题定义对应完整脚本 custom_problem_example.py该脚本同时演示了无约束与带约束两个自定义问题。无约束双目标问题from pymoo.core.problem import ElementwiseProblem import numpy as np class MyProblem(ElementwiseProblem): def __init__(self): super().__init__( n_var2, # 决策变量数 n_obj2, # 目标数 xlnp.array([0, 0]), # 下界 xunp.array([5, 5]) # 上界 ) def _evaluate(self, x, out, *args, **kwargs): f1 x[0]**2 x[1]**2 f2 (x[0]-1)**2 (x[1]-1)**2 out[F] [f1, f2]带约束问题在__init__中声明约束数量在_evaluate中输出G/Hclass ConstrainedProblem(ElementwiseProblem): def __init__(self): super().__init__( n_var2, n_obj2, n_ieq_constr2, # 不等式约束数 n_eq_constr1, # 等式约束数 xlnp.array([0, 0]), xunp.array([5, 5]) ) def _evaluate(self, x, out, *args, **kwargs): out[F] [f1, f2] # 目标 out[G] [g1, g2] # 不等式约束 g(x) 0 out[H] [h1] # 等式约束 h(x) 0约束书写规则详见 constraints_mcdm.md不等式写成g(x) 0≤ 0 即可行等式写成h(x) 0等于 0 即可行若原始约束形如g(x) b转换为-(g(x) - b) 0。custom_problem_example.py 给出了工程化的转换实例x2 9*x1 6被改写为g1 -(x[1] 9*x[0] - 6)-x2 9*x1 1被改写为g2 -(-x[1] 9*x[0] - 1)。工作流 5约束处理Pymoo 提供四类约束处理手段详见 constraints_mcdm.md① 可行性优先Feasibility First默认推荐多数算法默认行为比较规则为两者皆可行→比较目标值一可行一不可行→可行者胜两者皆不可行→比较约束违反量。用result.CV[:, 0] 0判断可行性from pymoo.algorithms.moo.nsga2 import NSGA2 algorithm NSGA2(pop_size100) result minimize(problem, algorithm, termination) feasible result.CV[:, 0] 0 # CV constraint violation print(fFeasible solutions: {np.sum(feasible)})② 罚函数法把约束违反量折入目标值F_penalized F penalty_factor * violationfrom pymoo.constraints.as_penalty import ConstraintsAsPenalty problem_penalized ConstraintsAsPenalty(problem, penalty1e6)penalty系数需按问题量级调参见 constraints_mcdm.md。③ 约束目标化将约束违反量作为额外目标问题变为 M1 目标适合可行域很小的场景from pymoo.constraints.as_obj import ConstraintsAsObjective problem_with_cv ConstraintsAsObjective(problem)④ 专用算法SRES/ISRES 内建约束处理适合重约束问题from pymoo.algorithms.soo.nonconvex.sres import SRES algorithm SRES()此外还可使用ε-约束法动态可行性阈值与修复算子Repair。修复算子通过继承pymoo.core.repair.Repair实现例如把解投影回可行域constraints_mcdm.mdfrom pymoo.core.repair import Repair class MyRepair(Repair): def _do(self, problem, X, **kwargs): X np.clip(X, problem.xl, problem.xu) return X algorithm GA(pop_size100, repairMyRepair())约束方法选型速查问题特征推荐方法可行域大Feasibility First可行域小Constraint as Objective、Repair重约束SRES/ISRES、ε-约束线性约束Repair投影非线性约束Feasibility First、Penalty已知可行解偏置初始化工作流 6Pareto 前沿上的决策MCDM对应完整脚本 decision_making_example.py该脚本依次演示了寻找极端解、比较不同偏好权重、用花瓣图Petal对比选中方案输出结论是不同权重会选择不同解权重越高越偏向在该目标上更优的解。Pseudo-Weights 伪权重法示例from pymoo.mcdm.pseudo_weights import PseudoWeights import numpy as np # 归一化目标到 [0, 1] F_norm (result.F - result.F.min(axis0)) / (result.F.max(axis0) - result.F.min(axis0)) # 定义偏好权重之和必须为 1 weights np.array([0.3, 0.7]) # 30% f1, 70% f2 # 决策选优 dm PseudoWeights(weights) selected_idx dm.do(F_norm) best_solution result.X[selected_idx] best_objectives result.F[selected_idx]其他 MCDM 方法详见 constraints_mcdm.mdCompromise Programming折中规划选择距理想点最近的解CompromiseProgramming().do(result.F, idealideal_point, nadirnadir_point)Knee Point膝点检测无需先验偏好时选择折中最平衡的解KneePoint().do(result.F)Hypervolume Contribution超体积贡献挑选对超体积贡献最大的多样子集配合pymoo.indicators.hv.HV计算贡献度。MCDM 决策工作流constraints_mcdm.md先归一化目标 → 散点图分析折中 → 应用 MCDM 方法 → 用 Petal 图验证所选方案。工作流 7可视化Pymoo 提供八类可视化详见 visualization.md全部基于 matplotlib 封装并接受标准 kwargs2 目标 → 散点图from pymoo.visualization.scatter import Scatter plot Scatter(titleBi-objective Results) plot.add(result.F, colorblue, alpha0.7) plot.show()3 目标 → 3D 散点plot.add(result.F)自动渲染 3D。4 目标 → 平行坐标图 PCPfrom pymoo.visualization.pcp import PCP plot PCP( labels[ff{i1} for i in range(n_obj)], normalize_each_axisTrue ) plot.add(result.F, alpha0.3) plot.show()解对比 → 花瓣图 Petalfrom pymoo.visualization.petal import Petal plot Petal( bounds[result.F.min(axis0), result.F.max(axis0)], labels[Cost, Weight, Efficiency] ) plot.add(solution_A, labelDesign A) plot.add(solution_B, labelDesign B) plot.show()其余类型还包括 Heatmap密度分布、Radar多准则性能画像、Radviz高维降维投影、Star Coordinate星坐标以及基于算法历史生成收敛动画的Video需save_historyTrue与 ffmpeg。可视化选型指南问题类型首选图辅助图2 目标ScatterHeatmap3 目标3D Scatter平行坐标4-10 目标平行坐标Radviz10 目标RadvizStar Coordinates解对比Petal/Radar平行坐标收敛过程VideoScatter末代分布分析HeatmapScatter保存图片使用plot.save(my_plot.png, dpi300)多数据集叠加可直接多次plot.add(...)传入不同颜色与 label。工作流 8并行评估当_evaluate是瓶颈仿真、ML 推理、外部求解器时通过给ElementwiseProblem传入elementwise_runner实现并行详见 parallelization.md。前提是子类化ElementwiseProblem而非向量化Problem。线程池版本适合 I/O 密集评估from multiprocessing.pool import ThreadPool from pymoo.algorithms.soo.nonconvex.ga import GA from pymoo.core.problem import ElementwiseProblem from pymoo.optimize import minimize from pymoo.parallelization.starmap import StarmapParallelization class MyProblem(ElementwiseProblem): def __init__(self, elementwise_runnerNone, **kwargs): super().__init__( n_var10, n_obj1, xl-5, xu5, elementwise_runnerelementwise_runner, **kwargs, ) def _evaluate(self, x, out, *args, **kwargs): out[F] (x ** 2).sum() # 替换为昂贵的评估逻辑 pool ThreadPool(4) runner StarmapParallelization(pool.starmap) problem MyProblem(elementwise_runnerrunner) result minimize(problem, GA(), (n_gen, 50), seed1) pool.close() # 务必在优化结束后关闭线程池进程池版本适合 CPU 密集评估将ThreadPool换为multiprocessing.PoolJoblib 版本使用JoblibParallelization(lambda func, X: Parallel(n_jobs4)(delayed(func)(x) for x in X))。注意进程池要求问题定义可 pickle类体内避免 lambda且并行收益取决于评估成本与调度开销的比值。工作流 9混合变量优化当决策变量同时包含连续、整数、二进制、类别类型时用带类型标注的vars字典定义问题并用MixedVariableGA求解from pymoo.core.problem import ElementwiseProblem from pymoo.core.variable import Real, Integer, Choice, Binary from pymoo.core.mixed import MixedVariableGA from pymoo.optimize import minimize class MixedProblem(ElementwiseProblem): def __init__(self, **kwargs): vars { b: Binary(), x: Choice(options[nothing, multiply]), y: Integer(bounds(0, 2)), z: Real(bounds(0, 5)), } super().__init__(varsvars, n_obj1, **kwargs) def _evaluate(self, X, out, *args, **kwargs): b, x, z, y X[b], X[x], X[z], X[y] f z y if b: f 100 * f if x multiply: f 10 * f out[F] f algorithm MixedVariableGA(pop_size20) result minimize(MixedProblem(), algorithm, (n_evals, 1000), seed1)多目标混合变量问题为MixedVariableGA传入survivalRankAndCrowdingSurvival()即可quick_start_workflows.md单目标混合搜索还可使用pymoo.algorithms.soo.nonconvex.optuna.Optuna包装器需单独uv pip install optuna见 algorithms.md。五、算法选择指南5.1 单目标算法算法最佳场景特点GA通用算子灵活可定制DE连续优化全局搜索能力强PSO平滑地貌收敛快CMA-ES困难/带噪声问题协方差自适应Pattern Search / Nelder-Mead无梯度信息直接搜索/局部优化GA 的默认参数为pop_size100、Tournament 选择、SBX 交叉、Polynomial 变异、eliminate_duplicatesTruealgorithms.md。5.2 多目标算法2-3 目标算法最佳场景特点NSGA-II标准基准快速、可靠、久经测试非支配排序 拥挤距离SPEA2归档式 MOO基于强度的适应度 外部归档0.6.1.6 有改进R-NSGA-II偏好区域参考点引导MOEA/D可分解问题标量化分解SMS-EMOA超体积指标支配超体积贡献选择5.3 高维多目标算法4 目标算法最佳场景特点NSGA-III4-15 目标参考方向维持多样性pop_size默认等于参考方向数RVEA自适应搜索参考向量演化AGE-MOEA复杂地貌自适应几何估计U-NSGA-III多种场景更稳健的统一版本NSGA-II 与 NSGA-III 的分界很明确2-3 目标用 NSGA-II计算开销更低4 目标用 NSGA-III分布更均匀。5.4 约束问题方案算法适用时机可行性优先任意算法可行域较大专用算法SRES、ISRES重约束罚函数GA penalty算法兼容性优先动态多目标场景目标随时间变化可选用 D-NSGA-II 与 KGB-DMOEA知识引导利用历史信息详见 algorithms.md。六、基准测试问题Pymoo 通过get_problem统一提供测试问题详见 problems.mdfrom pymoo.problems import get_problem # 单目标 problem get_problem(rastrigin, n_var10) problem get_problem(rosenbrock, n_var10) # 多目标 problem get_problem(zdt1) # 凸前沿 problem get_problem(zdt2) # 非凸前沿 problem get_problem(zdt3) # 不连续前沿5 个分区 # 高维多目标 problem get_problem(dtlz2, n_obj5, n_var12) problem get_problem(dtlz7, n_obj4)ZDT 套件双目标标准基准的关键特征问题变量/边界前沿形状用途ZDT130 连续[0,1]凸基础收敛与多样性ZDT230 连续[0,1]非凸凹非凸前沿处理ZDT330 连续[0,1]不连续5 段不连续前沿的多样性维持ZDT410 连续x₁∈[0,1]x₂₋₁₀∈[-10,10]凸21⁹ 个局部前沿全局搜索ZDT511 离散位串凸离散优化与欺骗性地貌ZDT610 连续[0,1]非凸、密度不均偏置分布处理DTLZ 套件高维可扩展基准目标数通常 3-15DTLZ1 线性前沿但含 11^k 局部前沿DTLZ2 球形前沿适合基础多样性测试DTLZ3 组合了 DTLZ1 的多模态与 DTLZ2 的几何DTLZ7 具有 2^(M-1) 个不连续区域。其他问题族WFGWFG1-WFG9含不可分、欺骗、多模态、偏置、缩放前沿等复杂形状、MW / DAS-CMOP约束多目标、DF1-DF14CEC2018 动态多目标基准、工程问题 Truss2D重量 vs 位移与 Welded Beam多约束工程设计。问题选型指引基础收敛DTLZ2、ZDT1多模态ZDT4、DTLZ1、DTLZ3非凸ZDT2不连续ZDT3、DTLZ7约束MW/DAS-CMOP工程验证Truss2D、Welded Beam。七、遗传算子定制Pymoo 允许对采样、选择、交叉、变异四个环节做细粒度定制详见 operators.md。7.1 标准连续变量 GA 配置from pymoo.algorithms.soo.nonconvex.ga import GA from pymoo.operators.crossover.sbx import SBX from pymoo.operators.mutation.pm import PM algorithm GA( pop_size100, crossoverSBX(prob0.9, eta15), mutationPM(eta20), eliminate_duplicatesTrue )参数语义SBX(prob0.9, eta15)模拟二进制交叉eta分布指数越高子代越接近父代偏局部搜索越低越偏向探索交叉概率通常取 0.8-0.95PM(probNone, eta20)多项式变异probNone表示使用1/n_var标准推荐值更高的变异概率带来更多探索但收敛变慢eliminate_duplicatesTrue消除冗余重复解。7.2 按变量类型选算子变量类型采样交叉变异连续FloatRandomSampling/LHSSBX、DE 交叉PM二进制BinaryRandomSamplingTwoPointCrossover、UniformCrossover(prob0.5)、HUXBitflipMutation(prob0.05)整数IntegerRandomSampling整数 SBX整数 PM排列TSP、调度PermutationRandomSamplingOrderCrossoverOX、ERX、PMXInversionMutation、ScrambleMutation排列问题 GATSP示例from pymoo.operators.sampling.rnd import PermutationRandomSampling from pymoo.operators.crossover.ox import OrderCrossover from pymoo.operators.mutation.inversion import InversionMutation sampling PermutationRandomSampling() crossover OrderCrossover() mutation InversionMutation()选择算子TournamentSelection(pressure2)锦标赛压力默认 2与RandomSelection()。7.3 字符串简写配置Pymoo 支持用字符串直接指定算子operators.mdalgorithm GA( pop_size100, samplingreal_random, crossoverreal_sbx, mutationreal_pm )可用字符串采样real_random/real_lhs/bin_random/perm_random交叉real_sbx/real_de/int_sbx/bin_ux/bin_hux变异real_pm/int_pm/bin_bitflip/perm_inv。7.4 参数调优经验交叉概率高0.8-0.95为多数问题的标准选择变异概率1/n_var为标准推荐交叉eta15-30越高越偏局部搜索变异eta20-50越高越偏开发exploitation。八、性能调优与故障排查8.1 常见问题与对策现象对策算法不收敛增大种群规模增加迭代代数检查问题是否多模态换算法核对约束表述Pareto 前沿分布差调整 NSGA-III 参考方向增大种群检查重复解消除核对问题尺度可行解稀少采用约束目标化应用修复算子尝试 SRES/ISRES检查约束是否写成g 0计算成本高减小种群减少代数用更简单算子通过elementwise_runner开启并行工作流 88.2 最佳实践清单归一化目标各目标尺度差异大时先归一化设置随机种子seed1保证可复现保存历史save_historyTrue便于分析收敛过程可视化结果理解解的质量与真实 Pareto 前沿对比当测试问题提供pareto_front()时合理设置终止条件(n_gen, N)或get_termination(f_tol, tol0.001)调优算子参数针对问题特征调整交叉/变异概率与eta。8.3 收敛可视化配合save_historyTrue可把各代的最优前沿叠在同一张散点图上观察收敛轨迹visualization.mdresult minimize( problem, algorithm, (n_gen, 200), seed1, save_historyTrue, verboseFalse ) plot Scatter(titleConvergence Over Generations) for gen in [0, 50, 100, 150, 200]: F result.history[gen].opt.get(F) plot.add(F, alpha0.5, labelfGen {gen}) plot.show()九、Skill 资源索引与运行方式本 Skill 在仓库中配有完整的参考文档与可执行脚本推荐在实战中按需查阅参考文档references/algorithms.md全部算法的参数、用法与选型指南problems.mdZDT/DTLZ/WFG 等基准问题特征operators.md采样、选择、交叉、变异算子及配置visualization.md八类可视化类型、示例与选型constraints_mcdm.md约束处理技术与多准则决策方法parallelization.mdStarmapParallelization 与 JoblibParallelization 并行评估。可执行脚本scripts/single_objective_example.pyGA 单目标优化Sphere 函数multi_objective_example.pyNSGA-II 多目标 可视化ZDT1many_objective_example.pyNSGA-III 高维多目标 参考方向DTLZ2custom_problem_example.py自定义约束/无约束问题decision_making_example.py多准则决策与偏好对比。运行示例python3 skills/pymoo/scripts/single_objective_example.py python3 skills/pymoo/scripts/multi_objective_example.py python3 skills/pymoo/scripts/many_objective_example.py python3 skills/pymoo/scripts/custom_problem_example.py python3 skills/pymoo/scripts/decision_making_example.py快速检索模式查阅参考文档时可按主题 grep例如算法细节grep -r NSGA-II\|NSGA-III\|MOEA/D skills/pymoo/references/约束方法grep -r Feasibility First\|Penalty\|Repair skills/pymoo/references/可视化类型grep -r Scatter\|PCP\|Petal skills/pymoo/references/。十、常见模式速记自定义问题优先用ElementwiseProblem函数式定义可选FunctionalProblem混合变量问题用带类型标注的vars字典约束统一写成g(x) 0、h(x) 0NSGA-III 必须提供参考方向get_reference_directions注意 n_dim 为位置参数执行 MCDM 前先归一化目标终止条件二选一(n_gen, N)按代数get_termination(f_tol, tol0.001)按收敛容差。以上模式均与 SKILL.md 的 Additional Notes 及仓库各脚本实现一一对应可直接复制到科研、工程设计或 AI Agent 的优化任务中。【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表