Skip to main content

线性规划

概念

线性体现在约束条件和目标函数都是线性的 规划问题一般为优化问题,指针对于某一个问题而言,求得该问题的最值(max/min\max/\min),比如像分配有限资源这种,有一定限制的问题。优化问题一般分为两部分——目标函数和约束条件。

  • 目标函数 我们需要去优化的目标的函数,一般就是求该函数的最大、最小值,是一个目标,是根据实际问题转换成数学表达式进行求解。也就是我们要优化的目标。

  • 约束条件 约束条件就是指对于一个问题求解的约束,也就是变量的取值范围。

于是线性规划就可以被转换成

minz=f(x)s.t.gi(x)0(i=1,2,...,m)\min z=f(x) \\ s.t. g_i(x) \le 0 (i=1,2,...,m)

求解优化问题

  1. 先确定一共有多少个变量,用数学符号进行表示
  2. 找到模型的目标函数,构成线性规划模型
  3. 根据确定的变量找到所有的约束和限制,用线性方程组的形式表示

matlab求解

在使用matlab求解时要把所有的线性方程组和目标函数都要写成矩阵表达式(线代),注意:

  1. 求解的时候只能求解min.(如果是max就加负号)
  2. 约束条件只能是\le(<<).(如果是\ge(>>)则左右两边成-1)
  • linprog(c,A,b)

    求解模型

    minz=cxs.t.Axb\min z=cx \\ s.t. Ax\le b
  • linprog(c,A,b,Aeq,beq)

    求解模型

    minz=cxs.t.{AxbAeqx=beq\min z=cx \\ s.t.\begin{cases} Ax\le b \\ Aeq\cdot x=beq \end{cases}
  • linprog(c,A,b,Aeq,beq,vlb,vub)

    求解模型

    minz=cxs.t.{AxbAeqx=beqvlbxvub\min z=cx \\ s.t.\begin{cases} Ax\le b \\ Aeq\cdot x=beq \\ vlb\le x\le vub \end{cases}