1234567891011121314151617181920212223242526 |
- """Nelder-Mead minimization algorithm for the 4D function:
- F = (x/4-1)**2 + (y+2)**2 + z**2 + (w-6)**2 + 3"""
- from vedo import Minimizer, Line, show
- from vedo.pyplot import plot
- def func(pars):
- x, y, z, w = pars # unpack parameters for convenience
- F = (x/4-1)**2 + (y+2)**2 + z**2 + (w-6)**2 + 3
- return F
- mini = Minimizer(func)
- mini.set_parameter("x", 4.0) # set initial values
- mini.set_parameter("y", -3.0)
- mini.set_parameter("z", 1.0)
- mini.set_parameter("w", 1.0)
- res = mini.minimize() # run the minimization
- mini.compute_hessian() # compute the Hessian to estimate the errors
- print(mini)
- # Draw the path of the minimization
- path = res["parameters_path"]
- vals = res["function_path"]
- line = Line(path[:,:3], lw=5).cmap("jet", path[:,3]).add_scalarbar()
- plo = plot(vals, xtitle="iteration", ytitle="function eval", lw=3)
- show(line, plo.clone2d(), __doc__, axes=1)
|