Opytimizer:一个基于自然启发的Python优化器
欢迎使用Opytimizer
你是否在计算实验中遇到过瓶颈?你是否厌倦了为选定的技术选择合适的参数?如果是,Opytimizer就是你的最佳选择!这个包提供了元启发式优化的简单实现。从代理到搜索空间,从内部功能到外部通信,我们将促进所有与优化相关的研究。
如果你需要一个库或希望实现以下目标,请使用Opytimizer:
- 创建你的优化算法;
- 设计或使用预加载的优化任务;
- 混合搭配不同的策略来解决你的问题;
- 因为优化事物很有趣。
在opytimizer.readthedocs.io阅读文档。
Opytimizer兼容:Python 3.6+。
包使用指南
- 你需要的第一手信息就在下一部分。
- 如果你想阅读代码并深入研究,安装也很简单,请继续往下看。
- 请注意,使用我们的解决方案可能需要一些额外步骤。
- 如果有问题,请不要犹豫,联系我们。
- 最后,我们专注于最小化。在设计问题时请记住这一点。
引用
如果你使用Opytimizer来满足任何需求,请引用我们:
@misc{rosa2019opytimizer,
title={Opytimizer: A Nature-Inspired Python Optimizer},
author={Gustavo H. de Rosa, Douglas Rodrigues and João P. Papa},
year={2019},
eprint={1912.13002},
archivePrefix={arXiv},
primaryClass={cs.NE}
}
入门:60秒了解Opytimizer
首先,我们有示例。是的,它们都有注释。只需浏览到examples/
,选择你的子包,然后按照示例操作。我们为大多数我们能想到的任务提供了高级示例和令人惊叹的集成(Learnergy、NALP、OPFython、PyTorch、Scikit-Learn、Tensorflow)。
另外,如果你想学习更多,请花一分钟时间:
Opytimizer基于以下结构,你应该注意其树形结构:
- opytimizer
- core
- agent
- block
- cell
- function
- node
- optimizer
- space
- functions
- constrained
- multi_objective
- math
- distribution
- general
- hyper
- random
- optimizers
- boolean
- evolutionary
- misc
- population
- science
- social
- swarm
- spaces
- boolean
- graph
- grid
- hyper_complex
- pareto
- search
- tree
- utils
- callback
- constant
- exception
- history
- logging
- visualization
- convergence
- surface
核心
核心是最重要的部分。本质上,它是一切的基础。在这里你可以找到定义我们结构基础的父类。它们提供了变量和方法,有助于构建其他模块。
函数
与其使用原始和直接的函数,为什么不尝试这个模块呢?组合高级抽象函数甚至新的基于函数的想法来解决你的问题。请注意,目前我们仅支持多目标函数策略。
数学
虽然我们在进行计算,但这并不意味着我们不需要数学。数学是包含低级数学实现的数学包。从随机数到分布生成,你可以在这个模块中找到你所需要的。
优化器
这就是我们被称为Opytimizer的原因。这是启发式算法的核心,你可以在这里找到大量的元启发式算法、优化技术,以及任何可以被称为优化器的东西。请查看可用的优化器。
空间
可以将空间视为代理更新其位置并评估适应度函数的地方。然而,最新的方法可能会考虑不同类型的空间。考虑到这一点,我们很高兴支持多种空间实现。
工具
这是一个实用工具包。应用程序中共享的常见功能应该在这里实现。最好是实现一次并按需使用,而不是反复重新实现相同的功能。
可视化
每个人都需要图像和图表来帮助可视化正在发生的事情,对吗?这个包将为你提供所有与视觉相关的方法。检查特定变量的收敛性,你的适应度函数收敛性,绘制基准函数表面等等!
安装
我们相信一切都应该简单。Opytimizer不会让你感到棘手或令人生畏,它将成为你从首次安装到日常任务实施需求的首选包。你只需在你最喜欢的Python环境(原生、conda、virtualenv等)下运行以下命令:
pip install opytimizer
或者,如果你更喜欢安装最新版本,请克隆此存储库并使用:
pip install -e .
环境配置
请注意,有时可能需要额外的实现。如果需要,从这里开始,你将了解所有细节。
Ubuntu
不需要特定的额外命令。
Windows
不需要特定的额外命令。
MacOS
不需要特定的额外命令。
如何使用:最小示例
看一下Opytimizer的一个快速工作示例。请注意,我们没有传递很多额外的参数或附加信息给这个过程。对于更复杂的示例,请查看我们的examples/
文件夹。
import numpy as np
from opytimizer import Opytimizer
from opytimizer.core import Function
from opytimizer.optimizers.swarm import PSO
from opytimizer.spaces import SearchSpace
def sphere(x):
return np.sum(x ** 2)
n_agents = 20
n_variables = 2
lower_bound = [-10, -10]
upper_bound = [10, 10]
space = SearchSpace(n_agents, n_variables, lower_bound, upper_bound)
optimizer = PSO()
function = Function(sphere)
opt = Opytimizer(space, optimizer, function)
opt.start(n_iterations=1000)
支持
我们知道我们尽了最大努力,但不可避免地要承认我们会犯错。如果你需要报告错误、提出问题或与我们交谈,请随时联系!我们将尽最大努力在这个存储库中为你提供支持。