Fixed parameters

In this notebook we will show how to use fixed parameters. Therefore, we employ our Rosenbrock example. We define two problems, where for the first problem all parameters are optimized, and for the second we fix some of them to specified values.

Define problem

[1]:
import pypesto
import pypesto.visualize
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt

%matplotlib inline
[2]:
objective = pypesto.Objective(fun=sp.optimize.rosen,
                              grad=sp.optimize.rosen_der,
                              hess=sp.optimize.rosen_hess)

dim_full = 5
lb = -2 * np.ones((dim_full,1))
ub = 2 * np.ones((dim_full,1))

problem1 = pypesto.Problem(objective=objective, lb=lb, ub=ub)

x_fixed_indices = [1, 3]
x_fixed_vals = [1, 1]
problem2 = pypesto.Problem(objective=objective, lb=lb, ub=ub,
                           x_fixed_indices=x_fixed_indices,
                           x_fixed_vals=x_fixed_vals)

Optimize

[3]:
optimizer = pypesto.ScipyOptimizer()
n_starts = 10

result1 = pypesto.minimize(problem=problem1, optimizer=optimizer,
                           n_starts=n_starts)
result2 = pypesto.minimize(problem=problem2, optimizer=optimizer,
                           n_starts=n_starts)

Visualize

[4]:
fig, ax = plt.subplots()
pypesto.visualize.waterfall(result1, ax)
pypesto.visualize.waterfall(result2, ax)
pypesto.visualize.parameters(result1)
pypesto.visualize.parameters(result2)
pypesto.visualize.parameters(result2, free_indices_only=False)
[4]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fe98fe12650>
../_images/example_fixed_parameters_8_1.png
../_images/example_fixed_parameters_8_2.png
../_images/example_fixed_parameters_8_3.png
../_images/example_fixed_parameters_8_4.png
[5]:
result1.optimize_result.as_dataframe(['fval', 'x', 'grad'])
[5]:
fval x grad
0 4.689854e-14 [0.9999999815635604, 0.9999999601303594, 0.999... [1.1618317897690609e-06, 1.2817350405303142e-0...
1 5.590260e-14 [0.9999999788673749, 0.9999999710531022, 0.999... [-5.3696059283362676e-06, -3.17862832097996e-0...
2 3.799999e-13 [0.9999999894531796, 0.9999999867856568, 1.000... [-3.1728126266944613e-06, -1.6951548081005115e...
3 4.110300e-13 [1.0000000452200102, 1.0000000894442573, 1.000... [4.887460487692825e-07, 3.7999227735179252e-06...
4 6.110801e-13 [0.9999999640563018, 0.9999999933489752, 0.999... [-2.6166434580847274e-05, 8.102944813282283e-0...
5 1.231774e-12 [1.0000000581023145, 1.000000113974549, 1.0000... [1.0082380613547457e-06, 1.8071346123806702e-0...
6 6.918491e-12 [1.0000000005661727, 1.0000001076896814, 1.000... [-4.262180210516511e-05, 7.700439519900304e-05...
7 2.552430e-11 [0.9999999192005172, 1.0000000369812814, 1.000... [-7.959368869249685e-05, -8.749066771695052e-0...
8 2.855055e-11 [0.9999995268339968, 0.9999992696810054, 0.999... [-8.735140622961871e-05, 4.373181014008344e-05...
9 3.930839e+00 [-0.9620508371994185, 0.9357391790840979, 0.88... [5.2019939965397555e-05, 2.44790688288532e-05,...
[6]:
result2.optimize_result.as_dataframe(['fval', 'x', 'grad'])
[6]:
fval x grad
0 3.757636e-21 [0.9999999999987625, 1.0, 1.0000000000008613, ... [-9.92438575763029e-10, nan, 8.630336445497983...
1 3.403187e-16 [1.000000000296693, 1.0, 0.9999999993226122, 1... [2.3794769983646036e-07, nan, -6.7874258776674...
2 1.078998e-15 [0.9999999994275696, 1.0, 0.9999999986532816, ... [-4.5908920971880386e-07, nan, -1.349411838817...
3 1.986582e-15 [0.9999999981059375, 1.0, 0.9999999990468542, ... [-1.5190380919959983e-06, nan, -9.550520753635...
4 1.777511e-14 [1.0000000013724608, 1.0, 0.9999999967022452, ... [1.100713572463121e-06, nan, -3.30435034796972...
5 2.344376e-14 [0.9999999959141576, 1.0, 0.9999999996553852, ... [-3.2768456252559055e-06, nan, -3.453040106231...
6 2.096868e-13 [0.9999999984695723, 1.0, 1.0000000066163943, ... [-1.2274029922568326e-06, nan, 6.6296271449766...
7 3.989975e+00 [-0.9949747468749881, 1.0, 0.9999999997811084,... [-3.507845658390352e-08, nan, -2.1932935463983...
8 3.989975e+00 [-0.9949747444243423, 1.0, 1.000000008470282, ... [1.900857428349667e-06, nan, 8.487222652784575...
9 3.989975e+00 [-0.9949747299382655, 1.0, 1.0000000336260297,... [1.334441878420023e-05, nan, 3.369328314657676...