使用breeze来求线性规划最优解

如果breeze只有前面文章提到那么点内容,那对比matlab明显就太弱了(实际上可能确实比matlab要少很多东西,毕竟后者是商业的,而且价格昂贵)。实际上breeze还有很多很方便的工具,其中有一个是求线性规划的最优解问题的。
来看看怎么用的:

import breeze.optimize.linear._

object Linear {

  def main(args: Array[String]): Unit = {
    val lp = new LinearProgram()
    import lp._
    val x0 = Real()
    val x1 = Real()
    val x2 = Real()
    val lpp =  ( (x0 +  x1 * 2 + x2 * 3 )
      subjectTo ( x0 * -1 + x1 + x2 <= 20)
      subjectTo ( x0 - x1 * 3 + x2 <= 30)
      subjectTo ( x0 <= 40 )
      )

    println(maximize(lpp))
  }

}

结果是:

Result(DenseVector(40.0, 17.5, 42.5),maximize    x_0 + (x_1) * 2.0 + (x_2) * 3.0
subject to  (x_0) * -1.0 + x_1 + x_2 <= 20.0
            x_0 - (x_1) * 3.0 + x_2 <= 30.0
            x_0 <= 40.0)

简单来说就是提供一个线性表达式,变量可以用Real表示,然后subjectTo就是线性规划的限制条件

用起来就是这么简单,有兴趣的可以试试。

你可能感兴趣的:(使用breeze来求线性规划最优解)