数值优化/最小化
optip的Python项目详细描述
optipy
optipy包含一种通用的优化/最小化方法。它的创造是 由于没有实现牛顿方法的习惯 在scipy中的hessian解算器(参见this bug)。
强制性的rosenbrock示例:
a=1.0b=100.0deffun(x):return(a-x[0])**2+b*(x[1]-x[0]**2)**2defjac(x):returnnumpy.array([-2*(a-x[0])-4*b*(x[1]-x[0]**2)*x[0],2*b*(x[1]-x[0]**2)])defhess_inv(x,grad):hess=numpy.array([[2+8*b*x[0]**2-4*b*(x[1]-x[0]**2),-4*b*x[0]],[-4*b*x[0],2*b]])return-numpy.linalg.solve(hess,grad)sol=optipy.minimize(fun=fun,x0=[-1.0,3.5],jac=jac,get_search_direction=hess_inv,atol=1.0e-5)
这基本上就是精确的牛顿法。设置get_search_direction
时
为了lambda x, grad: -grad
,我们得到了最速下降法。对于更大的
计算,通常会用一个定制的解算器来代替它,例如
预处理的krylov解算器。
返回类型在很大程度上与scipy的泛型返回类型兼容, OptmizeResult。
安装
optipy是available from the Python Package Index,所以只要做
pip install -U optipy
安装或升级。使用sudo -H
以根用户身份安装或--user
选项
安装在$HOME
中。
测试
要运行optipy单元测试,请签出此存储库并键入
pytest
分布
创建新版本
把
__version__
号撞一下,发布到pypi并在github上标记:
$ make publish
许可证
optipy发布在MIT license下。