Gurobi 10.0 优化引擎
易⽤功能 – 产品特⾊
• 极⼤提升了Gurobi Python 矩阵 API,使⽤更友好
• 所有矩阵对象都⽀持多维度
• 维度处理规则和 Numpy 规则保持⼀致,包括传播机制(broadcasting)
• 新增逻辑(logistic)函数⼴义约束
• 更容易在MIP模型中增加逻辑函数做为约束
• 逻辑函数有多种⽤途,包括⽣态学、统计学、机器学习、医药化⼯等领域
• .NET 的 NuGet ⽀持
• 允许 .NET ⽤户直接从 NuGet 服务器下载 Gurobi
• 内存限制终⽌参数,允许优雅退出
• ⽤户可以设定⼀个内存使⽤上限,⼀旦达到,可以优雅退出并获得最好的结果
Gurobipy
多维度建模
• 到 9.5 为⽌,对于多维建模的⽀持是有限的
• 对于 10.0:
• 所有 MVar, MLinExpr 和 MQuadExpr ⽀持任意维度
• 从这些表达式添加到约束中会产⽣多维度 MConstr/MQConstr。
Gurobipy
多维度建模
到 9.5 为⽌,对于多维建模的⽀持是有限的
• 对于 10.0:
• 所有 MVar, MLinExpr 和 MQuadExpr ⽀持任意维度
• 从这些表达式添加到约束中会产⽣多维度 MConstr/MQConstr
Gurobipy
传播 Broadcasting
• 到 9.5 为⽌: 对于⼤多数操作, 维度要匹配
• 对于 10.0:
• 所有 MVar, MLinExpr 和 MQuadExpr ⽀持传播
• ⽀持 scalar, ndarray, SciPy sparse matrices, 和所有⽀持矩阵接⼝的对象
到 9.5 为⽌: 对于⼤多数操作, 维度要匹配
• 对于 10.0:
• 所有 MVar, MLinExpr 和 MQuadExpr ⽀持传播
• ⽀持 scalar, ndarray, SciPy sparse matrices, 和所有⽀持矩阵接⼝的对象
Gurobipy
其他矩阵接⼝功能和⽅法
• 概要
• 对于经验丰富的 Numpy ⽤户操作结果的意外会⼤⼤减少
• ⽀持矩阵相乘和按元素相乘⼆种乘法
• MVar
• 从 MVar 类型变量 X, 提取对⾓线 : X.diagonal(offset).
• 从⼀列常规变量 Var 转换成 MVar: x = MVar.fromlist(varlist)
• 对 MVar 按照轴向进⾏加和: X.sum(axis=…)
• 按照元素对 Mvar 变量进⾏平⽅: pow(X, 2), X**2
• MLinExpr
• 全零表达式: MLinExpr.zeros(shape)
• 对 MLinExpr 按照轴向进⾏加和: mle.sum(axis=…)
• 新类型 MQuadExpr
• ⽤于多维⼆次约束建模
• 与 MLinExpr 类似的⽅法和属性
• 新类型 MQConstr • 构造多维度⼆次约束时,调⽤ model.addConstr(…) 的返回类型
• 与 MConstr 类似的⽅法和属性。
逻辑函数⼴义约束 Logistic General Constraint
Gurobi 中的广义函数约束
允许定义y=f(x)
• f 是预先定义的函数
• y和x是一维变量
Gurobi 会自动在x 取值范围内对f 进行分段线性化近
似
将逻辑函数添加f 函数集中
上一条:Gurobi 10.0 新亮点
下一条:Gurobi 10.0 – 开源 GitHub 应⽤库