python 算法库_一个易用又功能强大的 Python遗传算法库

 2023-09-17 阅读 28 评论 0

摘要:github地址guofei9987/scikit-opt​github.com 安装 $pip install scikit-opt 定义你的目标函数 def demo_func(x): python爬虫教程。x1, x2, x3 = x return x1 ** 2 + (x2 - 0.05) ** 2 + x3 ** 2 用遗传算法求解 from ga import GA ga = GA(func=demo_f

github地址guofei9987/scikit-opt​github.comv2-4f5cdb38bbfb23abe4ced8ba01dfeb44_ipico.jpg

安装

$pip install scikit-opt

定义你的目标函数

def demo_func(x):

python爬虫教程。x1, x2, x3 = x

return x1 ** 2 + (x2 - 0.05) ** 2 + x3 ** 2

用遗传算法求解

from ga import GA

ga = GA(func=demo_func, lb=[-1, -10, -5], ub=[2, 10, 2], max_iter=500)

python语言程序设计、best_x, best_y = ga.run()

还提供一个每代数据的接口,可以拿来画各个维度的图

import pandas as pd

import matplotlib.pyplot as plt

FitV_history = pd.DataFrame(ga.FitV_history)

python算法、fig, ax = plt.subplots(2, 1)

ax[0].plot(FitV_history.index, FitV_history.values, '.', color='red')

plt_max = FitV_history.max(axis=1)

ax[1].plot(plt_max.index, plt_max, label='max')

ax[1].plot(plt_max.index, plt_max.cummax())

plt.show()

python和java。2. 用遗传算法解决TSP问题(Travelling Salesman Problem)

加载距离矩阵的数据,这里用随机数生成数据

from GA import GA_TSP

import numpy as np

num_points = 8

python有用吗,points = range(num_points)

points_coordinate = np.random.rand(num_points, 2)

distance_matrix = np.zeros(shape=(num_points, num_points))

for i in range(num_points):

for j in range(num_points):

python sort函数。distance_matrix[i][j] = np.linalg.norm(points_coordinate[i] - points_coordinate[j], ord=2)

print('distance_matrix is: \n', distance_matrix)

def cal_total_distance(points):

num_points, = points.shape

total_distance = 0

python数据结构。for i in range(num_points - 1):

total_distance += distance_matrix[points[i], points[i + 1]]

total_distance += distance_matrix[points[i + 1], points[0]]

return total_distance

用遗传算法求解:

python教程、ga_tsp = GA_TSP(func=cal_total_distance, points=points, pop=50, max_iter=200, Pm=0.001)

best_points, best_distance = ga_tsp.fit()

画图:

fig, ax = plt.subplots(1, 1)

best_points_ = np.concatenate([best_points, [best_points[0]]])

数据挖掘算法python,best_points_coordinate = points_coordinate[best_points_, :]

ax.plot(best_points_coordinate[:, 0], best_points_coordinate[:, 1],'o-r')

plt.show

这个库的灵活之处在于,可以方便地添加自定义算子

例如,如果你想到一种选择算子(selection),你的算子是这样的:

def selection_tournament(self, tourn_size):

python排序算法。FitV = self.FitV

sel_index = []

for i in range(self.size_pop):

aspirants_index = np.random.choice(range(self.size_pop), size=tourn_size)

sel_index.append(max(aspirants_index, key=lambda i: FitV[i]))

遗传算法 Python、self.Chrom = self.Chrom[sel_index, :] # next generation

return self.Chrom

把你的 UDF 自定义算子注册到遗传算法对象上:

from sko.GA import GA, GA_TSP

from sko.GA import ranking_linear, ranking_raw, crossover_2point, selection_roulette_2, mutation

python编程例子?demo_func = lambda x: x[0] ** 2 + (x[1] - 0.05) ** 2 + x[2] ** 2

ga = GA(func=demo_func, n_dim=3, size_pop=100, max_iter=500, lb=[-1, -10, -5], ub=[2, 10, 2])

#

ga.register(operator_name='ranking', operator=ranking_linear). \

register(operator_name='crossover', operator=crossover_2point). \

python为什么叫爬虫。register(operator_name='mutation', operator=mutation). \

register(operator_name='selection', operator=selection_tournament, tourn_size=3)

像往常一样运行遗传算法:

best_x, best_y = ga.run()

print('best_x:', best_x, '\n', 'best_y:', best_y)

恭喜你,成功了。现在 udf 支持遗传算法的这几个算子: crossover, mutation, selection, ranking

提供了十来个算子 参考这里

库的地址,欢迎starscikit-opt​github.com

另外,这个库还封装了粒子群算法(PSO)、蚁群算法(ACA)、模拟退火算法(SA)、免疫优化算法(IA)、人工鱼群算法(AFSA)中文文档​scikit-opt.github.ioDocument​scikit-opt.github.io

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/72466.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息