Metadata-Version: 2.1
Name: nullspace-optimizer
Version: 1.2.1
Summary: Null space algorithm for nonlinear constrained optimization
Home-page: https://null-space-optimizer.readthedocs.io/en/latest/
Author: Florian Feppon
Author-email: florian.feppon@kuleuven.be
License: GNU GPL version 3
Keywords: nonlinear constrained optimization
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy (>=1.23.4)
Requires-Dist: scipy (>=1.9.3)
Requires-Dist: matplotlib (>=3.6.2)
Requires-Dist: cvxopt (>=1.3.0)
Requires-Dist: osqp (>=0.6.2)
Requires-Dist: sympy (>=1.3.0)

# Null Space Optimizer

`nullspace_optimizer` is a Python package implementing the null space
algorithm for nonlinear constrained optimization. It has been developped
in the context of topology optimization problems with the level-set and
the density method, but it can in principle be used for solving
arbitrary smooth nonlinear equality and inequality constrained
optimization problems of the form

```math 
\begin{aligned}
\begin{aligned}
    \min_{x\in \mathcal{X}}&  \quad J(x)\\
    \textrm{s.t.} & \left\{\begin{aligned}
 g_i(x)&=0, \text{ for all } 1\leqslant i\leqslant p,\\
 h_j(x)  &\leqslant  0, \text{ for all }1\leqslant j \leqslant q,\\ 
        \end{aligned}\right.
\end{aligned}
\end{aligned}   
```

![Optimization trajectories produced by the Null Space Optimizer for an
inequality constrained optimization problem with different
initialization.](docs/source/img/nullspace.png){.align-center width="400px"}
    
## Official documentation   
    
[Official documentation](https://null-space-optimizer.readthedocs.io/en/latest/index.html)

## Contribute and support

-   Issue tracker:
    <https://gitlab.com/florian.feppon/null-space-optimizer/-/issues>
-   Source code:
    <https://gitlab.com/florian.feppon/null-space-optimizer>

If I am not responding on the issue tracker, feel free to send me an
email to florian.feppon\[at\]kuleuven.be

## Citation

Please cite either of the following references when using this source:

> Feppon F., Allaire G. and Dapogny C. *Null space gradient flows for
> constrained optimization with applications to shape optimization.*
> 2020. ESAIM: COCV, 26 90
> [doi:10.1051/cocv/2020015](https://doi.org/10.1051/cocv/2020015)

> Feppon F. *Density based topology optimization with the Null Space
> Optimizer: a tutorial and a comparison* (2023). Submitted. HAL
> preprint
> [hal-04155507](https://hal.archives-ouvertes.fr/hal-04155507/document).

``` bibtex
@article{feppon2020optim,
   author = {{Feppon, F.} and {Allaire, G.} and {Dapogny, C.}},
   doi = {10.1051/cocv/2020015},
   journal = {ESAIM: COCV},
   pages = {90},
   title = {Null space gradient flows for constrained optimization with applications to shape optimization},
   url = {https://doi.org/10.1051/cocv/2020015},
   volume = 26,
   year = 2020
}
```

``` bibtex
@unpublished{feppon:hal-04155507,
   TITLE = {{Density based topology optimization  with the Null Space Optimizer: a tutorial and a comparison}},
   AUTHOR = {Feppon, F},
   URL = {https://hal.science/hal-04155507},
   NOTE = {working paper or preprint},
   YEAR = {2023},
   MONTH = Jul,
   KEYWORDS = {Nonlinear constrained optimization ; density based topology optimization ; Null space gradient flows ; Python},
   PDF = {https://hal.science/hal-04155507/file/bound_constraints%20%281%29.pdf},
   HAL_ID = {hal-04155507},
   HAL_VERSION = {v1},
}
```

## Licence

The Null Space Optimizer is a free software distributed under the terms
of the GNU General Public Licence
[GPL3](https://www.gnu.org/licenses/gpl-3.0.html).
