https://github.com/relf/slsqp
SLSQP optimizer for Rust
https://github.com/relf/slsqp
constrained-optimization gradient-based-optimisation
Last synced: 9 months ago
JSON representation
SLSQP optimizer for Rust
- Host: GitHub
- URL: https://github.com/relf/slsqp
- Owner: relf
- License: mit
- Created: 2023-02-07T10:09:31.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-02T19:12:37.000Z (over 1 year ago)
- Last Synced: 2025-03-01T08:47:26.498Z (10 months ago)
- Topics: constrained-optimization, gradient-based-optimisation
- Language: Rust
- Homepage:
- Size: 236 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# slsqp - a pure Rust implementation
[](https://github.com/relf/slsqp/actions/workflows/tests.yml)
[](https://crates.io/crates/slsqp)
[](https://docs.rs/slsqp)
SLSQP is a sequential quadratic programming algorithm for nonlinearly constrained gradient-based optimization based on the implementation by Dieter Kraft and described in:
> Dieter Kraft, "A software package for sequential quadratic programming", Technical Report DFVLR-FB 88-28, Institut für Dynamik der Flugsysteme, Oberpfaffenhofen, July 1988.
> Dieter Kraft, "Algorithm 733: TOMP–Fortran modules for optimal control calculations," ACM Transactions on Mathematical Software, vol. 20, no. 3, pp. 262-281 (1994).
The Rust code was generated/adapted from the C code from the [NLopt](https://github.com/stevengj/nlopt) project (version 2.7.1).
The algorithme is available here as a `minimize` function.
An initial transpilation was done with [c2rust](https://github.com/immunant/c2rust) then the code was manually edited to make it work. The callback mechanism is inspired from the Rust binding of NLopt, namely [rust-nlopt](https://github.com/adwhit/rust-nlopt).
## Example
```bash
cargo run --example paraboloid
```
## Related projects
* [rust-nlopt](https://github.com/adwhit/rust-nlopt): the Rust binding of the [NLopt project](https://nlopt.readthedocs.io)
* [cobyla](https://github.com/relf/cobyla): a pure Rust implementation of the COBYLA algorithm.
## License
The project is released under MIT License.