hessians module¶
Hessian matrix approximations from gradient pairs.
Classes:
|
Builds a BFGS approximation from optimization history. |
|
Abstract class for hessian approximations from optimization history. |
|
Builds a Least squares approximation from optimization history. |
|
Builds a Symmetric Rank One approximation from optimization history. |
- class gemseo.post.core.hessians.BFGSApprox(history)[source]¶
Bases:
gemseo.post.core.hessians.HessianApproximationBuilds a BFGS approximation from optimization history.
Constructor.
- Parameters
history – the optimization history
Methods:
build_approximation(funcname[, save_diag, …])Builds the hessian approximation B.
build_inverse_approximation(funcname[, …])Builds the inversed hessian approximation H.
compute_corrections(x_hist, x_grad_hist)Computes the corrections from the history.
compute_scaling(hessk, hessk_dsk, …)Compute scaling.
get_s_k_y_k(x_hist, x_grad_hist, iteration)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
get_x_grad_history(funcname[, first_iter, …])Get gradient history and design variables history of gradient evaluations.
iterate_approximation(hessk, dsk, dyk[, scaling])BFGS iteration from step k to step k+1.
iterate_inverse_approximation(h_mat, s_k, y_k)Inverse BFGS iteration.
iterate_s_k_y_k(x_hist, x_grad_hist)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
rebuild_history(x_corr, x_0, grad_corr, g_0)Computes the history from the corrections.
- build_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, b_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, scaling=False, normalize_design_space=False, design_space=None)¶
Builds the hessian approximation B.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
b_mat0 – initial approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None) (Default value = False)
scaling – do scaling step
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the B matrix, its diagonal, and eventually the x and grad history pairs used to build B, if return_x_grad=True, otherwise, None and None are returned for args consistency
- build_inverse_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, h_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, factorize=False, scaling=False, angle_tol=1e-05, step_tol=10000000000.0, normalize_design_space=False, design_space=None)¶
Builds the inversed hessian approximation H.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
h_mat0 – initial inverse approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the H matrix, its diagonal, and eventually the x and grad history pairs used to build H, if return_x_grad=True, otherwise, None and None are returned for args consistency
- static compute_corrections(x_hist, x_grad_hist)¶
Computes the corrections from the history.
- static compute_scaling(hessk, hessk_dsk, dskt_hessk_dsk, dyk, dyt_dsk)¶
Compute scaling.
- Parameters
hessk – previous approximation
hessk_dsk – product between hessk and dsk
dskt_hessk_dsk – product between dsk^t, hessk and dsk
dyk – gradients difference between iterates
dyt_dsk – product between dyk^t and dsk^t
- static get_s_k_y_k(x_hist, x_grad_hist, iteration)¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
iteration – iteration number for which the pair must be generated
- get_x_grad_history(funcname, first_iter=0, last_iter=0, at_most_niter=- 1, func_index=None, normalize_design_space=False, design_space=None)¶
Get gradient history and design variables history of gradient evaluations.
- Parameters
funcname – function name
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = 0)
at_most_niter – maximum number of iterations to take (Default value = -1)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- static iterate_approximation(hessk, dsk, dyk, scaling=False)¶
BFGS iteration from step k to step k+1.
- Parameters
hessk – previous approximation
dsk – design variable difference between iterates
dyk – gradients difference between iterates
scaling – do scaling step
- Returns
updated approximation
- static iterate_inverse_approximation(h_mat, s_k, y_k, h_factor=None, b_mat=None, b_factor=None, factorize=False, scaling=False)¶
Inverse BFGS iteration.
- Parameters
h_mat – previous approximation
s_k – design variable difference between iterates
y_k – gradients difference between iterates
- Returns
updated inverse approximation
- static iterate_s_k_y_k(x_hist, x_grad_hist)[source]¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
- static rebuild_history(x_corr, x_0, grad_corr, g_0)¶
Computes the history from the corrections.
- class gemseo.post.core.hessians.HessianApproximation(history)[source]¶
Bases:
objectAbstract class for hessian approximations from optimization history.
Constructor.
- Parameters
history – the optimization history
Methods:
build_approximation(funcname[, save_diag, …])Builds the hessian approximation B.
build_inverse_approximation(funcname[, …])Builds the inversed hessian approximation H.
compute_corrections(x_hist, x_grad_hist)Computes the corrections from the history.
compute_scaling(hessk, hessk_dsk, …)Compute scaling.
get_s_k_y_k(x_hist, x_grad_hist, iteration)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
get_x_grad_history(funcname[, first_iter, …])Get gradient history and design variables history of gradient evaluations.
iterate_approximation(hessk, dsk, dyk[, scaling])BFGS iteration from step k to step k+1.
iterate_inverse_approximation(h_mat, s_k, y_k)Inverse BFGS iteration.
iterate_s_k_y_k(x_hist, x_grad_hist)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
rebuild_history(x_corr, x_0, grad_corr, g_0)Computes the history from the corrections.
- build_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, b_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, scaling=False, normalize_design_space=False, design_space=None)[source]¶
Builds the hessian approximation B.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
b_mat0 – initial approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None) (Default value = False)
scaling – do scaling step
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the B matrix, its diagonal, and eventually the x and grad history pairs used to build B, if return_x_grad=True, otherwise, None and None are returned for args consistency
- build_inverse_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, h_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, factorize=False, scaling=False, angle_tol=1e-05, step_tol=10000000000.0, normalize_design_space=False, design_space=None)[source]¶
Builds the inversed hessian approximation H.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
h_mat0 – initial inverse approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the H matrix, its diagonal, and eventually the x and grad history pairs used to build H, if return_x_grad=True, otherwise, None and None are returned for args consistency
- static compute_scaling(hessk, hessk_dsk, dskt_hessk_dsk, dyk, dyt_dsk)[source]¶
Compute scaling.
- Parameters
hessk – previous approximation
hessk_dsk – product between hessk and dsk
dskt_hessk_dsk – product between dsk^t, hessk and dsk
dyk – gradients difference between iterates
dyt_dsk – product between dyk^t and dsk^t
- static get_s_k_y_k(x_hist, x_grad_hist, iteration)[source]¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
iteration – iteration number for which the pair must be generated
- get_x_grad_history(funcname, first_iter=0, last_iter=0, at_most_niter=- 1, func_index=None, normalize_design_space=False, design_space=None)[source]¶
Get gradient history and design variables history of gradient evaluations.
- Parameters
funcname – function name
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = 0)
at_most_niter – maximum number of iterations to take (Default value = -1)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- static iterate_approximation(hessk, dsk, dyk, scaling=False)[source]¶
BFGS iteration from step k to step k+1.
- Parameters
hessk – previous approximation
dsk – design variable difference between iterates
dyk – gradients difference between iterates
scaling – do scaling step
- Returns
updated approximation
- static iterate_inverse_approximation(h_mat, s_k, y_k, h_factor=None, b_mat=None, b_factor=None, factorize=False, scaling=False)[source]¶
Inverse BFGS iteration.
- Parameters
h_mat – previous approximation
s_k – design variable difference between iterates
y_k – gradients difference between iterates
- Returns
updated inverse approximation
- class gemseo.post.core.hessians.LSTSQApprox(history)[source]¶
Bases:
gemseo.post.core.hessians.HessianApproximationBuilds a Least squares approximation from optimization history.
Constructor.
- Parameters
history – the optimization history
Methods:
build_approximation(funcname[, save_diag, …])Builds the hessian approximation.
build_inverse_approximation(funcname[, …])Builds the inversed hessian approximation H.
compute_corrections(x_hist, x_grad_hist)Computes the corrections from the history.
compute_scaling(hessk, hessk_dsk, …)Compute scaling.
get_s_k_y_k(x_hist, x_grad_hist, iteration)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
get_x_grad_history(funcname[, first_iter, …])Get gradient history and design variables history of gradient evaluations.
iterate_approximation(hessk, dsk, dyk[, scaling])BFGS iteration from step k to step k+1.
iterate_inverse_approximation(h_mat, s_k, y_k)Inverse BFGS iteration.
iterate_s_k_y_k(x_hist, x_grad_hist)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
rebuild_history(x_corr, x_0, grad_corr, g_0)Computes the history from the corrections.
- build_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, b_mat0=None, at_most_niter=- 1, return_x_grad=False, scaling=False, func_index=- 1, normalize_design_space=False, design_space=None)[source]¶
Builds the hessian approximation.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
b_mat0 – initial approximation matrix (Default value = None)
at_most_niter – Default value = -1)
return_x_grad – Default value = False)
func_index – Default value = -1)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the B matrix, its diagonal, and eventually the x and grad history pairs used to build B, if return_x_grad=True, otherwise, None and None are returned for args consistency
- build_inverse_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, h_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, factorize=False, scaling=False, angle_tol=1e-05, step_tol=10000000000.0, normalize_design_space=False, design_space=None)¶
Builds the inversed hessian approximation H.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
h_mat0 – initial inverse approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the H matrix, its diagonal, and eventually the x and grad history pairs used to build H, if return_x_grad=True, otherwise, None and None are returned for args consistency
- static compute_corrections(x_hist, x_grad_hist)¶
Computes the corrections from the history.
- static compute_scaling(hessk, hessk_dsk, dskt_hessk_dsk, dyk, dyt_dsk)¶
Compute scaling.
- Parameters
hessk – previous approximation
hessk_dsk – product between hessk and dsk
dskt_hessk_dsk – product between dsk^t, hessk and dsk
dyk – gradients difference between iterates
dyt_dsk – product between dyk^t and dsk^t
- static get_s_k_y_k(x_hist, x_grad_hist, iteration)¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
iteration – iteration number for which the pair must be generated
- get_x_grad_history(funcname, first_iter=0, last_iter=0, at_most_niter=- 1, func_index=None, normalize_design_space=False, design_space=None)¶
Get gradient history and design variables history of gradient evaluations.
- Parameters
funcname – function name
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = 0)
at_most_niter – maximum number of iterations to take (Default value = -1)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- static iterate_approximation(hessk, dsk, dyk, scaling=False)¶
BFGS iteration from step k to step k+1.
- Parameters
hessk – previous approximation
dsk – design variable difference between iterates
dyk – gradients difference between iterates
scaling – do scaling step
- Returns
updated approximation
- static iterate_inverse_approximation(h_mat, s_k, y_k, h_factor=None, b_mat=None, b_factor=None, factorize=False, scaling=False)¶
Inverse BFGS iteration.
- Parameters
h_mat – previous approximation
s_k – design variable difference between iterates
y_k – gradients difference between iterates
- Returns
updated inverse approximation
- static iterate_s_k_y_k(x_hist, x_grad_hist)¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
- static rebuild_history(x_corr, x_0, grad_corr, g_0)¶
Computes the history from the corrections.
- class gemseo.post.core.hessians.SR1Approx(history)[source]¶
Bases:
gemseo.post.core.hessians.HessianApproximationBuilds a Symmetric Rank One approximation from optimization history.
Constructor.
- Parameters
history – the optimization history
Attributes:
Methods:
build_approximation(funcname[, save_diag, …])Builds the hessian approximation B.
build_inverse_approximation(funcname[, …])Builds the inversed hessian approximation H.
compute_corrections(x_hist, x_grad_hist)Computes the corrections from the history.
compute_scaling(hessk, hessk_dsk, …)Compute scaling.
get_s_k_y_k(x_hist, x_grad_hist, iteration)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
get_x_grad_history(funcname[, first_iter, …])Get gradient history and design variables history of gradient evaluations.
iterate_approximation(b_mat, s_k, y_k[, scaling])SR1 iteration.
iterate_inverse_approximation(h_mat, s_k, y_k)Inverse BFGS iteration.
iterate_s_k_y_k(x_hist, x_grad_hist)Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
rebuild_history(x_corr, x_0, grad_corr, g_0)Computes the history from the corrections.
- EPSILON = 1e-08¶
- build_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, b_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, scaling=False, normalize_design_space=False, design_space=None)¶
Builds the hessian approximation B.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
b_mat0 – initial approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None) (Default value = False)
scaling – do scaling step
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the B matrix, its diagonal, and eventually the x and grad history pairs used to build B, if return_x_grad=True, otherwise, None and None are returned for args consistency
- build_inverse_approximation(funcname, save_diag=False, first_iter=0, last_iter=- 1, h_mat0=None, at_most_niter=- 1, return_x_grad=False, func_index=None, save_matrix=False, factorize=False, scaling=False, angle_tol=1e-05, step_tol=10000000000.0, normalize_design_space=False, design_space=None)¶
Builds the inversed hessian approximation H.
- Parameters
funcname – function name
save_diag – if True, returns the list of diagonal approximations (Default value = False)
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = -1)
h_mat0 – initial inverse approximation matrix (Default value = None)
at_most_niter – maximum number of iterations to take (Default value = -1)
return_x_grad – if True, also returns the last gradient and x (Default value = False)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- Returns
the H matrix, its diagonal, and eventually the x and grad history pairs used to build H, if return_x_grad=True, otherwise, None and None are returned for args consistency
- static compute_corrections(x_hist, x_grad_hist)¶
Computes the corrections from the history.
- static compute_scaling(hessk, hessk_dsk, dskt_hessk_dsk, dyk, dyt_dsk)¶
Compute scaling.
- Parameters
hessk – previous approximation
hessk_dsk – product between hessk and dsk
dskt_hessk_dsk – product between dsk^t, hessk and dsk
dyk – gradients difference between iterates
dyt_dsk – product between dyk^t and dsk^t
- static get_s_k_y_k(x_hist, x_grad_hist, iteration)¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
iteration – iteration number for which the pair must be generated
- get_x_grad_history(funcname, first_iter=0, last_iter=0, at_most_niter=- 1, func_index=None, normalize_design_space=False, design_space=None)¶
Get gradient history and design variables history of gradient evaluations.
- Parameters
funcname – function name
first_iter – first iteration after which the history is extracted (Default value = 0)
last_iter – last iteration before which the history is extracted (Default value = 0)
at_most_niter – maximum number of iterations to take (Default value = -1)
func_index – Default value = None)
normalize_design_space – if True, scale the values to work in a normalized design space (x between 0 and 1)
design_space – the design space used to scale all values mandatory if normalize_design_space==True
- static iterate_approximation(b_mat, s_k, y_k, scaling=False)[source]¶
SR1 iteration.
- Parameters
b_mat – previous approximation
s_k – design variable difference between iterates
y_k – gradients difference between iterates
scaling – do scaling step
- Returns
updated approximation
- static iterate_inverse_approximation(h_mat, s_k, y_k, h_factor=None, b_mat=None, b_factor=None, factorize=False, scaling=False)¶
Inverse BFGS iteration.
- Parameters
h_mat – previous approximation
s_k – design variable difference between iterates
y_k – gradients difference between iterates
- Returns
updated inverse approximation
- static iterate_s_k_y_k(x_hist, x_grad_hist)¶
Generate the s_k and y_k terms, respectively design variable difference and gradients difference between iterates.
- Parameters
x_hist – design variables history array
x_grad_hist – gradients history array
- static rebuild_history(x_corr, x_0, grad_corr, g_0)¶
Computes the history from the corrections.