基因算法
待做。
规划问题包括线性规划,整数规划和非线性规划三大类。
线性规划
线性规划的目标函数可以是求最大值,也可以是求最小值;约束条件的不等号可以是小于号,也可以是大于号。为了避免形式多样性带来的不变,Matlab 中规定线性规划的标准形式为
\[ \mathop{\min}\limits_{\mathbf{x}} \mathbf{c}^\text{T}\mathbf{x} \quad \text{s.t.}\quad \mathbf{Ax}\le\mathbf{b}, \] 其中,\(\mathbf{c}\) 和 \(\mathbf{x}\) 为 \(n\) 维列向量;\(\mathbf{b}\) 为 \(m\) 维列向量;\(\mathbf{A}\) 为 \(m\times n\) 矩阵。
对于线性规划:
\[\mathop{\max}\limits_{\mathbf{x}} \mathbf{c}^\text{T}\mathbf{x} \quad \text{s.t.}\quad \mathbf{Ax}\ge\mathbf{b},\]
Matlab 标准形式为
\[\mathop{\min}\limits_{\mathbf{x}}-\mathbf{c}^\text{T}\mathbf{x}\quad\text{s.t.}\quad-\mathbf{Ax}\le-\mathbf{b}.\]
Matlab
中线性规划的基本函数形式为linprog(c,A,b)
,返回值是向量
\(\mathbf{x}\)
的值。对于寻找如下形式的最小值问题:
\[\mathop{\min}\limits_{\mathbf{x}}f^\text{T}\mathbf{x}\quad\text{s.t.}\begin{cases}\mathbf{A}\cdot\mathbf{x}\le\mathbf{b}\\\mathbf{Aeq}\cdot\mathbf{x}=\mathbf{beq}\\\mathbf{lb}\le\mathbf{x}\le\mathbf{ub}\end{cases},\]
可通过
1 | x = linprog(f,A,b,Aeq,beq,lb,ub,options) |
求解。
非线性规划
非线性规划问题是目标函数或约束函数中包含非线性函数。Matlab
中非线性规划的基本函数形式为fmincon(fun,x0,A,b)
,返回值是向量
\(\mathbf{x}\)
的值。对于寻找如下形式的最小值问题:
\[ \mathop{\min}\limits_{\mathbf{x}}f(\mathbf{x})\quad\text{s.t.}\begin{cases}c(\mathbf{x})\le\mathbf{0}\\ceq(\mathbf{x})=\mathbf{0}\\\mathbf{A}\cdot\mathbf{x}\le\mathbf{b}\\\mathbf{Aeq}\cdot\mathbf{x}=\mathbf{beq}\\\mathbf{lb}\le\mathbf{x}\le\mathbf{ub}\end{cases}, \] 可通过
1 | x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) |
求解。