Cplex/Gurobi
文章平均质量分 64
数学规划软件 Cplex 与 Gurobi 的使用心得
心态与习惯
trust yourself, then success will follow you.
展开
-
苹果电脑 Macbook 使用 cplex
如果是 intel 芯片,选择后缀是 osx 但没有 atm 的文件。如果是 M 系列芯片,要选择后缀带 osx-atm 的文件。原创 2023-04-22 19:28:56 · 1228 阅读 · 7 评论 -
将 max 或 min 或 0-1 判断条件转为线性表达式
数学建模过程中,经常会遇到下面的表达式: x=max{y,0}" role="presentation" style="text-align: center; position: relative;">x=max{y,0}x=max{y,0}x=\max\{y, 0\} 这是一个非线性表达式,如何将这个表达原创 2017-12-28 21:55:12 · 14600 阅读 · 32 评论 -
一个变量在一个范围内取值,线性化
偶尔碰到一个线性化的问题:一个变量在一个区域内为一个值,在其他区域内为另一个值,即。引入一个 0-1 变量。原创 2022-12-27 03:53:07 · 805 阅读 · 9 评论 -
随机对偶动态规划 SDDP,报童模型的一个 python 例子
将 benders 分解与 SAA 方法结合在一起,就产生了随机对偶动态规划方法。这两年在论文里看到了这个方法,一般用在运输或能源规划问题中,在库存管理问题中还没见别人用过。原创 2022-03-31 21:42:34 · 5642 阅读 · 4 评论 -
python 下使用 cplex
最近熟悉 python,也想掌握 python 下面的 cplex 的调用,查阅了相关资料,总结如下:1. cplex python API 的安装网上说的比较复杂,若直接寻找 cplex 安装文件中的 install.py 文件,往往其版本跟目前 python 运行的版本不一致。发现了一个简单的方法,直接使用 Anaconda 安装 cplex 包,因为 cplex 把自己最新的...原创 2018-07-07 18:57:19 · 36964 阅读 · 55 评论 -
python Numpy 的一维数组 1D array 既是行向量也是列向量,矩阵相乘符号@
我发现 Numpy 中的一维数组既可以是行向量也可以是列向量:import numpy as npa = np.array([1, 2, 3, 4])In [18]: a.shape(4,)IPdb [19]: a.T.shape(4,)可以发现,一维数组的转置就是它自身。若在定义数组时,里面有两个中括号,就是一个行向量了。b = np.array([[1, 2, 3 ,4]])In [24]: b.shape(1, 4)但若 numpy 的二维数组与一维数组做矩阵乘法,一维原创 2021-12-26 20:09:19 · 5045 阅读 · 0 评论 -
详解 Benders 分解与一个算例的 python 代码
听说过 benders 分解几年了,一直没有细看,最近论文里面也见到,还是有必要了解一下它的基本思想与用法的。原创 2021-11-15 01:19:35 · 7368 阅读 · 19 评论 -
指示约束条件 (indicator constraint) 与大M (big M) 条件
数学规划软件 cplex 或 gurobi 都有专门的指示约束条件:约束一个变量与另外一些变量的关系,例如对于一个 0-1 变量 zzz,它与 xxx 有以下关系:x>0⇒z=1x=0⇒z=0\begin{aligned}x>0 \Rightarrow z=1\\x=0\Rightarrow z=0\end{aligned}x>0⇒z=1x=0⇒z=0一般情况下可以使用大 M 构造成线性规划模型:x≤Mzx≥0\begin{aligned}x &\leq Mz原创 2021-09-08 21:42:18 · 6340 阅读 · 3 评论 -
java 调用 gurobi 的一个例子
Gurobi 也可以用 java 调用,但相对于 python, 对于 java 调用的文档说明很少。自己摸索了下,虽然对 java 调用的方法与类支持地比较少(不像 cplex 对 java 支持地那样多),但基本满足了需求。官方文档自带的一个混合整数规划例子:/* Copyright 2018, Gurobi Optimization, LLC *//* This example formulates and solves the following simple MIP model:原创 2021-06-21 10:04:34 · 2026 阅读 · 0 评论 -
绝对值线性化的两种方式
对于一个数学规划问题:min∑i=1nci∣xi∣s.t.Ax≥b\begin{aligned}&\min\quad &\sum_{i=1}^n c_i|x_i|\\&s.t. &\bm {Ax\geq b}\end{aligned}mins.t.i=1∑nci∣xi∣Ax≥b有两种方法将其线性化,方法1:用一个中间变量 ziz_izi,再增加两个约束条件min∑i=1ncizis.t.Ax≥bxi≤zi∀i−xi≤zi∀i\beg原创 2021-05-07 14:00:12 · 11003 阅读 · 7 评论 -
cplex/gurobi 找出模型非可行的原因
用 cplex 或 gurobi 构建数学规划模型时,要是求解变量或约束条件比较多,刚开始总是不成功的,经常会遇到模型非可行的情况。一般是由于约束条件输入错误导致的,但是具体哪一个约束条件呢?一个一个核实太麻烦了。发现 cplex 或者 gurobi 都提供了寻找非可行原因的一些类和方法。...原创 2018-12-26 12:35:40 · 11171 阅读 · 13 评论 -
python 调用 gurobi 求解数学规划的几点总结,输出 mps,lp
gurobi 对 python 支持的不错,我已经编写了几个规划求解的例子。每次重新编程时,之前例子里的一些知识点又忘记了,觉得很有必要总结一下。原创 2020-09-03 11:27:45 · 28740 阅读 · 41 评论 -
java clex 中的 IloLPMatrix
最近看 cplex 在 java 的 callback,发现它给的 callback 例子中,都是用 IloLPMatrix 这个类放约束条件,在 IloLPMatrix 中, 每个约束条件存储在 IloRange 中。使用 IloLPMatrix 的好处是,这个类可以方便查看模型中的求解变量,约束条件。这种形式下,约束条件必须以 IloRange 形式添加。虽然 cplex 可以直接通过 ...原创 2018-12-08 18:33:43 · 505 阅读 · 9 评论 -
cplex/gurobi 中的 sos 约束
SOS(special ordered sets,特殊顺序集)是指一组有序集合里,顶多有一个非零值(SOS1 型),或顶多有两个非零值(SOS2 型)。这类约束单独列出来,可以加快线性规划的求解速度。1线性规划模型中使用大 M 表示的约束条件可以转化成 SOS, 不过 cplex 或者 gurobi 一般都可以自动转化。https://en.wikipedia.org/wiki/Spec...原创 2018-12-06 23:39:08 · 7251 阅读 · 7 评论 -
数学规划求解软件 cplex 与 gurobi 的优缺点对比
之前一直使用 cplex, 最近也接触了 gurobi,谈谈自己对二者的优缺点感受吧。1. cplex 的优缺点使用人数最多的求解器,相关论文及论坛中关于 cplex 的问题比较多。gurobi虽然增长快,但仍然与 cplex 有一定差距。在数学建模中,cplex 不仅有自己的建模环境 Ilog,对 c, c++, java 等支持也比较充分。我发现 cplex 针对 java 有大量的类...原创 2018-12-05 23:41:56 · 26129 阅读 · 9 评论 -
对 cplex/gurobi MPS/LP文件格式的理解
优化求解器如 cplex 或 gurobi,都支持直接读取线性规划建模文件 MPS 格式或 LP 格式,因此,有必要研究一下,这样就可以编写一个 mps 或 lp 文件,用不同的求解器直接算了。1. MPS 文件的理解IBM 的官方网站有一些详细的解释,参见:https://www.ibm.com/support/knowledgecenter/SSSA5P_12.6.0/ilog.odms....原创 2018-12-04 15:41:12 · 11612 阅读 · 8 评论 -
Ilog cplex, java 表示分段线性函数 piecewise function
1. 什么是分段线性函数Piecewise function (分段线性函数)是一组线段组成的函数(一般为连续函数)。例如下面这个函数f(x)={300+xx≤100300+100+2(x−100)100<x≤200300+100+2∗(200−100)−3(x−200)x>200f(x)=\begin{cases}300+x &原创 2018-11-15 23:07:22 · 5300 阅读 · 8 评论 -
java 调用 cplex
最近使用 java 调用 cplex, 发现 cplex 对 java 的支持比对matlab强大多了,类跟方法有几百个。但这些类和方法的注释并不是特别详细,还需要结合例子来看懂。一、 准备工作:导入 cplex 库 到 eclipse 中1. 首先从官网上下载 cplex: https://www.ibm.com/developerworks/commun原创 2017-11-30 17:28:04 · 19191 阅读 · 31 评论 -
对数学规划软件 CPLEX 等读取 MPS 文件的理解
不少数学规划软件都支持对 MPS 文件的读取,例如 CPLEX,GAMES,GRUOBI 等,因此了解这个文件怎么用是非常有必要的。根据 CPLEX 的帮助文档,我将自己对 MPS 文件的理解总结如下。例如下面这个 mps 文件:NAME example.mps // 文件名字 ROWS // 行,目标函数与约束条件,L 表示小于等于,G 表示大于等于,N 表示没有大原创 2018-01-12 12:45:34 · 3463 阅读 · 1 评论 -
情景规划 Scenario 方法 Ilog Cplex 建模
这几天看 John Birge 与 Louveaux 的随机规划书 《Introduction to Stochastic Programming》,看到书中的 Scenario 方法。之前接触过,但没有动手计算。一个重要的约束条件是 nonanticipativity constraint,即可实施条件。现在看到书中第一章第二节的一个例题,于是就用 Cplex 把随机规划模型计算了下。调试了原创 2018-01-05 23:04:24 · 5271 阅读 · 14 评论 -
ILOG CPLEX OPL 编程手册,使用心得与简单例子
as原创 2016-12-08 01:34:04 · 25913 阅读 · 54 评论 -
matlab中调用cplex 以及使用 Yalmip 工具箱
一、首先需要在IBM的官网上下载cplex的安装包,有90天的免费试用期,够用了。二、找到CPLEX安装路径中的matlab文件夹,以及examle文件夹里面的matlab例子原创 2015-03-19 23:31:48 · 119944 阅读 · 80 评论