1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
// Copyright 2018 Paul Scott // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(test)] // enable benchmarking //! Modelling interface to non-linear constrained optimisation. //! //! This module exposes more than the typical user will want to use (so that //! other crates such as the `descent_ipopt` crate can interface to it). The //! most relevant parts of this module are: //! //! - [Model](model/trait.Model.html) trait that solvers implement. //! - [Var](expr/struct.Var.html) type that represents a model variable. //! - [Par](expr/struct.Var.html) type that represents a model parameter. //! - [Expression](expr/enum.Expression.html) most general type of expression for //! modelling constraints and objectives. //! - [Solution](model/struct.Solution.html) type that stores and enables access //! to a solution. //! //! If you have nightly rust available, then the "fixed" form expressions that //! have their first and second derivatives generated by a procedural macro is //! the most performant approach to writing expressions. See the //! [fixed](expr/fixed/index.html) sub-module. //! //! For greater runtime flexibility in constructing of expressions, use the //! "dynamic" expressions instead in the [dynam](expr/dynam/index.html) //! sub-module. //! //! Both types of expression can be used with the same model but not in the same //! objective value or constriant. //! //! To get started writing and solving non-linear programs with IPOPT, go //! straight to the examples in the `descent_ipopt` crate. pub mod expr; pub mod model;