【数学建模】常用基本模型总结

线性规划(Linear Programming)

  • 运筹学的一个重要分支——数学规划。线性规划是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
  • 概念:可行解、最优解、可行域。
  • Matlab中求解线性规划的命令为如下,x返回决策向量的取值;fval返回目标函数的最优值;f为价值向量。
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)
  • 很多看起来不是线性规划的问题,也可以通过变换转化为线性规划的问题来解决。
    比如对于以下数学规划问题:
    min ⁡ ∣ x 1 ∣ + ∣ x 2 ∣ + ⋯ + ∣ x n ∣  s.t.  A x ⩽ b ∘ \begin{array}{c} \min \left|x_{1}\right|+\left|x_{2}\right|+\cdots+\left|x_{n}\right| \\ \text { s.t. } \boldsymbol{A} \boldsymbol{x} \leqslant \boldsymbol{b}_{\circ} \end{array} minx1+x2++xn s.t. Axb
    只要注意到事实:
    对任意的 x i x_i xi,存在 u i , v i ≥ 0 u_i,v_i \ge 0 ui,vi0 满足 x i = u i − v i , ∣ x i ∣ = u i + v i x_{i}=u_{i}-v_{i},\left|x_{i}\right|=u_{i}+v_{i } xi=uivi,xi=ui+vi
    所以取 u i = x i + ∣ x i ∣ 2 , v i = ∣ x i ∣ − x i 2 u_{i}=\frac{x_{i}+\left|x_{i}\right|}{2}, v_{i}=\frac{\left|x_{i}\right|-x_{i}}{2} ui=2xi+xi,vi=2xixi,记 u = [ u 1 , ⋯   , u n ] T , v = [ v 1 , ⋯   , v n ] T \boldsymbol{u}=\left[u_{1}, \cdots, u_{n}\right]^{\mathrm{T}}, \boldsymbol{v}=\left[v_{1}, \cdots, v_{n}\right]^{\mathrm{T}} u=[u1,,un]T,v=[v1,,vn]T
    从而把模型改写成:
    min ⁡ ∑ i = 1 n ( u i + v i ) ,  s.t.  { [ A , − A ] [ u v ] ⩽ b , u , v ⩾ 0 。 \begin{array}{ll} \min & \sum_{i=1}^{n}\left(u_{i}+v_{i}\right), \\ \text { s.t. } \quad & \left\{\begin{array}{l} {[\boldsymbol{A},-\boldsymbol{A}]\left[\begin{array}{l} \boldsymbol{u} \\ \boldsymbol{v} \end{array}\right] \leqslant \boldsymbol{b},} \\ \boldsymbol{u}, \boldsymbol{v} \geqslant 0 。 \end{array}\right. \end{array} min s.t. i=1n(ui+vi), [A,A][uv]b,u,v0

你可能感兴趣的:(算法,matlab,机器学习)