mma module¶
GCMMA-MMA-Python. This file is part of GCMMA-MMA-Python.
GCMMA-MMA-Python is licensed under the terms of GNU General Public License as published by the Free Software Foundation. For more information and the LICENSE file, see ` https://github.com/ arjendeetman/GCMMA-MMA-Python <https://github.com/arjendeetman/GCMMA-MMA-Python>`_ . The original work is written by Krister Svanberg in MATLAB. This is the python version of the code written Arjen Deetman. version 09-11-2019.
MMA optimizer.
Original work written by Krister Svanberg in Matlab. This is the python version of the code written by Arjen Deetman.
- gemseo_mma.opt.core.mma.compute_kkt_residual_on_local_approximation(m, n, x, y, z, lam, xsi, eta, mu, zet, s, xmin, xmax, df0dx, fval, dfdx, a0, a, c, d)[source]¶
KKT residual computation.
The left hand sides of the KKT conditions for the following nonlinear programming problem are calculated.
Minimize f_0(x) + a_0*z + sum(c_i*y_i + 0.5*d_i*(y_i)^2) subject to f_i(x) - a_i*z - y_i <= 0, i = 1,…,m
xmax_j <= x_j <= xmin_j, j = 1,…,n z >= 0, y_i >= 0, i = 1,…,m
- Parameters:
m (int) – The number of general constraints.
n (int) – The number of variables x_j.
x (ndarray) – The current values of the n variables x_j.
y (ndarray) – The current values of the m variables y_i.
z (ndarray) – The current value of the single variable z.
lam (ndarray) – The Lagrange multipliers for the m general constraints.
xsi (ndarray) – The Lagrange multipliers for the n constraints xmin_j - x_j <= 0.
eta (ndarray) – The Lagrange multipliers for the n constraints x_j - xmax_j <= 0.
mu (ndarray) – The Lagrange multipliers for the m constraints -y_i <= 0.
zet (ndarray) – The Lagrange multiplier for the single constraint -z <= 0.
s (ndarray) – The Slack variables for the m general constraints.
xmin (ndarray) – The Lower bounds for the variables x_j.
xmax (ndarray) – The Upper bounds for the variables x_j.
df0dx (ndarray) – The vector with the derivatives of the objective function f_0 with respect to the variables x_j, calculated at x.
fval (ndarray) – The vector with the values of the constraint functions f_i, calculated
x. (at) –
dfdx (ndarray) – The (m x n)-matrix with the derivatives of the constraint functions f_i with respect to the variables x_j, calculated at x. dfdx(i,j) = the derivative of f_i with respect to x_j.
a0 (float) – The constants a_0 in the term a_0*z.
a (ndarray) – The vector with the constants a_i in the terms a_i*z.
c (ndarray) – The vector with the constants c_i in the terms c_i*y_i.
d (ndarray) – The vector with the constants d_i in the terms 0.5*d_i*(y_i)^2.
- Returns:
The vector residual, its norm and its maximum.
- Return type:
- gemseo_mma.opt.core.mma.solve_mma_local_approximation_problem(m, n, iter, xval, xmin, xmax, xold1, xold2, f0val, df0dx, fval, dfdx, low, upp, a0, a, c, d, move, external_move_limit=10.0, internal_limit=0.01, asyinit=0.5, asyincr=1.2, asydecr=0.7)[source]¶
MMA sub function.
This function mmasub performs one MMA-iteration, aimed at solving the nonlinear programming problem:
Minimize f_0(x) + a_0*z + sum( c_i*y_i + 0.5*d_i*(y_i)^2 ) subject to f_i(x) - a_i*z - y_i <= 0, i = 1,…,m
xmin_j <= x_j <= xmax_j, j = 1,…,n z >= 0, y_i >= 0, i = 1,…,m
- Parameters:
m (int) – The number of general constraints.
n (int) – The number of variables x_j.
iter (int) – The current iteration number ( =1 the first time mmasub is called).
xval (ndarray) – The column vector with the current values of the variables x_j.
xmin (ndarray) – The column vector with the lower bounds for the variables x_j.
xmax (ndarray) – The column vector with the upper bounds for the variables x_j.
xold1 (ndarray) – The value of xval, one iteration ago (provided that iter>1).
xold2 (ndarray) – The value of xval, two iterations ago (provided that iter>2).
f0val (ndarray) – The value of the objective function f_0 at xval.
df0dx (ndarray) – The column vector with the derivatives of the objective function f_0 with respect to the variables x_j, calculated at xval.
fval (ndarray) – The column vector with the values of the constraint functions f_i, calculated at xval.
dfdx (ndarray) – The (m x n)-matrix with the derivatives of the constraint functions f_i with respect to the variables x_j, calculated at xval.
low (ndarray) – The column vector with the lower asymptotes from the previous iteration (provided that iter>1).
upp (ndarray) – The column vector with the upper asymptotes from the previous iteration (provided that iter>1).
a0 (float) – The constants a_0 in the term a_0*z.
a (ndarray) – The column vector with the constants a_i in the terms a_i*z.
c (ndarray) – The column vector with the constants c_i in the terms c_i*y_i.
d (ndarray) – The column vector with the constants d_i in the terms 0.5*d_i*(y_i)^2.
move (float) – The maximum optimization step.
external_move_limit (float) –
The maximum distance of the asymptotes from the current design variable value.
By default it is set to 10.0.
internal_limit (float) –
The minimum distance of the asymptotes from the current design variable value.
By default it is set to 0.01.
asyinit (float) –
The initial asymptotes distance from the current design variable value.
By default it is set to 0.5.
asyincr (float) –
The incremental factor for successful iterations.
By default it is set to 1.2.
asydecr (float) –
The decremental factor for unsuccessful iterations.
By default it is set to 0.7.
- Returns:
- xmma = The Column vector with the optimal values of the variables x_j
in the current MMA subproblem.
- ymma = The Column vector with the optimal values of the variables y_i
in the current MMA subproblem.
- zmma = The Scalar with the optimal value of the variable z
in the current MMA subproblem.
lam = The Lagrange multipliers for the m general MMA constraints. xsi = The Lagrange multipliers for the n constraints alfa_j - x_j <= 0. eta = The Lagrange multipliers for the n constraints x_j - beta_j <= 0. mu = The Lagrange multipliers for the m constraints -y_i <= 0. zet = The Lagrange multiplier for the single constraint -z <= 0. s = The Slack variables for the m general MMA constraints. low = The Column vector with the lower asymptotes, calculated and used
in the current MMA subproblem.
- upp = The Column vector with the upper asymptotes, calculated and used
in the current MMA subproblem.
- Return type:
tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray]