启发式优化的Python包
MVMO的Python项目详细描述
均值-方差映射优化算法
MVMO是一个Python包,用于对凸性和/或线性可能不完全已知的约束和无约束优化问题执行启发式优化。该算法基于群优化原理,利用优化过程中最优解的均值和方差不断更新。注:由于这是一个启发式算法,它不提供最优解,而是近似最优解。然而,与传统的优化求解器相比,这是在非常快的时间内完成的。在
安装
MVMO可以从PyPI安装,方法是:
pip install MVMO
MVMO要求numpy和熊猫工作。在
使用
初始化
MVMO优化器可以使用参数iterations,num_variation,和population\u size调用。这定义了MVMO的关键参数。在
定义目标函数
默认情况下,MVMO将目标函数优化为最小值。为了最大化,需要修改目标函数。用户可根据需要定义目标函数。示例中显示了这一点。MVMO包提供了Wikipedia中的以下测试函数基准测试:
- 罗森布鲁克
- 马提亚斯
- 展位
- 他妈的
- Easom公司
约束定义
约束可以是不平等或平等。约束作为dictionary对象传递,关键字为ineq
、eq
或{str
格式指定,并且必须遵循约定:
复杂的约束也可以定义为python函数。后面将展示如何使用MVMO包进行约束优化的示例。它使用所有三个约束定义。在
二进制和整数变量
MVMO还提供了在优化决策中定义二进制和整数变量的能力。这可以通过在optimize
函数中使用binary
或integer
关键字来指定变量的索引。这将在后面的示例中显示。在
优化
可以在optimizer
上调用optimize()
方法来执行优化。它在优化完成后返回一个res
dictionanry对象。其中包括:
objective
:提供最佳目标函数值,以及它是从何处获得的。在x
:优化决策向量convergence
:提供优化过程中目标函数值的列表。这可以用来绘制收敛图。在register
:pandas数据帧,大小为population_size
,其中包含保存最好的目标函数值和X
向量。在metrics
:提供用于优化的存储解决方案的内部平均值和方差。在scaling_factors
“提供迭代过程中使用的缩放因子列表。在
收敛图可以用MVMO.plot(res['convergence'])
绘制。在
以下示例显示了约束Rosenbrock函数的最小化:
fromMVMOimportMVMOfromMVMOimporttest_functionsfunction=test_functions.rosenoptimizer=MVMO(iterations=5000,num_mutation=1,population_size=10)deffunc_constr(X):returnTrueifX[0]**2+X[1]**2<1elseFalsebds=[(0,1.5),(1,3.5)]constr={'ineq':"(X[0] - 1)**3 - X[1] + 1",'eq':"X[0]+X[1]-2",'func':func_constr}res=optimizer.optimize(obj_fun=function,bounds=bds,constraints=constr,binary=[0],integer=[1])print(res['x')MVMO.plot(res['convergence'])
- 项目
标签: