5.8.1. 非线性规划建模¶
一般性的非线性规划(Non-linear Programming,NLP)问题可以用以下数学形式表示:
- 其中
\(x \in \mathbb{R}^{n}\) 是决策变量,
\(l^c \in \mathbb{R}^{n}\) 和 \(u^c \in \mathbb{R}^{n}\) 分别为 \(x\) 的下界和上界,
\(f: \mathbb{R}^{n} \to \mathbb{R}\) 是目标函数,
\(c_i: \mathbb{R}^{n} \to \mathbb{R}\) 分别是第 \(i\) 条约束左手边的函数,
\(u_i \in \mathbb{R}\) 分别为是第 \(i\) 条约束的下界和上界。
备注
非线性规划问题中的目标函数 \(f\) 与约束 \(c_i\) 一般被假定是连续光滑函数。尽管如此,一些包含不连续导数函数的问题 MindOpt 也可以成功求解。
MindOpt APL 与 MindOpt 目前支持由以下算术操作符或数学函数所复合而成的非线性问题的建模与求解。
5.8.1.1. 支持的数学操作符¶
数学形式
解释
MAPL中的表示
\(+\) 或 \(-\)
加减法运算符/正负号
+或-\(*\) 或 \(/\)
乘除法运算符
*或/\(x^a\)
幂次运算符(a是常量)
^或**\(\sum\)
求和运算符
sum
5.8.1.2. 支持的非线性数学函数¶
数学形式
解释
MAPL中的表示
\(\sin(x)\)
正弦函数
sin\(\cos(x)\)
余弦函数
cos\(\tan(x)\)
正切函数
tan\(\arcsin(x)\)
反正弦函数
asin\(\arccos(x)\)
反余弦函数
acos\(\arctan(x)\)
反正切函数
atan\(\sinh(x)\)
双曲正弦函数
sinh\(\cosh(x)\)
双曲余弦函数
cosh\(\tanh(x)\)
双曲正切函数
tanh\(\text{arcsinh}(x)\)
反双曲正弦函数
asinh\(\text{arccosh}(x)\)
反双曲余弦函数
acosh\(\text{arctanh}(x)\)
反双曲正切函数
atanh\(\exp(x)\)
指数函数
exp\(\ln(x)\)
e为底的对数函数
log或ln\(\lg(x)\)
10为底的对数函数
log10\(\log_2(x)\)
2为底的对数函数
log2\(\sqrt x\)
开平方函数
sqrt\(|x|\)
绝对值函数
abs
使用 MindOpt APL 及 MindOpt 的步骤为:
利用 MindOpt APL 创建优化模型;
输入优化模型到 MindOpt 中,并设置算法参数;
MindOpt 求解优化问题并获取解。
5.8.1.3. 非线性规划问题示例¶
在下文中,我们将考虑下面的非线性约束规划问题,这是一个简单的带正则化约束的逻辑回归:
我们将展示两种方式调用 MindOpt 求解这个优化问题,分别基于 MindOpt APL 及其Python扩展包 MaplPy 来实现。