GRBXloadmodel
GRBXloadmodel
int | GRBXloadmodel( | GRBenv | * env, |
GRBmodel | * * modelP, | ||
const char | * Pname, | ||
int | numvars, | ||
int | numconstrs, | ||
int | objsense, | ||
双 | objcon, | ||
双 | * obj, | ||
字符 | *感, | ||
双 | *, | ||
size_t | * vbeg, | ||
int | * vlen, | ||
int | * vind, | ||
双 | * vval, | ||
双 | *磅, | ||
双 | *乌兰巴托, | ||
字符 | * vtype, | ||
const char | * * varnames, | ||
const char | * * constrnames) |
的size_t
版本的GRBloadmodel.计数非零值的实参是类型的size_t
在这个版本中,支持具有超过20亿个非零值的模型。
创建一个新的优化模型,使用提供的参数初始化模型数据(目标函数、变量边界、约束矩阵等)。然后,模型就可以进行优化或修改了(例如,添加变量或约束,改变变量类型或界限,等等)。
返回值:
非零返回值表明在创建模型时发生了问题。指的是错误代码表中可能的返回值列表。关于错误的详细信息可以通过调用GRBgeterrormsg.
参数:
env:创建新模型的环境。注意,新模型获得了该环境的副本,因此对原始环境的后续修改(例如参数更改)不会影响新模型。使用GRBgetenv修改与模型相关联的环境。
modelP:指向新创建模型的指针应该放置的位置。
Pname:型号名称。
numvars:模型中变量的数量。
numconstrs:模型中约束的数量。
objsense:目标函数的意义。允许的值是1(最小化)或-1(最大化)。
objcon:不变的目标偏移量。
obj:新变量的目标系数。这个论点可以是零,此时目标系数设为0.0.
感觉:新约束的感觉。选项是“=”(相等),“<”(小于或等于),或“>”(大于或等于)。你也可以使用常量GRB_EQUAL,GRB_LESS_EQUAL,或GRB_GREATER_EQUAL.
园艺学会:新约束的右边值。这个论点可以是零,在这种情况下,右边的值被设置为0.0.
vbeg约束矩阵的非零值以压缩稀疏列(CSC)格式传递到这个例程。约束矩阵中的每一列都表示为索引值对的列表,其中每个索引项提供非零系数的约束索引,而每个值项提供相应的非零值。模型中的每个变量都有一个vbeg和vlen的值,指示该变量的非零的起始位置vind和vval数组和该变量的非零值的数量。例如,ifvbeg [2] = 10和vlen [2] = 2,表示变量2有两个非零值。它们的约束指标可在vind [10]和vind [11],这些非零的数值可以在vval [10]和vval [11].
vlen:每个变量对应的约束矩阵非零值的个数。见描述的vbeg争论以获得更多信息。
vind:与非零值相关的约束索引。见描述的vbeg争论以获得更多信息。
vval:与约束矩阵非零相关的数值。见描述的vbeg争论以获得更多信息。
磅:新变量的下界。这个论点可以是零,在这种情况下,所有变量的下界是0.0.
乌兰巴托:新变量的上界。这个论点可以是零,在这种情况下,所有变量的上界都是无限的。
vtype:变量的类型。选项是GRB_CONTINUOUS,GRB_BINARY,GRB_INTEGER,GRB_SEMICONT,或GRB_SEMIINT.这个论点可以是零,在这种情况下,所有变量都假定是连续的。
varnames:新变量的名称。这个论点可以是零,在这种情况下,所有变量都有默认名称。
constrnames:新约束的名称。这个论点可以是零,在这种情况下,所有约束都给出默认名称。
重要提示:
我们建议您每次使用一个约束或一个变量来构建模型GRBaddconstr或GRBaddvar,而不是使用这个例程一次加载整个约束矩阵。它更简单,更不容易出错,而且不会带来重大开销。
使用示例:
/*将x + y + 2z最大化,服从x + 2y + 3z <= 4 x + y >= 1 x, y, z二进制*/ int var = 3;Int const = 2;Size_t vbeg[] = {0,2,4};Int vlen[] = {2, 2, 1};Int vind[] = {0, 1, 0, 1};Double vval[] = {1.0, 1.0, 2.0, 1.0, 3.0};Double obj[] = {1.0, 1.0, 2.0};char sense[] = {GRB_LESS_EQUAL, GRB_GREATER_EQUAL};Double rhs[] = {4.0, 1.0};char vtype[] = {GRB_BINARY, GRB_BINARY, GRB_BINARY}; error = GRBXloadmodel(env, &model, "example", vars, constrs, -1, 0.0, obj, sense, rhs, vbeg, vlen, vind, vval, NULL, NULL, vtype, NULL, NULL);