Gurobi——GRBLinExpr
文章目录
- GRBLinExpr
- GRBLinExpr()
- GRBLinExpr::addTerms()
- GRBLinExpr::clear()
- GRBLinExpr::getConstant()
- GRBLinExpr::getCoeff()
- GRBLinExpr::getValue()
- GRBLinExpr::getVar()
- GRBLinExpr::operator=
- GRBLinExpr::operator+
- GRBLinExpr::operator-
- GRBLinExpr::operator+=
- GRBLinExpr::operator-=
- GRBLinExpr::operator*=
- GRBLinExpr::remove()
- GRBLinExpr::size()
GRBLinExpr
Gurobi 线性表达式对象。 一个线性表达式由一个常数项和一个捕获线性项的系数变量对列表组成。 线性表达式用于构建约束。 它们是通常寿命较短的临时对象。
GRBLinExpr 类是抽象基类GRBExpr 的子类。
您通常使用重载运算符构建线性表达式。例如,如果 x 是 GRBVar 对象,则 x + 1 是 GRBLinExpr 对象。表达式可以由常量(例如 expr = 0)、变量(例如 expr = 1 * x + 2 * y)或其他表达式(例如 expr2 = 2 * expr1 + x 或 expr3 = expr1 + 2 * expr2)。您还可以修改现有表达式(例如 expr += x 或 expr2 -= expr1)。
构建表达式的另一个选项是使用 addTerms 方法,它一次添加一组新术语。也可以使用 remove 从表达式中删除术语。
请注意,构建表达式的成本很大程度上取决于您使用的方法。虽然在构建小型表达式时通常可以忽略此问题,但在构建大型表达式时应该注意一些效率问题:
- 您应该避免在循环中使用 expr = expr + x。这将导致表达式中的项数呈二次方的运行时。
- 使用 expr += x(或 expr -= x)比 expr = expr + x 更有效。通过循环 += 语句构建大型表达式相当有效,但它不是最有效的方法。
- 构建大型表达式的最有效方法是对 addTerms 进行一次调用。
要将线性约束添加到您的模型,您通常会构建一个或两个线性表达式对象(expr1 和 expr2),然后使用重载的比较运算符来构建 GRBModel::addConstr 的参数。举几个例子:
向模型添加约束后,对用于构建约束的表达式对象的后续更改将不会更改约束(您将为此使用 GRBModel::chgCoeff)。
可以使用 getVar、getCoeff 和 getConstant 方法查询线性表达式中的各个项。 您可以使用 size 方法查询表达式中的项数。
请注意,线性表达式可能包含涉及相同变量的多个项。 这些重复项在从表达式创建约束时被合并,但在检查表达式中的单个项时它们可能是可见的(例如,使用 getVar 时)。
GRBLinExpr()
线性表达式构造函数。 创建一个常量表达式或具有一个术语的表达式。
GRBLinExpr GRBLinExpr (double constant=0.0 )
创建一个常数线性表达式。
参数 | 详解 |
---|---|
constant (optional) | 表达式的常量值。 |
返回值 | 一个常量表达式对象。 |
GRBLinExpr GRBLinExpr(GRBVar var, double coeff=1.0 )
用一个词创建一个表达式。
参数 | 详解 |
---|---|
var | 表达式术语的变量。 |
coeff(可选) | 表达式项的系数。 |
返回值 | 包含一个线性项的表达式对象。 |
GRBLinExpr::addTerms()
将新项添加到线性表达式中。
void addTerms (const double* coeffs,const GRBVar* vars,int count)
参数 | 详解 |
---|---|
coeffs | 新术语的系数。 |
vars | 新术语的变量。 |
count | 要添加到表达式的项数。 |
GRBLinExpr::clear()
将线性表达式设置为 0。
您应该改用重载的 expr = 0。 clear 方法主要是为了与我们对非重载语言的接口保持一致。
void clear()
GRBLinExpr::getConstant()
从线性表达式中检索常数项。
double getConstant ( )
返回值: 来自表达式的常量。
GRBLinExpr::getCoeff()
从表达式的单个项中检索系数。
double getCoeff ( int i )
参数 | 详解 |
---|---|
i | 兴趣系数指数。 |
返回值 | 表达式中索引 i 处的项的系数。 |
GRBLinExpr::getValue()
计算当前解的线性表达式的值。
double getValue()
返回值:当前解决方案的表达式的值。
GRBLinExpr::getVar()
从表达式的单个项中检索变量对象。
GRBVar getVar ( int i )
参数 | 详解 |
---|---|
i | 感兴趣项的索引。 |
返回值 | 表达式中索引 i 处术语的变量。 |
GRBLinExpr::operator=
设置一个表达式等于另一个表达式。
GRBLinExpr operator=(const GRBLinExpr& rhs)
参数 | 详解 |
---|---|
rhs | 源表达式。 |
返回值 | 新的表达式对象。 |
GRBLinExpr::operator+
将一个表达式添加到另一个表达式中,生成结果表达式。
GRBLinExpr operator+(const GRBLinExpr& rhs)
参数 | 详解 |
---|---|
rhs | 要添加的表达式。 |
返回值 | 表达式对象,它等于调用表达式和参数表达式之和。 |
GRBLinExpr::operator-
从另一个表达式中减去一个表达式,产生一个结果表达式。
GRBLinExpr operator-(const GRBLinExpr& rhs)
参数 | 详解 |
---|---|
rhs | 要减去的表达式。 |
返回值 | 表达式对象,它等于调用表达式减去参数表达式。 |
GRBLinExpr::operator+=
在调用表达式中添加一个表达式。
void operator+=(const GRBLinExpr& expr)
参数 | 详解 |
---|---|
expr | 要添加的表达式。 |
返回值 | 无。 |
GRBLinExpr::operator-=
从调用表达式中减去一个表达式。
void operator-= ( const GRBLinExpr& expr )
参数 | 详解 |
---|---|
expr | 要减去的表达式。 |
返回值 | 无。 |
GRBLinExpr::operator*=
将调用表达式乘以一个常数。
void operator*=(double multiplier)
参数 | 详解 |
---|---|
multiplier | 常数乘数。 |
返回值 | 无。 |
GRBLinExpr::remove()
从线性表达式中删除一项。
void remove(int i)
删除存储在表达式索引 i 处的项。
参数 | 详解 |
---|---|
i | 要删除的词条的索引。 |
boolean remove(GRBVar var)
从表达式中删除与变量 var 关联的所有项。
参数 | 详解 |
---|---|
var | 应删除其项的变量。 |
返回值 | 如果变量出现在线性表达式中(并且已被删除),则返回 true。 |
GRBLinExpr::size()
检索线性表达式中的项数(不包括常数)。
unsigned int size()
返回值:表达式中的项数。
Gurobi——GRBLinExpr相关推荐
- 【运筹优化】调用Gurobi求解LP问题(Java代码示例)
文章目录 问题 代码 求解结果 问题 代码 import gurobi.*; /*** @Author:WSKH* @ClassName:TestGurobi* @ClassType:* @Descr ...
- gurobi学习笔记(一)
Gurobi简介 eclipse配置gurobi 环境与模型 添加变量 添加约束条件 设置目标与计算 输出结果 参考文档 Gurobi简介 Gurobi是由美国Gurobi公司开发的新一代大规模数学规 ...
- Gurobi——GRBModel
文章目录 GRBModel GRBModel::addConstr() GRBModel::addVar() GRBModel::addVars() 参考 GRBModel Gurobi 模型对象 ...
- Gurobi教程——C++ API概览
C++ API 概述 本节介绍 Gurobi C++ 接口.本手册首先简要概述了接口中公开的类以及这些类中最重要的方法.然后继续全面介绍所有可用的类和方法. 如果您是 Gurobi Optim ...
- Gurobi Optimizer的安装教程
这里写自定义目录标题 Gurobi Optimizer 的安装和使用 证书的配置 Gurobi Optimizer 的安装和使用 在这个网张https://www.gurobi.com/documen ...
- Gurobi 生产计划调度学习案例(含代码实现) (生产切换、装配计划)
一.前言 利用数学规划建立和解决生产计划调度问题,已经是运筹学成熟应用领域之一.各种书籍.案例.最佳实践不胜枚举. 大部分数学规划方法在建立生产计划和调度模型时,假设以某个自然的时间间隔为建模时间单位 ...
- gurobi和java_Gurobi和java和空解决方案
我正在使用Gurobi和 java来解决ILP问题. 我设置了所有,然后启动程序.但是Gurobi甚至没有尝试解决我的问题并且给我一个空解决方案,所有变量都设置为0. 在放松步骤中,Gurobi显示该 ...
- Gurobi建模遇到的坑
1.quicksum好像不支持嵌套 最好还是尽可能多的使用一些中间变量来表达. 另外,quicksum()返回的是表达式而不是var,像addGenConstrMax(resvar, [var, va ...
- gurobi求解目标规划问题案例
学习笔记 熟悉目标规划的基本概念及数据模型 使用商用求解器gurobi求解案例 目标规划 目标规划法是为了同时实现多个目标,为每一个目标分配一个偏离各目标严重程度的罚数权重,通过平衡各标准目标的实现程 ...
最新文章
- 微信小程序之配置app.json
- Linux java集成安装环境,Linux下Java环境安装
- druid监控配置及sql注入防火墙配置
- 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定
- mysql乐观锁与事务_[数据库事务与锁]详解七: 深入理解乐观锁与悲观锁
- 服务器上的一次删除文件操作
- 写c语言会出现哪些常见错误,C语言编写常见错误
- 387.字符串中的第一个唯一字符
- 基于HAL库的32流水灯
- 渗透测试报告模板_网站安全测试报告模板该如何写
- Oracle数据库 1653错误
- 大数据—数据收集系统介绍(Flume,Sqoop)
- java是面向过程的编程语言_1. 下列关于JAVA语言特点的叙述中,错误的是[ ] A、Java是面向过程的编程语言...
- Google Hacking使用详解
- 提升线下实体店铺购物体验
- 【基础知识】什么是哈希冲突?
- HDU 2448 Mining Station on the Sea 最短路+KM
- 你想过吗,为什么说面向对象最符合人的思维?
- 利用NERO刻录VCD视频光盘
- Oracle-SQL以及PL\SQL练习