[SciPy-User] Optimization on the subspace of a domain
Cy. T.
dragontse at hotmail.com
Sun Aug 25 02:25:55 EDT 2013
Thank you both for these great solutions!
From: newville at cars.uchicago.edu
Date: Fri, 23 Aug 2013 17:03:39 -0500
To: scipy-user at scipy.org
Subject: Re: [SciPy-User] Optimization on the subspace of a domain
Hi,
On Fri, Aug 23, 2013 at 3:49 PM, Cy. T. <dragontse at hotmail.com> wrote:
Hello there,
As I am learning how to do minimization using SciPy, I wonder if I can do the minimization just on a (proper) subspace of the domain of a function.
For instance, if I have a multivariate function f(x,y,z), can I ask SciPy to find a minimum by changing only x and y and keeping z fixed?
It would work if I define a new function: f(x,y,z_0) = h(x,y) for a given z_0, but I wonder if there is an option for doing that without defining another function.
Thanks.
Depending on your needs, you might find the lmfit-py package (https://github.com/newville/lmfit-py) useful. With this approach, you would write your function once in terms of a set of Parameters:
import lmfit
def f(params, *args, **kwargs):
x = params['x'].value
y = params['y'].value
z = params['z'].value
# do calculation ...
return value_to_minimize
params = lmfit.Parameters()
params.add('x', value= 10.0)
params.add('y', value=2.0, min=0)
params.add('z', value=0, vary=False)
lmfit.minimize(f, params)
print( lmfit.report_fit(params))
Each Parameter can be varied or fixed (vary=False), have upper and/or lower bounds placed on its value, or have its value evaluated as a function of other Parameters. All of these parameter settings can be changed independently of the implementation of the objective function.
By default, the least-squares minimization from scipy.optimize.leastsq() is used (and so value_to_minimize should be an array that will be minimized in the least-squares sense), but the scalar minimization methods like Nelder-Mead can also be used. For leastsq(), uncertainties and correlations in the variables are reported from the covariance matrix, and confidence levels can also be determined more explicitly.
Cheers,
--Matt Newville <newville at cars.uchicago.edu>
_______________________________________________
SciPy-User mailing list
SciPy-User at scipy.org
http://mail.scipy.org/mailman/listinfo/scipy-user
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20130824/f7426ab9/attachment.html>
More information about the SciPy-User
mailing list