模型参数

模型参数

模型变量存储优化问题(如中所述问题声明)。

模型可以通过多种方式构建。您可以填充模型使用标准的R例程。您也可以从文件读取模型,使用古罗比欧·里德.一些API函数(古罗比·菲亚斯放松古罗比欧放松)还返回模型。

请注意,在模型变量可以是密集的,也可以是稀疏的。稀疏矩阵应该使用斯巴塞矩阵矩阵包装,或简单三重态矩阵砰地关上包裹

以下是该组件的所有命名组件的枚举模型Gurobi在优化模型时将考虑的论点:

常用的命名组件:

A.
线性约束矩阵。

obj(可选)
线性目标向量(C中的向量问题声明)。如果存在,则必须为字段的每列指定一个值A..当不存在时,每个变量的默认客观系数为0。

感知(可选)
线性约束的意义。允许的值为'=','<',或“>”. 必须为每一行指定一个值A.,或指定所有约束具有相同含义的单个值。当你不在时,所有的感觉都默认了'<'

rhs(可选)
线性约束的右侧向量(<span>$</span>b<span>$</span>问题声明)。必须为每一行指定一个值A.。不存在时,右侧向量默认为零向量。

lb(可选)
下界向量。如果存在,则必须为字段的每列指定一个值A.。如果不存在,则每个变量的默认下限为0。

ub(可选)
上限向量。当存在时,必须为每列指定一个值A.。如果不存在,则变量具有无限上界。

vtype(可选)
变量类型。此向量用于捕获变量完整性约束。允许的值为“C”(连续),“B”(二进制),“我很高兴(整数),'S'(半连续),或“不”(semi-integer)。二进制变量必须是0或1。整型变量可以接受指定的上下边界之间的任何整型值。半连续变量可以在指定的上下限之间取任意值,或者取零值。半整型变量可以接受指定的上下边界之间的任意整数值,或0值。出现时,必须为的每列指定一个值A.,或指定所有变量具有相同类型的单个值。如果没有,则每个变量都被视为连续变量。请参阅本节有关变量类型的更多信息。

modelsense(可选)
优化意义。允许的值为“最小值”(减少)或“马克斯”(最大化)。当不存在时,默认的优化意义是最小化。

modelname(可选)
模型的名称。将模型写入文件时,该名称会显示在Gurobi日志中。

objcon(可选)
目标函数中的常数偏移量( <span>$</span>\mathrm{alpha}<span>$</span>问题声明)。

varnames(可选)
变量名为vector。字符向量。当存在时,该向量的每个元素都定义变量的名称。必须为每个列指定一个名称A.

名称(可选)
约束名为vector。字符向量。存在时,向量的每个元素都定义约束的名称。必须为每一行指定一个名称A.

二次目标和约束命名组件:

Q(可选)
二次目标矩阵。当礼物,Q必须是一个方阵,其行数和列数等于中的列数A.

quadcon(可选)
二次约束。列表的列表。当存在时,列表中的每个元素四孔定义单个二次约束: <span>$</span>x^TQc x+q^Tx\le\mathrm{beta}<span>$</span>

这个质量控制矩阵必须是一个平方矩阵,其行数和列数等于A..储存在模型$quadcon[[i]]$质量控制

这个Q向量定义约束中的线性项。它必须为每个列指定一个值A..储存在模型$quadcon[[i]]$Q

标量贝塔存储在模型$quadcon[[i]]$rhs。它定义约束的右侧值。

可选感觉字符串定义二次构造函数的意义。允许的值为'<','='“>”。如果不存在,则默认意义为'<'.储存在模型$quadcon[[i]]$感觉

可选的名字字符串定义二次约束的名称。它存储在模型$quadcon[[i]]$的名字

SOS约束命名组件:

sos(可选)
特殊有序集(SOS)约束。一份名单。当存在时,每个条目在求救定义单个SOS约束。SOS约束可以是类型1或类型2。SOS约束的类型<span>$</span>i<span>$</span>通过指定模型$sos[[i]]$类型. 1类SOS约束是一组变量,其中集合中最多有一个变量的值不是零。第2类SOS约束是一组有序的变量,其中最多有两个变量可以取非零值。如果两个值为非零,则它们在有序集中必须是连续的。SOS约束的成员通过将其索引放置在向量中来指定模型$sos[[i]]$指数.与SOS成员相关的权重以矢量形式提供模型$sos[[i]]$重量. 请参阅本节有关SOS约束的详细信息。

多目标命名组件:

multiobj(可选)
模型的多目标规范。一份名单。当存在时,每个条目在多目标定义多目标问题的单个目标。请参阅多个目标第节了解有关多目标优化的更多详细信息。每个目标<span>$</span>i<span>$</span>可能具有以下命名组件:
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定义窗体的最大常规约束

\begin{displaymath}x[\mathrm{resvar}]=\max\left\{\mathrm{con},x[j]:j\in\mathrm{vars}\right\}\end{displaymath}

每个条目可能具有以下命名组件:
resvar
指定通过模型$genconmax[[i]]$resvar.约束左侧变量的索引。
var
指定通过模型$genconmax[[i]]$var,它是约束条件右边的变量指标向量。
con(可选)
指定通过模型$genconmax[[i]]$骗局. 存在时,指定左侧的常数。默认值为<span>$</span>-\infty<span>$</span>
名称(可选)
指定通过模型$genconmax[[i]]$的名字.当出现时,指定<span>$</span>i<span>$</span>-th最大一般约束。

genconmin(可选)
一份名单。当存在时,每个条目在genconmax定义窗体的最小常规约束

\begin{displaymath}x[\mathrm{resvar}]=\min\left\{\mathrm{con},x[j]:j\in\mathrm{vars}\right\}\end{displaymath}

每个条目可能具有以下命名组件:
resvar
指定通过模型$genconmin[[i]]$resvar.约束左侧变量的索引。
var
指定通过模型$genconmin[[i]]$var,它是约束条件右边的变量指标向量。
con(可选)
指定通过模型$genconmin[[i]]$骗局. 存在时,指定左侧的常数。默认值为<span>$</span>\infty<span>$</span>
名称(可选)
指定通过模型$genconmin[[i]]$的名字.当出现时,指定<span>$</span>i<span>$</span>-th最小一般约束。

genconabs(可选)
一份名单。当存在时,每个条目在genconmax定义窗体的ABS常规约束

\begin{displaymath}x[\mathrm{resvar}] = \vert x[\mathrm{argvar}]\vert\end{displaymath}

每个条目可能具有以下命名组件:
resvar
指定通过模型$genconabs[[i]]$resvar.约束左侧变量的索引。
argvar
指定通过模型$genconabs[[i]]$argvar.约束条件右边变量的索引。
名称(可选)
指定通过模型$genconabs[[i]]$的名字.当出现时,指定<span>$</span>i<span>$</span>-一般约束。

genconand(可选)
一份名单。当存在时,每个条目在金科南德定义表单的和一般约束

\begin{displaymath}x[\mathrm{resvar}]=\mathrm{and}\{x[i]:i\in\mathrm{vars}\}\end{displaymath}

每个条目可能具有以下命名组件:
resvar
指定通过模型$genconand[[i]]$resvar.约束左侧变量的索引。
var
指定通过模型$genconand[[i]]$var,它是约束条件右边的变量指标向量。
名称(可选)
指定通过模型$genconand[[i]]$的名字.当出现时,指定<span>$</span>i<span>$</span>-第四,一般约束。

genconor(可选)
一份名单。当存在时,每个条目在genconor定义窗体的约束或常规约束

\begin{displaymath}x[\mathrm{resvar}]=\mathrm{or}\{x[i]:i\in\mathrm{vars}\}\end{displaymath}

每个条目可能具有以下命名组件:
resvar
指定通过模型$genconor[[i]]$resvar.约束左侧变量的索引。
var
指定通过模型$genconor[[i]]$var,它是约束条件右边的变量指标向量。
名称(可选)
指定通过模型$genconor[[i]]$的名字.当出现时,指定<span>$</span>i<span>$</span>-th或一般约束。

genconind(可选)
一份名单。当存在时,每个条目在根科宁定义窗体的指示符常规约束

\begin{displaymath}x[\mathrm{binvar}]=\mathrm{binval}\Rightarrow\sum\left(x\M……MRalternative{j]}{[[j]}\right)\mathrm{sense}\mathrm{rhs}\end{displaymath}

此约束声明当二进制变量 <span>$</span>x[\mathrm{binvar}]<span>$</span>需要的值宾瓦尔然后是线性约束 < span > < / span > \总和\离开美元(x [\ mathrm {var} \ MRalternative {(j)} {[[j]]}] \ cdot \ mathrm {val} \ MRalternative {(j)} {[[j]]} \) \ mathrm{感觉}\ mathrm {rhs} < span > < / span >美元必须保持。注意感觉是其中之一'=','<',或“>”为了平等(<span>$</span>=<span>$</span>),小于或等于(<span>$</span>\leq<span>$</span>)或大于或等于(< span > < /美元跨度> \组< span > < / span >美元)限制。每个条目可能具有以下命名组件:
宾瓦尔
指定通过模型$genconind[[i]]$宾瓦尔.隐含二进制变量的索引。
宾瓦尔
指定通过模型$genconind[[i]]$宾瓦尔.强制满足以下线性约束的二进制变量的值。它可以是0或1。
A.
指定通过模型$genconind[[i]]$A.. 参与隐含线性约束的变量系数向量。必须为指定一个值A.每列A.
感觉
指定通过模型$genconind[[i]]$感觉.隐含线性约束的意义。必须是'=','<',或“>”
rhs
指定通过模型$genconind[[i]]$rhs. 隐含线性约束的右侧值。
名称(可选)
指定通过模型$genconind[[i]]$的名字.当出现时,指定<span>$</span>i<span>$</span>-th指标一般约束。

先进的命名组件:

pwlobj(可选)
分段线性目标函数。一份名单。当存在时,每个条目在pwlobj为单个变量定义分段线性目标函数。正在定义目标函数的变量的索引存储在模型$pwlobj[[i]]$变量这个<span>$</span>x<span>$</span>定义分段线性函数的点的值存储在
模型$pwlobj[[i]]$x。在<span>$</span>x<span>$</span>向量必须按非降序排列<span>$</span>y<span>$</span>定义分段线性函数的点的值存储在模型$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)在示例中)。