算法(Algorithm)类
算法类是优化算法的基类,提供了算法运行的基本框架和通用功能。
主要属性
| 属性名 | 类型 | 说明 |
|---|---|---|
| history | dict | 记录算法运行信息,包含运行时数据和设置信息 |
| mode | str | 运行模式,'test'或'experiment' |
history 结构
json
{
"settings": {
"problem_class": "问题类名",
"search_algorithm_class": "算法类名",
"response_strategy_class": "响应策略类名",
"problem_params": {
// 问题的简单属性(int, float, str, bool, None)
},
"search_algorithm_params": {
// 算法的简单属性
},
"response_strategy_params": {
// 响应策略的简单属性
}
},
"runtime": {
"1": {
"1000": Population实例,
"2000": Population实例
},
"2": {
"1000": Population实例,
"2000": Population实例
}
}
}参数示例
- problem_params 包含问题相关参数,如环境变化周期 tau、评估次数 nt、决策变量维度 n_var 等
- search_algorithm_params 包含算法参数,如 NSGA-II 的种群大小、变异率、交叉率等
- response_strategy_params 包含响应策略参数,如记忆库大小、预测步长等
核心方法
1. 优化接口
optimize(problem, response_strategy): 主优化接口- 参数:
problem: Problem 实例,待优化的问题response_strategy: ResponseStrategy 实例,响应策略
- 返回: 优化结果
- 参数:
必须实现
optimize 方法是抽象方法,必须由子类实现。未实现该方法将导致 NotImplementedError 异常。
2. 信息收集
collect_information(population, problem, response_strategy): 收集算法运行信息- 参数:
population: Population 实例,当前种群problem: Problem 实例,优化问题response_strategy: ResponseStrategy 实例,响应策略
- 功能:
- 框架交互
- 测试模式:提供数据给框架实时显示进化进程
- 实验模式:向框架报告优化进度
- 历史记录
- 保存种群历史信息到
history中
- 保存种群历史信息到
- 框架交互
- 参数:
重要提示
如果算法需要用到历史信息,需要手动保存
实验模式下多个优化任务并行运行时,应合理控制保存频率,避免内存溢出
3. 进程控制
control_process(): 控制算法进程- 返回:
bool,是否继续运行 - 说明: 支持运行、暂停、停止三种状态用于框架的优化控制
- 返回:
使用示例
python
# 导入必要的模块
from problems.benchmark.DP1.main import DP1
from algorithms.response_strategy.NoResponse.main import NoResponse
from algorithms.search_algorithm.NSGA2.main import NSGA2
# 创建算法实例
nsga = NSGA2()
response = NoResponse()
# 创建问题实例
df1 = DP1(10, 10, 20, 100, 30) # 参数:decision_num, n, tau, solution_num, total_evaluate_time
# 运行优化
nsga.optimize(df1, response)如何实现自己的搜索算法
请参考自定义搜索算法章节,了解如何基于 Algorithm 类实现自己的搜索算法。
