name: genetic-algorithm-optimizer description: 用于解决具有非线性目标或不连续搜索空间的复杂优化问题的遗传算法技能 allowed-tools:
- Read
- Write
- Glob
- Grep
- Bash
metadata:
specialization: decision-intelligence
domain: business
category: optimization
priority: lower
tools-libraries:
- DEAP
- pymoo
- geneticalgorithm
遗传算法优化器
概述
遗传算法优化器技能提供进化计算能力,用于解决传统方法难以处理的复杂优化问题。它通过受生物学启发的搜索策略处理非线性、非凸、不连续和多目标优化。
能力
- 染色体编码(二进制、实数、排列)
- 选择算子(锦标赛、轮盘赌、排名)
- 交叉和变异操作
- 多目标优化(NSGA-II、NSGA-III)
- 约束处理
- 参数调优指导
- 收敛性监控
- 帕累托前沿可视化
使用流程
- 规范分析与优化
- 战略投资组合优化
- 设计优化
使用方法
问题定义
# 定义优化问题
ga_problem = {
"name": "投资组合优化",
"encoding": "real", # 或 "binary", "permutation", "integer"
"variables": {
"asset_weights": {
"count": 10,
"bounds": [0, 1],
"constraint": "sum_to_one"
}
},
"objectives": [
{
"name": "maximize_return",
"function": "portfolio_return(weights, expected_returns)",
"direction": "maximize"
},
{
"name": "minimize_risk",
"function": "portfolio_volatility(weights, covariance_matrix)",
"direction": "minimize"
}
],
"constraints": [
{
"name": "min_diversification",
"expression": "max(weights) <= 0.25",
"type": "inequality"
},
{
"name": "sector_limit",
"expression": "sum(tech_weights) <= 0.40",
"type": "inequality"
}
]
}
遗传算法配置
# 遗传算法参数
ga_config = {
"population_size": 200,
"generations": 500,
"selection": {
"method": "tournament",
"tournament_size": 3
},
"crossover": {
"method": "simulated_binary", # 用于实数编码
"probability": 0.9,
"eta": 15 # 分布指数
},
"mutation": {
"method": "polynomial",
"probability": 0.1,
"eta": 20
},
"elitism": 0.05, # 保留前5%
"constraint_handling": "penalty", # 或 "repair", "feasibility_rules"
"termination": {
"max_generations": 500,
"convergence_threshold": 1e-6,
"stall_generations": 50
}
}
多目标配置(NSGA-II)
# NSGA-II设置
nsga_config = {
"algorithm": "NSGA-II",
"population_size": 100,
"reference_directions": "auto", # 用于NSGA-III
"diversity_mechanism": "crowding_distance",
"archive": {
"enabled": True,
"max_size": 200
}
}
编码类型
| 编码类型 | 最适合 | 算子 |
|---|---|---|
| 二进制 | 特征选择,离散选择 | 单点交叉,两点交叉 |
| 实数 | 连续优化 | SBX,多项式变异 |
| 排列 | 排序,旅行商问题 | PMX,顺序交叉 |
| 整数 | 有范围的离散值 | 均匀交叉 |
选择方法
| 方法 | 描述 | 压力 |
|---|---|---|
| 锦标赛 | 随机子集竞争 | 可调节 |
| 轮盘赌 | 概率与适应度成比例 | 高 |
| 排名 | 基于排名的概率 | 中等 |
| 随机通用 | 均匀选择分布 | 低 |
输入模式
{
"problem": {
"encoding": "string",
"variables": "object",
"objectives": ["object"],
"constraints": ["object"]
},
"ga_config": {
"population_size": "number",
"generations": "number",
"selection": "object",
"crossover": "object",
"mutation": "object"
},
"multi_objective": {
"algorithm": "NSGA-II|NSGA-III|MOEA/D",
"reference_directions": "object"
},
"output_options": {
"save_history": "boolean",
"pareto_front": "boolean",
"convergence_plot": "boolean"
}
}
输出模式
{
"best_solution": {
"variables": "object",
"objectives": "object",
"constraint_violation": "number"
},
"pareto_front": [
{
"variables": "object",
"objectives": "object"
}
],
"convergence": {
"generations": ["number"],
"best_fitness": ["number"],
"average_fitness": ["number"],
"diversity": ["number"]
},
"statistics": {
"total_evaluations": "number",
"feasible_solutions": "number",
"hypervolume": "number (multi-objective)"
},
"visualization_paths": ["string"]
}
最佳实践
- 对于复杂景观,从较大的种群开始
- 平衡探索(变异)和利用(交叉)
- 尽可能使用特定问题的算子
- 监控多样性以避免过早收敛
- 使用不同种子运行多次
- 用领域专业知识验证解决方案
- 考虑混合方法(遗传算法+局部搜索)
约束处理
| 方法 | 描述 | 使用时机 |
|---|---|---|
| 惩罚 | 向适应度添加惩罚项 | 简单约束 |
| 修复 | 修复不可行解 | 结构已知 |
| 可行性规则 | 可行解 > 不可行解 | 许多约束 |
| 单独处理 | 带约束的锦标赛 | 多目标 |
多目标解释
对于帕累托最优解:
- 前沿上的所有解都是非支配的
- 目标之间存在权衡
- 决策者基于偏好选择
- 使用超体积进行算法比较
集成点
- 输入到战略选项分析师进行策略优化
- 与敏感性分析器连接进行稳健性测试
- 支持优化专家代理
- 与决策可视化集成用于帕累托前沿