Extreme Optimization™: Complexity made simple.

Math and Statistics
Libraries for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Partners
    • Contact us
Introduction
Deployment Guide
Nuget packages
Configuration
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Data Analysis Library User's GuideData Analysis Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand Data Access Library User's GuideData Access Library User's Guide
Expand ReferenceReference
  • Extreme Optimization
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Nuget packages
    • Configuration
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Data Access Library User's Guide
    • Reference
  • Reference
    • Extreme
    • Extreme.Collections
    • Extreme.Data
    • Extreme.Data.Json
    • Extreme.Data.Matlab
    • Extreme.Data.R
    • Extreme.Data.Stata
    • Extreme.Data.Text
    • Extreme.DataAnalysis
    • Extreme.DataAnalysis.Linq
    • Extreme.DataAnalysis.Models
    • Extreme.Mathematics
    • Extreme.Mathematics.Algorithms
    • Extreme.Mathematics.Calculus
    • Extreme.Mathematics.Calculus.OrdinaryDifferentialEquations
    • Extreme.Mathematics.Curves
    • Extreme.Mathematics.Curves.Nonlinear
    • Extreme.Mathematics.Distributed
    • Extreme.Mathematics.EquationSolvers
    • Extreme.Mathematics.Generic
    • Extreme.Mathematics.LinearAlgebra
    • Extreme.Mathematics.LinearAlgebra.Implementation
    • Extreme.Mathematics.LinearAlgebra.IterativeSolvers
    • Extreme.Mathematics.LinearAlgebra.IterativeSolvers.Preconditioners
    • Extreme.Mathematics.Optimization
    • Extreme.Mathematics.Optimization.LineSearches
    • Extreme.Mathematics.Random
    • Extreme.Mathematics.SignalProcessing
    • Extreme.Providers
    • Extreme.Providers.InteropServices
    • Extreme.Statistics
    • Extreme.Statistics.Distributions
    • Extreme.Statistics.Multivariate
    • Extreme.Statistics.Tests
    • Extreme.Statistics.TimeSeriesAnalysis
  • Extreme.Mathematics.Optimization
    • BoundedQuasiNewtonOptimizer Class
    • BrentDerivativeOptimizer Class
    • BrentOptimizer Class
    • ConjugateGradientMethod Enumeration
    • ConjugateGradientOptimizer Class
    • Constraint Class
    • ConstraintCollection Class
    • ConstraintType Enumeration
    • DecisionVariable Class
    • DecisionVariableCollection Class
    • DirectionalOptimizer Class
    • ExtremumType Enumeration
    • GoldenSectionOptimizer Class
    • LeastSquaresOptimizer Class
    • LevenbergMarquardtOptimizer Class
    • LimitedMemoryBfgsOptimizer Class
    • LinearConstraint Class
    • LinearProgram Class
    • LinearProgramConstraint Class
    • LinearProgramSolver Class
    • LinearProgramVariable Class
    • MpsReader Class
    • MultidimensionalOptimizer Class
    • NelderMeadOptimizer Class
    • NonlinearConstraint Class
    • NonlinearProgram Class
    • OneDimensionalOptimizer Class
    • OptimizationModel Class
    • OptimizationModelEntity Class
    • OptimizationModelSolver(T) Class
    • OptimizationModelStatus Enumeration
    • OptimizationSolutionReport Class
    • PowellOptimizer Class
    • QuadraticProgram Class
    • QuasiNewtonMethod Enumeration
    • QuasiNewtonOptimizer Class
    • TrustRegionReflectiveOptimizer Class
  • NonlinearProgram Class
    • NonlinearProgram Constructors
    • Properties
    • Methods

NonlinearProgram Class

Extreme Optimization Numerical Libraries for .NET Professional
Represents a nonlinear programming problem.
Inheritance Hierarchy

SystemObject
  Extreme.Mathematics.OptimizationOptimizationModel
    Extreme.Mathematics.OptimizationNonlinearProgram

Namespace:  Extreme.Mathematics.Optimization
Assembly:  Extreme.Numerics (in Extreme.Numerics.dll) Version: 8.1.1
Syntax

C#
VB
C++
F#
Copy
public class NonlinearProgram : OptimizationModel
Public Class NonlinearProgram
	Inherits OptimizationModel
public ref class NonlinearProgram : public OptimizationModel
type NonlinearProgram =  
    class
        inherit OptimizationModel
    end

The NonlinearProgram type exposes the following members.

Constructors

  NameDescription
Public methodNonlinearProgram
Constructs a new nonlinear program.
Public methodNonlinearProgram(IEnumerableString)
Constructs a new nonlinear program with variables of the specified names.
Public methodNonlinearProgram(Int32)
Constructs a new nonlinear program with the specified number of variables.
Public methodNonlinearProgram(FuncVectorDouble, Double, FuncVectorDouble, VectorDouble, VectorDouble, Int32)
Constructs a new nonlinear program without defining any linear or nonlinear constraints.
Public methodNonlinearProgram(FuncVectorDouble, Double, FuncVectorDouble, VectorDouble, VectorDouble, MatrixDouble, VectorDouble, Int32)
Constructs a new nonlinear program with linear constraints in standard form.
Public methodNonlinearProgram(FuncVectorDouble, Double, FuncVectorDouble, VectorDouble, VectorDouble, MatrixDouble, VectorDouble, VectorDouble, VectorDouble, VectorDouble)
Constructs a new nonlinear program with linear constraints.
Top
Properties

  NameDescription
Public propertyConstraints
Gets the collection of constraints for this OptimizationModel.
(Inherited from OptimizationModel.)
Public propertyExtremumType
Gets or sets whether a minimum or a maximum should be computed.
(Inherited from OptimizationModel.)
Public propertyInitialGuess
Gets or sets an initial guess for the solution of the nonlinear program.
Public propertyName
Gets or sets the name of the model.
(Inherited from OptimizationModel.)
Public propertyObjectiveAndGradient
Gets or sets the gradient of the objective function of the nonlinear program.
Public propertyObjectiveFunction
Gets or sets the objective function of the nonlinear program.
Public propertyObjectiveGradient
Gets or sets the gradient of the objective function of the nonlinear program.
Public propertyOptimalValue
Gets the extreme value of the cost function.
(Inherited from OptimizationModel.)
Public propertySolutionReport
Gets an object that contains information about the solution of the model.
(Inherited from OptimizationModel.)
Public propertySolver
Gets the object used to solve the nonlinear program.
Public propertyStatus
Gets the status of the optimization model's solution.
(Inherited from OptimizationModel.)
Public propertySymbolicObjectiveFunction
Gets or sets the expression that evaluates the objective function.
Public propertyVariables
Gets the collection of variables for this OptimizationModel.
(Inherited from OptimizationModel.)
Top
Methods

  NameDescription
Public methodAddBinaryVariable
Adds a binary variable to the collection.
(Inherited from OptimizationModel.)
Public methodAddIntegerVariable(String)
Adds an integer variable to the collection.
(Inherited from OptimizationModel.)
Public methodAddIntegerVariable(String, Int32, Int32)
Adds a binary variable to the collection.
(Inherited from OptimizationModel.)
Public methodAddLinearConstraint(String, ConstraintType, Double)
Adds a linear constraint to the optimization model.
(Inherited from OptimizationModel.)
Public methodAddLinearConstraint(String, Double, Double)
Adds a linear constraint to the optimization model.
(Inherited from OptimizationModel.)
Public methodAddLinearConstraint(IListDecisionVariable, IListDouble, ConstraintType, Double)
Adds a linear constraint to the optimization model.
(Inherited from OptimizationModel.)
Public methodAddLinearConstraint(String, IListDouble, ConstraintType, Double)
Adds a linear constraint to the optimization model.
(Inherited from OptimizationModel.)
Public methodAddLinearConstraint(String, IListDouble, Double, Double)
Adds a linear constraint to the optimization model.
(Inherited from OptimizationModel.)
Public methodAddLinearConstraint(String, IListDecisionVariable, IListDouble, ConstraintType, Double)
Adds a linear constraint to the optimization model.
(Inherited from OptimizationModel.)
Public methodAddNonlinearConstraint(FuncVectorDouble, Double, ConstraintType, Double)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(FuncVectorDouble, Double, Double, Double)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(FuncVectorDouble, Double, ConstraintType, Double, FuncVectorDouble, VectorDouble, VectorDouble)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(FuncVectorDouble, Double, Double, Double, FuncVectorDouble, VectorDouble, VectorDouble)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(String, FuncVectorDouble, Double, ConstraintType, Double)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(String, FuncVectorDouble, Double, Double, Double)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(String, FuncVectorDouble, Double, ConstraintType, Double, FuncVectorDouble, VectorDouble, VectorDouble)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddNonlinearConstraint(String, FuncVectorDouble, Double, Double, Double, FuncVectorDouble, VectorDouble, VectorDouble)
Adds a nonlinear constraint to the nonlinear program.
Public methodAddSymbolicConstraint(ExpressionFuncVectorDouble, Double, ConstraintType, Double)
Adds a constraint that is defined by an expression to the nonlinear program.
Public methodAddSymbolicConstraint(ExpressionFuncVectorDouble, Double, Double, Double)
Adds a constraint that is defined by an expression to the nonlinear program.
Public methodAddSymbolicConstraint(String, ExpressionFuncVectorDouble, Double, ConstraintType, Double)
Adds a constraint that is defined by an expression to the nonlinear program.
Public methodAddSymbolicConstraint(String, ExpressionFuncVectorDouble, Double, Double, Double)
Adds a constraint that is defined by an expression to the nonlinear program.
Public methodAddVariable(String)
Adds a variable to the collection.
(Inherited from OptimizationModel.)
Public methodAddVariable(String, Double, Double)
Adds a variable to the collection.
(Inherited from OptimizationModel.)
Protected methodCreateLinearConstraints(MatrixDouble, VectorDouble, Int32)
Creates linear constraints based on the specified coefficients.
(Inherited from OptimizationModel.)
Protected methodCreateLinearConstraints(VectorDouble, MatrixDouble, VectorDouble)
Creates linear constraints based on the specified coefficients and bounds.
(Inherited from OptimizationModel.)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetSolution
Gets the solution to the optimization model.
(Inherited from OptimizationModel.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Protected methodOnAddConstraint
Notifies the optimization model that a constraint has been added.
(Inherited from OptimizationModel.)
Protected methodOnAddVariable
Notifies the optimization model that a variable has been added.
(Inherited from OptimizationModel.)
Protected methodOnRemoveAllConstraints
Notifies the optimization model that all constraints has been removed.
(Inherited from OptimizationModel.)
Protected methodOnRemoveAllVariables
Notifies the optimization model that all variables has been removed.
(Inherited from OptimizationModel.)
Protected methodOnRemoveConstraint
Notifies the optimization model that a constraint has been removed.
(Inherited from OptimizationModel.)
Protected methodOnRemoveVariable
Notifies the optimization model that a variable has been removed.
(Inherited from OptimizationModel.)
Public methodSolve
Solves the model and returns the solution.
(Inherited from OptimizationModel.)
Protected methodSolveModel
Solves the nonlinear program and returns the primal solution.
(Overrides OptimizationModelSolveModel.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Remarks

Use the NonlinearProgram class to represent an optimization problem with a nonlinear objective function that may have both linear and nonlinear constraints.

A nonlinear program has variables and constraints. They are made available through the Variables and Constraints properties. These collections are indexed by name and by position.

There are two ways to define a nonlinear program. You can supply the linear constraints of the nonlinear program in matrix form. You can also build the nonlinear program entirely from scratch using the AddVariable(String, Double) and AddLinearConstraint(String, Double, Double) methods. The ExtremumType property determines whether a maximum or a minimum is requested.

The Solve method solves the nonlinear program using a sequential quadratic programming algorithm. Note that this operation can take a long time for large problems or difficult problems. Small problems are usually solved within a fraction of a second. The Status property returns a OptimizationModelStatus value that indicates the result of the calculation. A value of Optimal indicates an optimal solution was found.

The Solve method returns a Vector containing the optimal values for the variables. The values of the variables are also avaialble through the Value property of the variables.

Once a solution has been computed, the OptimalValue property returns the optimal value.

See Also

Reference

Extreme.Mathematics.Optimization Namespace

Copyright (c) 2004-2021 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2021, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.