evox.operators.selection.non_dominate

模块内容

函数

dominate_relation

返回支配关系矩阵 A,其中 A_{ij} 为 True,如果 x_i 支配 y_j。

update_dc_and_rank

更新当前帕累托前沿的主导计数和等级。

_igr_fake

_igr_fake_vmap

_vmap_iterative_get_ranks_compile

_vmap_iterative_get_ranks

_iterative_get_ranks_compile

_iterative_get_ranks

non_dominate_rank

计算多目标优化中一组解的非支配等级。

crowding_distance

计算多目标优化中一组解的拥挤距离。

nd_environmental_selection

基于非支配等级和拥挤距离进行环境选择。

API

evox.operators.selection.non_dominate.dominate_relation(x: torch.Tensor, y: torch.Tensor) torch.Tensor[源代码]

返回支配关系矩阵 A,其中 A_{ij} 为 True,如果 x_i 支配 y_j。

参数:
  • x -- 一个形状为 (n1, m) 的数组,其中 n1 是种群大小,m 是目标数量。

  • y -- 一个形状为 (n2, m) 的数组,其中 n2 是种群大小,m 是目标数量。

返回:

x 和 y 的支配关系矩阵。

evox.operators.selection.non_dominate.update_dc_and_rank(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, pareto_front: torch.BoolTensor, rank: torch.Tensor, current_rank: int)[源代码]

更新当前帕累托前沿的主导计数和等级。

参数:
  • dominate_relation_matrix -- 个体之间的支配关系矩阵。

  • dominate_count -- 每个个体被多少个体所支配的计数。

  • pareto_front -- 一个张量表示当前帕累托前沿中的个体。

  • rank -- 每个个体的等级的张量。

  • current_rank -- 当前帕累托前沿排名

返回:

rank: 更新的排名张量。 dominate_count: 更新的支配计数张量。

evox.operators.selection.non_dominate._igr_fake(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, rank: torch.Tensor, pareto_front: torch.Tensor, compiling: bool) torch.Tensor[源代码]
evox.operators.selection.non_dominate._igr_fake_vmap(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, rank: torch.Tensor, pareto_front: torch.Tensor, compiling: bool) torch.Tensor[源代码]
evox.operators.selection.non_dominate._vmap_iterative_get_ranks_compile(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, rank: torch.Tensor, pareto_front: torch.Tensor) torch.Tensor[源代码]
evox.operators.selection.non_dominate._vmap_iterative_get_ranks(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, rank: torch.Tensor, pareto_front: torch.Tensor, compiling: bool) torch.Tensor[源代码]
evox.operators.selection.non_dominate._iterative_get_ranks_compile(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, rank: torch.Tensor, pareto_front: torch.Tensor) torch.Tensor[源代码]
evox.operators.selection.non_dominate._iterative_get_ranks(dominate_relation_matrix: torch.Tensor, dominate_count: torch.Tensor, rank: torch.Tensor, pareto_front: torch.Tensor, compiling: bool) torch.Tensor
evox.operators.selection.non_dominate.non_dominate_rank(x: torch.Tensor) torch.Tensor[源代码]

计算多目标优化中一组解的非支配等级。

每个解的帕累托最优度被称为非支配等级。

参数:

f -- 一个二维张量,其中每一行代表一个解,每一列代表一个目标。

返回:

一个 1D 张量,包含每个解的非支配排名。

evox.operators.selection.non_dominate.crowding_distance(costs: torch.Tensor, mask: torch.Tensor)[源代码]

计算多目标优化中一组解的拥挤距离。

Pareto 前景中解的多样性度量:

参数:
  • costs -- 一个二维张量,其中每一行代表一个解,每一列代表一个目标。

  • mask -- 一个 1D 布尔张量,指示哪些解决方案应该被考虑。

返回:

一个 1D 张量,包含每个解的拥挤距离。

evox.operators.selection.non_dominate.nd_environmental_selection(x: torch.Tensor, f: torch.Tensor, topk: int)[源代码]

基于非支配等级和拥挤距离进行环境选择。

参数:
  • x -- 一个二维张量,其中每行代表一个解决方案,每列代表一个决策变量。

  • f -- 一个二维张量,其中每一行代表一个解,每一列代表一个目标。

  • topk -- 选择的解的数量。

返回:

一个由四个张量组成的元组:x:选择的解。 f:对应的目标值。 rank:选择的解的非支配等级。 crowding_dis:选择的解的拥挤距离。