Skip to content

种群(Population)类

种群类是用于管理优化过程中解集的核心类。它提供了种群的基本操作和进化算法中常用的功能。

主要属性

属性名类型说明
individualslist个体对象列表,每个元素是一个 Individual 实例
nint种群大小
xlnumpy.ndarray决策变量下界
xunumpy.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

通过指定种群数量创建种群是最常用的方式,它能够:

  • 自动生成指定数量的随机个体
  • 保持决策变量在上下界范围内
  • 代码简洁,使用方便

注意事项

  1. 初始化方式

    • 提供了三种灵活的初始化方式
    • 确保选择合适的初始化方式以满足具体需求
  2. 数据一致性

    • 更新决策变量后需要重新评估目标值和约束值
    • 使用 update_objective_constrain 方法保持数据一致性

提示

  • 种群类主要用于管理个体集合
  • 个体的具体属性和行为由 Individual 类定义
  • 评估功能需要配合 Problem 类使用