optuna.samplers.nsgaii.SBXCrossover
- class optuna.samplers.nsgaii.SBXCrossover(eta=None, uniform_crossover_prob=0.5, use_child_gene_prob=0.5)[源码]
NSGAIISampler使用的模拟二元交叉操作。根据多项式概率分布从两个父代个体生成一个子代个体。
在论文中,SBX 只有一个参数
eta,并生成两个子代个体。然而,Optuna 在一次交叉操作中只能返回一个子代个体,因此它使用uniform_crossover_prob和use_child_gene_prob参数将两个个体合并为一个。- 参数:
eta (float | None) – 分布指数。较小的
eta值允许选择较远的解作为子代解。如果未指定,单目标函数默认值为2,多目标函数默认值为20。uniform_crossover_prob (float) –
uniform_crossover_prob是在选定的两个作为候选子代个体的个体之间进行均匀交叉的概率。此参数决定是否将两个个体交叉生成一个子代个体。如果uniform_crossover_prob超过 0.5,则结果等同于1-uniform_crossover_prob,因为会返回交叉结果的两个个体之一。如果未指定,默认值为0.5。取值范围为[0.0, 1.0]。use_child_gene_prob (float) –
use_child_gene_prob是使用生成的子代变量值而不是父代值(相对于每个变量)的概率。此概率独立应用于每个变量,其中1-use_chile_gene_prob是按原样使用父代值的概率。如果未指定,默认值为0.5。取值范围为(0.0, 1.0]。
注意
在 v3.0.0 中作为实验性功能添加。接口在后续版本中可能在没有事先通知的情况下发生更改。请参阅 https://github.com/optuna/optuna/releases/tag/v3.0.0。
方法
crossover(parents_params, rng, study, ...)执行选定的父代个体的交叉操作。
属性
n_parents- crossover(parents_params, rng, study, search_space_bounds)[源码]
执行选定的父代个体的交叉操作。
此方法在
sample_relative()中调用。- 参数:
parents_params (np.ndarray) – 一个维度为
num_parents x num_parameters的numpy.ndarray。表示每个父代个体的参数空间。对于数值参数,此空间是连续的。rng (np.random.RandomState) –
numpy.random.RandomState的一个实例。study (Study) – 目标研究对象。
search_space_bounds (np.ndarray) – 一个维度为
len_search_space x 2的numpy.ndarray,表示从转换后的搜索空间构建的数值分布边界。
- 返回:
一个包含新参数组合的一维
numpy.ndarray。- 返回类型:
np.ndarray