模型参数
模型参数
模型变量存储优化问题(如中所述问题声明)。模型可以通过多种方式构建。您可以填充模型使用标准的R例程。您也可以从文件读取模型,使用古罗比欧·里德.一些API函数(古罗比·菲亚斯放松和古罗比欧放松)还返回模型。
请注意,在模型变量可以是密集的,也可以是稀疏的。稀疏矩阵应该使用斯巴塞矩阵从矩阵包装,或简单三重态矩阵从砰地关上包裹
以下是该组件的所有命名组件的枚举模型Gurobi在优化模型时将考虑的论点:
常用的命名组件:
- A.
- 线性约束矩阵。
- obj(可选)
- 线性目标向量(C中的向量问题声明)。如果存在,则必须为字段的每列指定一个值A..当不存在时,每个变量的默认客观系数为0。
- 感知(可选)
- 线性约束的意义。允许的值为'=','<',或“>”. 必须为每一行指定一个值A.,或指定所有约束具有相同含义的单个值。当你不在时,所有的感觉都默认了'<'.
- rhs(可选)
- 线性约束的右侧向量(在问题声明)。必须为每一行指定一个值A.。不存在时,右侧向量默认为零向量。
- lb(可选)
- 下界向量。如果存在,则必须为字段的每列指定一个值A.。如果不存在,则每个变量的默认下限为0。
- ub(可选)
- 上限向量。当存在时,必须为每列指定一个值A.。如果不存在,则变量具有无限上界。
- vtype(可选)
- 变量类型。此向量用于捕获变量完整性约束。允许的值为“C”(连续),“B”(二进制),“我很高兴(整数),'S'(半连续),或“不”(semi-integer)。二进制变量必须是0或1。整型变量可以接受指定的上下边界之间的任何整型值。半连续变量可以在指定的上下限之间取任意值,或者取零值。半整型变量可以接受指定的上下边界之间的任意整数值,或0值。出现时,必须为的每列指定一个值A.,或指定所有变量具有相同类型的单个值。如果没有,则每个变量都被视为连续变量。请参阅本节有关变量类型的更多信息。
- modelsense(可选)
- 优化意义。允许的值为“最小值”(减少)或“马克斯”(最大化)。当不存在时,默认的优化意义是最小化。
- modelname(可选)
- 模型的名称。将模型写入文件时,该名称会显示在Gurobi日志中。
- objcon(可选)
- 目标函数中的常数偏移量( 在问题声明)。
- varnames(可选)
- 变量名为vector。字符向量。当存在时,该向量的每个元素都定义变量的名称。必须为每个列指定一个名称A..
- 名称(可选)
- 约束名为vector。字符向量。存在时,向量的每个元素都定义约束的名称。必须为每一行指定一个名称A..
二次目标和约束命名组件:
- Q(可选)
- 二次目标矩阵。当礼物,Q必须是一个方阵,其行数和列数等于中的列数A..
- quadcon(可选)
-
二次约束。列表的列表。当存在时,列表中的每个元素四孔定义单个二次约束:
.
这个质量控制矩阵必须是一个平方矩阵,其行数和列数等于A..储存在模型$quadcon[[i]]$质量控制.
这个Q向量定义约束中的线性项。它必须为每个列指定一个值A..储存在模型$quadcon[[i]]$Q.
标量贝塔存储在模型$quadcon[[i]]$rhs。它定义约束的右侧值。
可选感觉字符串定义二次构造函数的意义。允许的值为'<','='或“>”。如果不存在,则默认意义为'<'.储存在模型$quadcon[[i]]$感觉.
可选的名字字符串定义二次约束的名称。它存储在模型$quadcon[[i]]$的名字.
SOS约束命名组件:
- sos(可选)
- 特殊有序集(SOS)约束。一份名单。当存在时,每个条目在求救定义单个SOS约束。SOS约束可以是类型1或类型2。SOS约束的类型通过指定模型$sos[[i]]$类型. 1类SOS约束是一组变量,其中集合中最多有一个变量的值不是零。第2类SOS约束是一组有序的变量,其中最多有两个变量可以取非零值。如果两个值为非零,则它们在有序集中必须是连续的。SOS约束的成员通过将其索引放置在向量中来指定模型$sos[[i]]$指数.与SOS成员相关的权重以矢量形式提供模型$sos[[i]]$重量. 请参阅本节有关SOS约束的详细信息。
多目标命名组件:
- multiobj(可选)
-
模型的多目标规范。一份名单。当存在时,每个条目在多目标定义多目标问题的单个目标。请参阅多个目标第节了解有关多目标优化的更多详细信息。每个目标可能具有以下命名组件:
- objn
- 指定通过模型$多目标[[i]]$objn. 这是我-目标向量。
- objcon(可选)
- 指定通过模型$多目标[[i]]$objcon.如果提供,这是我th目标不变。默认值为0。
- 优先级(可选)
- 指定通过模型$多目标[[i]]$优先事项。如果提供,则此值为等级制的这一目标的优先次序。默认值为0。
- 重量(可选)
- 指定通过模型$多目标[[i]]$重量。如果提供,则此值为multiplier used when aggregating objectives. The default value is 1.0.
- reltol(可选)
- 指定通过模型$多目标[[i]]$reltol.如果提供此值,则指定进行分层多目标优化时的相对目标降级。默认值为0。
- Absol(可选)
- 指定通过模型$多目标[[i]]$Absol。如果提供,则此值指定执行分层多目标优化时的绝对目标降级。默认值为0。
- 名称(可选)
- 指定通过模型$多目标[[i]]$的名字. 如果提供,此字符串将指定我-目标函数。
请注意,当存在多个目标时后果$奥比瓦尔优化调用结果中返回的命名组件将是与模型$多目标.
多目标模型不能有其他目标。因此,结合模型$多目标与任何的模型$obj,模型$objcon,模型$pwlobj,或模型$Q是一个错误。
通用约束命名组件:
下面描述的列表列表用于添加一般约束条件一个模特。
数学规划传统上定义了一组基本约束类型:变量约束、线性约束、二次约束、完整性约束和SOS约束。这些通常由底层解算器直接处理(尽管并不总是),并且是整个算法的基础。手机万博登录
Gurobi接受许多额外的约束类型,我们将其统称为一般约束条件.这些通常是不直接由解算器处理。相反,它们通过预解算转换为数学手机万博登录上等价的约束集(和变量集),从上面列出的基本类型中选择。这些常规约束是为方便用户而提供的。如果此类约束出现在您的模型中,但如果您希望自己使用基本约束类型来重新格式化这些约束,您当然可以这样做。但是,请注意,Gurobi有时可以利用其中包含的信息在模型中的其他约束中,构建比您可能创建的更有效的公式。
属于此项的其他约束类型一般的约束伞是:
- MAX(genconmax):将决策变量设置为一组决策变量中的最大值
- MIN(genconmin):将决策变量设置为一组决策变量中的最小值
- ABS (genconabs):设置一个决策变量等于其他决策变量的绝对值
- AND(genconand):当且仅当一组二元决策变量都等于一时,将二元变量设置为一
- 或(genconor):当且仅当一组二进制决策变量中至少有一个变量等于1时,才将二进制变量设置为1
- 指示符(genconind):每当给定的二进制变量取某个值时,必须满足给定的线性约束
请参考本节有关一般约束的更多细节。
- genconmax(可选)
-
一份名单。当存在时,每个条目在genconmax定义窗体的最大常规约束
每个条目可能具有以下命名组件:- resvar
- 指定通过模型$genconmax[[i]]$resvar.约束左侧变量的索引。
- var
- 指定通过模型$genconmax[[i]]$var,它是约束条件右边的变量指标向量。
- con(可选)
- 指定通过模型$genconmax[[i]]$骗局. 存在时,指定左侧的常数。默认值为.
- 名称(可选)
- 指定通过模型$genconmax[[i]]$的名字.当出现时,指定-th最大一般约束。
- genconmin(可选)
-
一份名单。当存在时,每个条目在genconmax定义窗体的最小常规约束
每个条目可能具有以下命名组件:- resvar
- 指定通过模型$genconmin[[i]]$resvar.约束左侧变量的索引。
- var
- 指定通过模型$genconmin[[i]]$var,它是约束条件右边的变量指标向量。
- con(可选)
- 指定通过模型$genconmin[[i]]$骗局. 存在时,指定左侧的常数。默认值为.
- 名称(可选)
- 指定通过模型$genconmin[[i]]$的名字.当出现时,指定-th最小一般约束。
- genconabs(可选)
-
一份名单。当存在时,每个条目在genconmax定义窗体的ABS常规约束
每个条目可能具有以下命名组件:- resvar
- 指定通过模型$genconabs[[i]]$resvar.约束左侧变量的索引。
- argvar
- 指定通过模型$genconabs[[i]]$argvar.约束条件右边变量的索引。
- 名称(可选)
- 指定通过模型$genconabs[[i]]$的名字.当出现时,指定-一般约束。
- genconand(可选)
-
一份名单。当存在时,每个条目在金科南德定义表单的和一般约束
每个条目可能具有以下命名组件:- resvar
- 指定通过模型$genconand[[i]]$resvar.约束左侧变量的索引。
- var
- 指定通过模型$genconand[[i]]$var,它是约束条件右边的变量指标向量。
- 名称(可选)
- 指定通过模型$genconand[[i]]$的名字.当出现时,指定-第四,一般约束。
- genconor(可选)
-
一份名单。当存在时,每个条目在genconor定义窗体的约束或常规约束
每个条目可能具有以下命名组件:- resvar
- 指定通过模型$genconor[[i]]$resvar.约束左侧变量的索引。
- var
- 指定通过模型$genconor[[i]]$var,它是约束条件右边的变量指标向量。
- 名称(可选)
- 指定通过模型$genconor[[i]]$的名字.当出现时,指定-th或一般约束。
- genconind(可选)
-
一份名单。当存在时,每个条目在根科宁定义窗体的指示符常规约束
此约束声明当二进制变量 需要的值宾瓦尔然后是线性约束 必须保持。注意感觉是其中之一'=','<',或“>”为了平等(),小于或等于()或大于或等于()限制。每个条目可能具有以下命名组件:- 宾瓦尔
- 指定通过模型$genconind[[i]]$宾瓦尔.隐含二进制变量的索引。
- 宾瓦尔
- 指定通过模型$genconind[[i]]$宾瓦尔.强制满足以下线性约束的二进制变量的值。它可以是0或1。
- A.
- 指定通过模型$genconind[[i]]$A.. 参与隐含线性约束的变量系数向量。必须为指定一个值A.每列A..
- 感觉
- 指定通过模型$genconind[[i]]$感觉.隐含线性约束的意义。必须是'=','<',或“>”.
- rhs
- 指定通过模型$genconind[[i]]$rhs. 隐含线性约束的右侧值。
- 名称(可选)
- 指定通过模型$genconind[[i]]$的名字.当出现时,指定-th指标一般约束。
先进的命名组件:
- pwlobj(可选)
-
分段线性目标函数。一份名单。当存在时,每个条目在pwlobj为单个变量定义分段线性目标函数。正在定义目标函数的变量的索引存储在模型$pwlobj[[i]]$变量这个定义分段线性函数的点的值存储在
模型$pwlobj[[i]]$x。在向量必须按非降序排列定义分段线性函数的点的值存储在模型$pwlobj[[i]]$Y. - vbasis(可选)
- 可变基状态向量。用于为单纯形算法提供一个高级的起点。您通常不会关心这个向量的内容,而是将它从上一次优化运行的结果传递到后续运行的输入。出现时,必须为的每列指定一个值A..
- cbasis(可选)
- 约束基状态向量。用于为单纯形算法提供高级起点。请参阅vbasis详细说明。如果存在,则必须为每一行指定一个值A..
- varhintval(可选)
- 一组用户提示。如果您知道某个变量可能在MIP模型的高质量解决方案中取某个特定值,那么您可以提供该值作为提示。您还可以(可选地)在提示中提供关于您的自信级别的信息瓦欣特普里指定组件。如果存在,则必须为的每列指定一个值A..使用的值为NA对于未知此类提示的变量。有关更多详细信息,请参阅VarHitVal属性文档。manbet体育手机客户端
- varhintpri(可选)
- 用户提示的优先级。在通过瓦欣特瓦尔列表中,您还可以选择提供提示优先级,以显示您对提示的信任程度。如果存在,则必须为每个列指定一个值A..有关详情,请参阅VarHintPri属性文档。manbet体育手机客户端
- 分支优先级(可选)
- 变量分支优先。如果存在,该属性的值将用作在MIP搜索期间为分支选择分数变量的主要标准。值较大的变量总是优先于值较小的变量。使用标准的分支变量选择标准可以打破束缚。如果存在,则必须为的每列指定一个值A..
- pstart(可选)
- 当前单纯形起始向量。如果设置pstart和模型中每个变量的值德斯塔特每个约束的值,然后simplex将使用这些值来计算热启动基础。有关更多详细信息,请参阅PStart属性文档。manbet体育手机客户端
- dstart(可选)
- 当前单纯形起始向量。如果设置德斯塔特模型中每个线性约束的值,以及pstart每个变量的值,然后simplex将使用这些值来计算热启动基础。有关更多详细信息,请参阅DStart属性文档。manbet体育手机客户端
- 懒惰(可选)
- 确定是否将线性约束视为线性约束懒惰的约束。如果存在,则必须为列表的每行指定一个值A..有关详情,请参阅懒惰的属性文档。manbet体育手机客户端
- 启动(可选)
- MIP起始向量。MIP解算器将尝试从此向量生成初始解决方案。手机万博登录出现时,必须为每个变量指定起始值。请注意,可以将变量的起始值设置为NA,它指示MIP求解器尝试为该变量填充一个值。手机万博登录
- 分区(可选)
- MIP变量分区号,用于MIP解改进启发式。如果存在,则必须为每个变量指定一个值A..有关详情,请参阅分区属性文档。manbet体育手机客户端
如果上面列出的任何强制性组件缺失,则古罗比()函数将返回一个错误。
下面是一个示例,演示了简单优化模型的构造:
型号<-list()
模型$A<-矩阵(c(1,2,3,1,1,0),nrow=2,byrow=T)
模型$obj < - c (1, 1, 1)
模型$modelsense<-“max”
模型$rhs<-c(4,1)
模型$意义<-c(“<”,“>”)
您还可以构建A.作为稀疏矩阵,使用斯巴塞矩阵或简单三重态矩阵:
模型$A<-spMatrix(2,3,c(1,1,1,2,2),c(1,2,3,1,2),c(1,2,3,1,1))
模型$A<-简单三重态矩阵(c(1,1,1,2,2),c(1,2,3,1,2),c(1,2,3,1,1))
请注意,Gurobi R接口允许您为大多数数组值组件指定标量值。指定的值将扩展为适当大小的数组,数组的每个分量都等于标量(例如。,模型$obj<-1相当于模型$obj < - c (1, 1, 1)在示例中)。