Map elites 选择
此文件是 TPOT 库的一部分。
TPOT 当前版本由 Cedars-Sinai 开发人员开发:- Pedro Henrique Ribeiro (https://github.com/perib, https://www.linkedin.com/in/pedro-ribeiro/) - Anil Saini (anil.saini@cshs.org) - Jose Hernandez (jgh9094@gmail.com) - Jay Moran (jay.moran@cshs.org) - Nicholas Matsumoto (nicholas.matsumoto@cshs.org) - Hyunjun Choi (hyunjun.choi@cshs.org) - Gabriel Ketron (gabriel.ketron@cshs.org) - Miguel E. Hernandez (miguel.e.hernandez@cshs.org) - Jason Moore (moorejh28@gmail.com)
TPOT 的原始版本主要由宾夕法尼亚大学开发人员开发:- Randal S. Olson (rso@randalolson.com) - Weixuan Fu (weixuanf@upenn.edu) - Daniel Angell (dpa34@drexel.edu) - Jason Moore (moorejh28@gmail.com) - 以及许多其他慷慨的开源贡献者
TPOT 是自由软件:您可以根据自由软件基金会发布的 GNU 宽通用公共许可证的条款(版本 3 或您选择的任何更高版本)重新分发和/或修改它。
分发 TPOT 是希望它会有用,但没有任何担保;不包括对适销性或特定用途适用性的默示担保。有关更多详细信息,请参阅 GNU 宽通用公共许可证。
您应该已收到 TPOT 的 GNU 宽通用公共许可证副本。如果没有,请参阅 https://gnu.ac.cn/licenses/。
create_nd_matrix(matrix, grid_steps=None, bins=None) ¶
创建一个 N 维矩阵,其中包含每个单元格的最高分数
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
matrix |
ndarray
|
分数矩阵,其中第一列是分数,其余列是 map-elites 算法的特征。 |
必需 |
grid_steps |
int
|
用于自动为每个特征创建 bin 阈值的步数。默认值为 None。 |
None
|
bins |
list
|
一个列表的列表,其中包含每个特征(分数除外)的 bin 边缘。默认值为 None。 |
None
|
返回值
| 类型 | 描述 |
|---|---|
ndarray
|
一个 N 维矩阵,其中包含每个单元格的最高分数以及具有该分数的个体的索引。单元格中的值是一个字典,其中包含键“score”和“idx”,分别表示个体的分数和索引。 |
源代码位于 tpot/selectors/map_elites_selection.py
get_bins(arr, k) ¶
获取分数数组的最小值和最大值之间的等距 bin 阈值。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
arr |
ndarray
|
用于计算 bin 的值列表。 |
必需 |
k |
int
|
要创建的 bin 数量。 |
必需 |
返回值
| 类型 | 描述 |
|---|---|
list
|
一个 bin 阈值列表,计算为数组最小值和最大值之间的 k 个等距 bin。 |
源代码位于 tpot/selectors/map_elites_selection.py
get_bins_quantiles(arr, k=None, q=None) ¶
接受一个矩阵并返回基于分位数的 bin 阈值。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
arr |
ndarray
|
用于计算 bin 的矩阵。 |
必需 |
k |
int
|
要创建的 bin 数量。此参数创建 k 个等距分位数。例如,k=3 将在 array([0.25, 0.5 , 0.75]) 创建分位数。 |
None
|
q |
ndarray
|
用于 bin 的自定义分位数。此参数根据数据的分位数创建 bin。默认值为 None。 |
None
|
源代码位于 tpot/selectors/map_elites_selection.py
manhattan(a, b) ¶
计算两个点之间的曼哈顿距离。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
a |
ndarray
|
第一个点。 |
必需 |
b |
ndarray
|
第二个点。 |
必需 |
返回值
| 类型 | 描述 |
|---|---|
float
|
两个点之间的曼哈顿距离。 |
源代码位于 tpot/selectors/map_elites_selection.py
map_elites_parent_selector(scores, k, n_parents=1, rng=None, manhattan_distance=2, grid_steps=10, bins=None) ¶
用于 map-elites 算法的父代选择算法。首先为每个单元格创建最佳个体的网格,然后根据最佳个体单元格之间的曼哈顿距离选择父代。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
scores |
ndarray
|
分数矩阵,其中第一列是分数,其余列是 map-elites 算法的特征。 |
必需 |
k |
int
|
要选择的个体数量。 |
必需 |
n_parents |
int
|
每个个体要选择的父代数量。默认值为 1。 |
1
|
rng |
(int, Generator)
|
随机数生成器。默认值为 None。 |
None
|
manhattan_distance |
int
|
父代之间的最大曼哈顿距离。默认值为 2。如果在该距离内找不到父代,则将距离增加 1,直到找到至少一个其他父代。 |
2
|
grid_steps |
int
|
用于自动为每个特征创建 bin 阈值的步数。默认值为 None。 |
10
|
bins |
list
|
一个列表的列表,其中包含每个特征(分数除外)的 bin 边缘。默认值为 None。 |
None
|
返回值
| 类型 | 描述 |
|---|---|
ndarray
|
为每个个体选择的父代索引数组 |
源代码位于 tpot/selectors/map_elites_selection.py
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | |
map_elites_survival_selector(scores, k=None, rng=None, grid_steps=10, bins=None) ¶
接受一个分数矩阵,并返回 map-elites 网格中最佳单元格中的个体索引。可以接受 grid_steps 参数以自动创建 bin,也可以接受 bins 参数以手动指定 bin。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
scores |
ndarray
|
分数矩阵,其中第一列是分数,其余列是 map-elites 算法的特征。 |
必需 |
k |
int
|
要选择的个体数量。默认值为 None。 |
None
|
rng |
(int, Generator)
|
随机数生成器。默认值为 None。 |
None
|
grid_steps |
int
|
用于自动为每个特征创建 bin 阈值的步数。默认值为 None。 |
10
|
bins |
list
|
一个列表的列表,其中包含每个特征(分数除外)的 bin 边缘。默认值为 None。 |
None
|
返回值
| 类型 | 描述 |
|---|---|
ndarray
|
map-elites 网格中最佳单元格中的个体索引数组(无重复)。 |