﻿功能:非线性规划求解

格式:
[Minf, xv, er] = nlinProg(express, constraint, var, varInital, varMax, varMin, varType)
[Minf, xv, er] = nlinProg(express, constraint, var, varInital, varMax, varMin)
[Minf, xv, er] = nlinProg(express, constraint, var, varInital, varMax)
[Minf, xv, er] = nlinProg(express, constraint, var, varInital)
[Minf, xv, er] = nlinProg(express, constraint, var)

express   :目标函数表达式, 可以是直接输入的表达式也可以是符号变量表示的表达式, 表示求表达式的最小值
constraint:字符串向量, 里面存储约束条件, 每个约束条件以逗号分隔, 约束表达式里可以使用">", "<", ">=", "<=", "="约束
var       :符号变量.存储变量的名称, 每个名称以逗号分隔
varInital :数据或者矩阵变量, 其对应var的初始值。
varMax    :数据或者矩阵变量, 其对应var的变量上限, 默认10000
varMin    :数据或者矩阵变量, 其对应var的变量下限, 默认-10000
varType   :数据或者矩阵变量, 其对应var的变量数据类型, 如果非0表示对应变量为整数, 默认为0(浮点类型)。

Minf:求得的最小值f
xv  :求得最小值时的x值
er  :返回的约束误差,一般这个值越接近0越好

说明:
本函数内部调用梯度优化模块进行求解.

例子:
//已知有浮点数变量x1,x2它们满足约束: x1 - x2^2 >= 16, log(x1) + x2 < 4, 现在求在满足约束情况下表达式 x1^2 + x2^3 - 5 的最小值

f = "x1^2 + x2^3 - 5";
g = "x1 - x2^2 >= 16, log(x1) + x2 < 4";
x = "x1,x2";
[mf, vx, er] = nlinProg(f, g, x)//回车得到如下结果,即x1 = 15.9999999362524, x2 = 4.7743904373E-09可得到满足约束时表达式的最小值250.999997960078
mf =
[ 250.999997960078 ]
vx =
[ 15.9999999362524
  4.7743904373E-09 ]
er =
[ 1.0200020028E-06 ]