gemseo_mma / opt / core

Hide inherited members

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:

tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]

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]