什么是运筹优化求解器
前面说了,运筹问题的求解思路不难,基本上是把目标函数写出来,把各种约束条件写出来,基本就把问题说明白了,但是编程始终是个问题。于是,一些商业公司就组织了一帮PHD专门开发这类的软件,比较有名的有IBM ILOG Cplex,Gurobi,FICO Xpress,MOSEK等,也有一些专门针对具体领域定制的求解器。商业求解器的好处是计算速度快,能解决问题的规模也更大,缺点是死贵死贵,普通企业根本用不起。
开源的求解器也有一些,比如 德国柏林ZIB研究中心的SCIP, GLPK,LP_Solve,COIN-OR旗下的CBC和SYMPHONY,Google开发的ortools,国内的杉树科技也有一个开源求解器LEAVES,但是杉树忙着搞商业化,对开源的LEAVES似乎不是很上心,支持的功能不多。对于无约束优化问题,很多软件如MATLAB,SCIPY也提供了很好用的函数调用。
开源求解器毕竟不挣钱,所以在计算性能和问题规模上也不能苛责太多,不多对于大部分中小企业也够用了。
3. google ortools 简介
从ortools的页面上看到它是这样说的:
OR-Tools是一个用于优化的开源软件套件,用于解决车辆路径、流程、整数和线性规划以及约束编程等世界上最棘手的问题。
同时OR-Tools提供了C++,Python,Java,.NET的接口,同时提供统一接口封装来调用商业求解器如Gurobi, CPLEX等,也包括开源求解器如SCIP, GLPK, ortools等。提供运筹优化工具统一接口的概念和coin-or正在做的事情有点像呢。
当前ortools提供的优化器包括: - 约束规划 - 线性与混合整数规划 - 路径规划 - 调度规划 - 网络规划 - 装箱
通过查阅官方提供的案列,基本能解决大部分的优化问题,美中不足的是,装箱问题提供的只要背包问题解法,对于三维装箱问题,需要使用约束规划来求解。
官方文档:https://developers.google.cn/optimization/introduction/overview
入门教程推荐观看: mosek cookbook https://docs.mosek.com/modeling-cookbook/index.html