蛙跳优化器-精简版

lpfgopt-lite的Python项目详细描述


Leap Frog优化器包-精简版

  • 作者:马克·雷德
  • 电子邮件:redddogjr@gmail.com">redddogjr@gmail.com
  • github:https://github.com/flytereddflagg
  • 网址:http://www.r3eda.com/" rel="nofollow">http://www.r3eda.com/

关于:

此包基于 跨越式优化 算法 出版的 R.Russell Rhinehart博士

以下出版物介绍了这项技术,可在网站上找到:

  • 莱茵哈特,R.R.,M.Su和U.Manimegalai Sridhar, "跨越与天气跨越:一种新的优化方法", 《计算机与化学工程》,第40卷,2012年5月11日,第67-81页。

  • Manimegalai Sridhar,U.,A.Govindarajan和R.R.Rhinehart, "在跨越式优化中改进玩家初始化", 计算机与化学工程,第60卷,2014,426-429。

  • 莱茵哈特,R.R., "随机过程优化的收敛准则", 《计算机与化学工程》,第68卷,2014年9月4日,第1-6页。

这是该软件包的精简版本,只需最少的工具。它是用纯python编写的,以实现兼容性 对于alpha版本,直到发布完整版本。

安装

您可以通过pip或使用源代码中的setup.py脚本安装lite版本。说明如下。

系统安装要求:

  • python=3.6
  • numpy
  • scipy
  • 鼻子

通过PIP

lpfgopt可以使用以下命令与pip一起安装:

$ pip install lpfgopt-lite # You may need root privileges or the --user tag

如果您希望使用pip在本地安装,可以执行以下操作:

  • 下载"lite"分支并解压缩存档或使用git克隆它。

  • 打开"setup.py"所在的主目录并运行以下命令:

    $ pip install .
    

通过setup.py
  • 下载"lite"分支并解压缩存档或使用git克隆它。

  • 打开"setup.py"所在的主目录并运行以下命令:

    $ python setup.py install     # You may need root priviliges or use the --user tag

软件应正确安装。您可以通过执行以下命令来验证安装:

$python>>>importlpfgopt>>>lpfgopt.__version__'X.X.X'>>>lpfgopt.minimize(lambdax:x[0]**2+10,[[-10,10]])['x'][<approximately0.0>]>>>

如果以上命令产生输出恭喜!您已成功安装该软件包!

用法

使用lpfgopt.minimize函数来解决表单中的优化问题:

minimize f(x)
subject to:
	g(x) <= 0
	bound[0][0] <= x[0] <= bound[0][1]
	bound[1][0] <= x[0] <= bound[1][1]
	...
	bound[n][0] <= x[0] <= bound[n][1]

where n is the number of decsision variables and bound
is a n X 2 list of lists or 2d numpy array with shape (n,2)

lpfgopt.minimize文档

lpfgopt.minimize(乐趣,界限,参数=,点数=20,fconstraint=none,离散=[],maxit=10000,tol=1e-5,seedval=none,pointset=none,callback=none

一般使用包装器函数与LeapFrog优化器类接口。包含运行跨越式优化所需的数据和方法。接受约束、离散变量并允许各种选项。

  • 参数:

    • 乐趣:可调用目标函数
    • 界限:类数组,形状(n,2)决策变量上下限
    • 参数:iterable要传递的其他参数 进入函数
    • 点:int点集大小
    • fconstraint:callable表单g(x)<;=0的约束函数
    • 离散:与数组类似的索引列表 离散变量。这些变量 将被限制为整数值 通过截断任意随机数LY生成 数字(即四舍五入到 最接近的整数绝对值)
    • maxit:int最大迭代次数
    • 公差:浮点值收敛公差
    • 种子值:int随机种子
    • 点集:数组状,形状(m,n)起点集
    • 回调:可调用每次迭代后要调用的函数
  • 返回:

    • 解决方案:dict包含优化结果的字典。 下面列出了解决方案的成员。

      • x:列表 解向量或 产生最低的决策变量 目标函数值

      • 成功:布尔 优化器是否成功退出。

      • 状态:int 优化器的终止状态。其价值 取决于基础解算器。参照 有关详细信息的消息。

      • 消息:字符串 终止原因的说明。

      • 乐趣:浮动 "x"处的目标函数值

      • NFEV:int 目标的功能评估次数 函数

      • 单位:int 执行的迭代次数

      • 最大值:浮点值 期间计算的最大约束冲突 优化

      • 最佳:列表 人口中最低的 点集中的目标值具有 [f(x),x[0],x[1],…,x[n-1]

    • 最差:列表 人口中 点集中的目标值具有 [f(x),x[0],x[1],…,x[n-1]

      • 最终错误:浮点 终止时的优化收敛值

      • 点集:列表,形状(m,n)终止时的整个点集状态 表格:

         [
         [f(x[0]),   x[0][0],   x[0][1],   ..., x[0][n-1]],
         [f(x[1]),   x[1][0],   x[1][1],   ..., x[1][n-1]],
         ...,
         [f(x[m-1]), x[m-1][0], x[m-1][1], ..., x[m-1][n-1]]
         ]
        

        其中n是决策变量的个数,m 是搜索总体中的点数。

示例用法

下面是一个简单的优化,其中找到了以下方程的最小值:

  • $f(x)=x^2+y^2$
  • 服从:$g(x)=-x^2-y+10\le 0$g(x)=-x^2-y+10<;=0
# test_lpfgopt.pyfromlpfgoptimportminimizeimportmatplotlib.pyplotasplt# set up the objective funciton, # constraint fuction and boundsf=lambdax:sum([i**2foriinx])g=lambdax:-x[0]**2+10-x[1]bounds=[[-5,5]foriinrange(2)]# run the optimizationsol=minimize(f,bounds,fconstraint=g)['x']print(f"Solution is: {sol}")# plot the results on a contour plotgg=lambdax:-x**2+10# for plotting purposesplt.figure(figsize=(8,8))x,y=np.linspace(-5,5,1000),np.linspace(-5,5,1000)X,Y=np.meshgrid(x,y)Z=f([X,Y])plt.contourf(X,Y,Z)plt.plot(x,gg(x),"r",label="constraint")plt.plot(*sol,'x',markersize=14,markeredgewidth=4,color="lime",label="optimum")plt.ylim(-5,5)plt.xlim(-5,5)plt.legend()plt.show()

此代码将产生以下输出:

Solution is: [-3.0958051486911997, 0.4159905027317925]

以及与下图类似的绘图:

 src=

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java根据选择随机设置图标   java如何将Android Studio与本地服务器数据库SQL server 2008连接?   java在点击鼠标后绘制一个椭圆形   java选项窗格相对于其父项的位置   java如何在Android中的switch case中使用String[]输入?   安卓无法从“15.0.1”确定java版本   如果满足特定条件,java是否重置计时器?   java是一个实体类,可以在OOAD中返回其他实体实例吗?   bash将对jar文件| cut | awk和java程序的调用集成到一个统一进程中   Spring安全更新身份验证成功时的最后登录日期   数据库身份验证中基于Java控制台的客户端服务器登录应用程序错误   java Selenium junit测试失败,驱动程序过早获取URL   java LibGdx多点触摸事件混淆   带扫描仪的java打印空间   来自旧版应用程序的java springcloudsleuth头   java如何实现模板设计模式?   java如何比较具有多个值的键的两个映射?   读取时R中的java MemoryError。xlsx