This provides the SOLNP optimizaiton Algorithm.

# pysolnp - Nonlinear optimization with the augmented Lagrange method

## Description

SOLNP solves the general nonlinear optimization problem on the form:

    minimize f(x)
subject to
g(x) = e_x
l_h <= h(x) <= u_h
l_x <   x   < u_X


where f(x), g(x) and h(x) are smooth functions.

## Compatibility

Precompiled Wheels are available for CPython:

• Windows: Python 3.6+
• Linux: Python 3.6+
• Mac OS: Python 3.6+

For other systems, or to have BLAS and LAPACK support, please build the wheels manually. Note: For best results, building it from source is recommended, as BLAS and LAPACK will make a difference.

## Installation

Simply install the package through PyPi with: pip install pysolnp

When compiling from source code you will need CMake.
See the README for the C++ code for details.

## Usage

Below is the Box example, for the complete example see /python_examples/example_box.py.

import pysolnp

def f_objective_function(x):
return -1 * x[0] * x[1] * x[2]

def g_equality_constraint_function(x):
return [4 * x[0] * x[1] + 2 * x[1] * x[2] + 2 * x[2] * x[0]]

x_starting_point = [1.1, 1.1, 9.0]
x_l = [1.0, 1.0, 1.0]
x_u = [10.0, 10.0, 10.0]
e_x = [100]

result = pysolnp.solve(
obj_func=f_objective_function,
par_start_value=x_starting_point,
par_lower_limit=x_l,
par_upper_limit=x_u,
eq_func=g_equality_constraint_function,
eq_values=e_x)

result.solve_value
result.optimum
result.callbacks
result.converged


Output:

>>> result.solve_value
-48.11252206814995
>>> result.optimum
[2.8867750707815447, 2.8867750713194273, 5.773407748939196]
>>> result.callbacks
118
>>> result.converged
True


## Parameters

The basic signature is:

solve(obj_func: function, par_start_value: List, par_lower_limit: object = None, par_upper_limit: object = None, eq_func: object = None, eq_values: object = None, ineq_func: object = None, ineq_lower_bounds: object = None, ineq_upper_bounds: object = None, rho: float = 1.0, max_major_iter: int = 10, max_minor_iter: int = 10, delta: float = 1e-05, tolerance: float = 0.0001, debug: bool = False) -> pysolnp.Result


Inputs:

Parameter Type Default value* Description
obj_func Callable[List, float] - The objective function f(x) to minimize.
par_start_value List - The starting parameter x_0.
par_lower_limit List None The parameter lower limit x_l.
par_upper_limit List None The parameter upper limit x_u.
eq_func Callable[List, float] None The equality constraint function h(x).
eq_values List None The equality constraint values e_x.
ineq_func Callable[List, float] None The inequality constraint function g(x).
ineq_lower_bounds List None The inequality constraint lower limit g_l.
ineq_upper_bounds List None The inequality constraint upper limit g_l.
rho float 1.0 Penalty weighting scalar for infeasability in the augmented objective function.**
max_major_iter int 400 Maximum number of outer iterations.
max_minor_iter int 800 Maximum number of inner iterations.
delta float 1e-07 Step-size for forward differentiation.
tolerance float 1e-08 Relative tolerance on optimality.
debug bool False If set to true some debug output will be printed.

*Defaults for configuration parameters are based on the defaults for Rsolnp.
**Higher values means the solution will bring the solution into the feasible region with higher weight. Very high values might lead to numerical ill conditioning or slow down convergence.

Output: The function returns the pysolnp.Result with the below properties.

Property Type Description
solve_value float The value of the objective function at optimum f(x*).
optimum List[float] A list of parameters for the optimum x*.
callbacks int Number of callbacks done to find this optimum.
converged boolean Indicates if the algorithm converged or not.
hessian_matrix List[List[float]] The final Hessian Matrix used by pysolnp.

## Acknowledgments

• Yinyu Ye - Publisher and mastermind behind the original SOLNP algorithm, Original Sources
• Alexios Ghalanos and Stefan Theussl - The people behind RSOLNP, Github repository
• Davis King - The mastermind behind Dlib, check out his blog! Blog

## Project details

### Source Distribution

pysolnp-2022.3.13.tar.gz (11.7 MB view hashes)

Uploaded source

### Built Distributions

pysolnp-2022.3.13-cp310-cp310-win_amd64.whl (487.9 kB view hashes)

Uploaded cp310

pysolnp-2022.3.13-cp310-cp310-win32.whl (465.4 kB view hashes)

Uploaded cp310

pysolnp-2022.3.13-cp310-cp310-musllinux_1_1_x86_64.whl (761.0 kB view hashes)

Uploaded cp310

pysolnp-2022.3.13-cp310-cp310-musllinux_1_1_i686.whl (806.3 kB view hashes)

Uploaded cp310

pysolnp-2022.3.13-cp310-cp310-macosx_10_9_x86_64.whl (1.1 MB view hashes)

Uploaded cp310

pysolnp-2022.3.13-cp39-cp39-win_amd64.whl (484.2 kB view hashes)

Uploaded cp39

pysolnp-2022.3.13-cp39-cp39-win32.whl (461.6 kB view hashes)

Uploaded cp39

pysolnp-2022.3.13-cp39-cp39-musllinux_1_1_x86_64.whl (757.2 kB view hashes)

Uploaded cp39

pysolnp-2022.3.13-cp39-cp39-musllinux_1_1_i686.whl (802.4 kB view hashes)

Uploaded cp39

pysolnp-2022.3.13-cp39-cp39-macosx_10_9_x86_64.whl (1.1 MB view hashes)

Uploaded cp39

pysolnp-2022.3.13-cp38-cp38-win_amd64.whl (480.3 kB view hashes)

Uploaded cp38

pysolnp-2022.3.13-cp38-cp38-win32.whl (457.9 kB view hashes)

Uploaded cp38

pysolnp-2022.3.13-cp38-cp38-musllinux_1_1_x86_64.whl (753.0 kB view hashes)

Uploaded cp38

pysolnp-2022.3.13-cp38-cp38-musllinux_1_1_i686.whl (798.5 kB view hashes)

Uploaded cp38

pysolnp-2022.3.13-cp38-cp38-macosx_10_9_x86_64.whl (1.1 MB view hashes)

Uploaded cp38

pysolnp-2022.3.13-cp37-cp37m-win_amd64.whl (476.8 kB view hashes)

Uploaded cp37

pysolnp-2022.3.13-cp37-cp37m-win32.whl (455.4 kB view hashes)

Uploaded cp37

pysolnp-2022.3.13-cp37-cp37m-musllinux_1_1_x86_64.whl (750.4 kB view hashes)

Uploaded cp37

pysolnp-2022.3.13-cp37-cp37m-musllinux_1_1_i686.whl (796.9 kB view hashes)

Uploaded cp37

pysolnp-2022.3.13-cp37-cp37m-macosx_10_9_x86_64.whl (1.1 MB view hashes)

Uploaded cp37

pysolnp-2022.3.13-cp36-cp36m-win_amd64.whl (473.1 kB view hashes)

Uploaded cp36

pysolnp-2022.3.13-cp36-cp36m-win32.whl (451.6 kB view hashes)

Uploaded cp36

pysolnp-2022.3.13-cp36-cp36m-musllinux_1_1_x86_64.whl (746.3 kB view hashes)

Uploaded cp36

pysolnp-2022.3.13-cp36-cp36m-musllinux_1_1_i686.whl (792.7 kB view hashes)

Uploaded cp36

pysolnp-2022.3.13-cp36-cp36m-macosx_10_9_x86_64.whl (1.1 MB view hashes)

Uploaded cp36