种群(Population)类
种群类是用于管理优化过程中解集的核心类。它提供了种群的基本操作和进化算法中常用的功能。
主要属性
| 属性名 | 类型 | 说明 |
|---|---|---|
| individuals | list | 个体对象列表,每个元素是一个 Individual 实例 |
| n | int | 种群大小 |
| xl | numpy.ndarray | 决策变量下界 |
| xu | numpy.ndarray | 决策变量上界 |
核心方法
1. 获取种群信息
get_decision_matrix(): 获取种群的决策变量矩阵- 返回:
numpy.ndarray,形状为 (n_individuals, n_var),每行代表一个个体的决策变量
- 返回:
get_objective_matrix(): 获取种群的目标值矩阵- 返回:
numpy.ndarray,形状为 (n_individuals, n_obj),每行代表一个个体的目标值
- 返回:
get_constrain_matrix(): 获取种群的约束值矩阵- 返回:
numpy.ndarray,形状为 (n_individuals, n_con),每行代表一个个体的约束值
- 返回:
2. 更新种群
update_X(X): 批量更新种群中每个个体的决策变量- 参数:
X-numpy.ndarray,形状为 (n_individuals, n_var) - 返回: 无
- 参数:
update_objective_constrain(problem): 更新种群的目标值和约束值- 参数:
problem-Problem实例,用于评估个体 - 返回: 无
- 参数:
3. 工具方法
copy(): 创建种群的深拷贝- 返回:
Population实例,包含所有个体的深拷贝
- 返回:
to_dict(): 将种群转换为字典格式- 返回:
dict,格式如下:json{ "decision": [] // 决策变量列表,每个元素是一个个体的决策变量 }
- 返回:
- 支持
len()和索引访问,如pop[0]获取第一个个体
使用示例
python
# 方式1:从个体列表创建
individuals = [Individual(x) for x in X] # X 是决策变量矩阵
pop = Population(individuals=individuals, xl=problem.xl, xu=problem.xu)
# 方式2:通过指定种群数量创建种群 [推荐]
pop = Population(xl=problem.xl, xu=problem.xu, n_init=problem.solution_num)
# 方式3:从决策矩阵创建
X = np.random.random((100, 10)) # 100个个体,每个个体10个决策变量
pop = Population(X=X, xl=problem.xl, xu=problem.xu)推荐使用方式2
通过指定种群数量创建种群是最常用的方式,它能够:
- 自动生成指定数量的随机个体
- 保持决策变量在上下界范围内
- 代码简洁,使用方便
注意事项
初始化方式
- 提供了三种灵活的初始化方式
- 确保选择合适的初始化方式以满足具体需求
数据一致性
- 更新决策变量后需要重新评估目标值和约束值
- 使用
update_objective_constrain方法保持数据一致性
提示
- 种群类主要用于管理个体集合
- 个体的具体属性和行为由
Individual类定义 - 评估功能需要配合
Problem类使用
