Outline •Python+ Gurobi •Mathematical Programming Language •Demo cases •Practical cases •Java+ Cplex
网络上的一些参考资料
Gurobi对 Python 支持得最好,对Java 等支持的类和方法相对较少。如果对其他编程语言没有强烈倾向的话,官方推荐使用Python:“If you don’t have a strong preference, we recommend that you use our Python interfaces, which provides a number of benefits. First, Python is a very nice programming language that can be used for anything from experimentation to prototyping to deployment. Beyond this, though, our Python interface includes a set of higher-level modeling constructs that make it much easier to build optimization models.”
Cplex 不仅有自己的建模环境 Ilog,对 Java、C++、C 等支持也比较充分,但Cplex 对 Python的类和方法目前不多。
Gurobi可以申请商业试用许可和免费学术许可,学术版没有规模限制。
Cplex可以下载免费版,但求解问题规模有限制,提供的免费学术版也有规模限制。
Gurobi 的三个创始人(Zonghao Gu, Edward Rothberg and Robert Bixby)之前都在 Cplex 工作过,其中Bixby是Cplex 的创始人,Zonghao Gu和Edward Rothberg在Cplex领导开发团队将近十年。创始人兼CTO顾宗浩博士是运筹学领域顶尖华裔科学家,毕业于佐治亚理工工业工程系。
-----------------------
• CPLEX Java Reference Manual ,里面有两个包 ilog.concert 与 ilog.cplex • 用到 API 大致上分为两类 • ilog.concert.* 里面都是些各种接口 interfaces • ilog.cplex.* 里面都是些各种类,主要是 IloCplex 类, IloCplexModeler 类以及内部嵌套类---------------------------------
• 基本结构包含以下三个部分 • 构造 IloCplex 对象 • 在 IloCplex 对象上添加变量,目标函数和约束条件。其中目标函数和约束条件都是 表达式 的形式。 • 求解模型,分析结果 • • 构造 IloCplex 对象 • IloCplex model = new IloCplex(); • IloCplex 继承了 IloCplexModeler, 两者包含了很多方法,但是侧重点不同,后者实现了很多接口。 • IloCplex 侧重于包含与算法有关的方法。 • IloCplexModeler 侧重于包含一些基本的操作性质的方法,例如 add, addLe , addGe 等。 • • 有了这个 IloCplex 对象之后,开始添加变量,表达式,目标函数和约束条件。 • 这里有 4 个接口类 • IloNumVar 变量 • IloNumExpr 表达式 • IloRange 约束范围 • IloObjective 目标函数 • 定义一个变量 x • IloNumVar x = model.numVar (lb, ub, IloNumVarType.Float, “ xname ”); • 参数分别是下界,上界,变量类型,变量名称 • 变量类型只有 IloNumVarType.Float, Int, Bool 三种基本类型 • 定义一组变量 • IloNumVar[ ] x = model.numVarArray (int n, double[ ] lb, double[ ] ub, IloNumVarType [ ] type, String[ ] name) •



