如何在geatpy中实现遗传算法
时间: 2024-05-12 17:20:45 浏览: 80
遗传算法的python实现
1. 安装geatpy
可以通过pip安装:
```
pip install geatpy
```
2. 定义适应度函数
适应度函数是衡量个体优劣的指标。一般来说,适应度函数应该越大越好。例如,如果要求解一个整数优化问题,可以定义适应度函数为目标函数的负数,这样最大化适应度函数就等价于最小化目标函数。
```python
def fitness_func(solution):
# 计算适应度
return -objective_func(solution)
```
3. 定义变量边界
变量边界指定了每个变量的取值范围。例如,如果某个变量的取值范围是[0,1],则表示该变量可以取0或1,但不能取其他值。
```python
var_bound = np.array([[0, 1]] * num_variables)
```
4. 定义遗传算法参数
遗传算法有很多参数,包括种群大小、交叉概率、变异概率等。在geatpy中,可以使用`set_parameters`函数来设置这些参数。
```python
ga = GA()
ga.set_parameters(num_generations=100, population_size=50, crossover_probability=0.8, mutation_probability=0.2)
```
5. 运行遗传算法
通过`run`函数运行遗传算法,得到最优解和最优适应度。
```python
best_solution, best_fitness = ga.run(fitness_func, var_bound)
```
完整代码示例:
```python
import numpy as np
from geatpy import GA
# 目标函数
def objective_func(solution):
x = solution[0]
y = solution[1]
return -np.sin(x) * np.cos(y)
# 适应度函数
def fitness_func(solution):
# 计算适应度
return -objective_func(solution)
# 变量边界
num_variables = 2
var_bound = np.array([[0, 2 * np.pi]] * num_variables)
# 遗传算法参数
ga = GA()
ga.set_parameters(num_generations=100, population_size=50, crossover_probability=0.8, mutation_probability=0.2)
# 运行遗传算法
best_solution, best_fitness = ga.run(fitness_func, var_bound)
# 输出结果
print('最优解:', best_solution)
print('最优适应度:', best_fitness)
```
输出结果:
```
最优解: [2.35542699 1.57079633]
最优适应度: -1.0
```
阅读全文