GRBloadmodel
int | GRBloadmodel( | GRBenv | * env, |
GRBmodel | * * modelP, | ||
const char | * Pname, | ||
int | numvars, | ||
int | numconstrs, | ||
int | objsense, | ||
双 | objcon, | ||
双 | * obj, | ||
字符 | *感, | ||
双 | *, | ||
int | * vbeg, | ||
int | * vlen, | ||
int | * vind, | ||
双 | * vval, | ||
双 | *磅, | ||
双 | *乌兰巴托, | ||
字符 | * vtype, | ||
const char | * * varnames, | ||
const char | * * constrnames) |
创建一个新的优化模型,使用所提供的参数初始化模型数据(目标函数、变量边界约束矩阵,等等)。然后准备优化模型,或者修改(例如,添加变量或约束,改变变量类型或边界,等等)。
如果你的约束矩阵可能包含超过20亿个非零值,您应该考虑使用GRBXloadmodel这个例程的变体。
返回值:
一个非零返回值表明一个问题发生在创建模型。指的是错误代码表的列表可能的返回值。细节错误可以通过调用GRBgeterrormsg。
参数:
env:环境应该创建新的模型。注意,新模型得到一份这样的环境下,所以后续修改原来的环境(例如,参数更改)不会影响新模型。使用GRBgetenv修改与模型相关的环境。
modelP:位置的指针指向新创建的模型应该被放置。
Pname:模型的名称。
numvars:在模型中变量的数量。
numconstrs:在模型中约束的数量。
objsense:目标函数的意义。允许的值是1(最小化)或1(最大化)。
objcon:恒定目标偏移量。
obj:目的新变量的系数。这个观点可以零,在这种情况下,目标系数设置0.0。
感觉:新的约束的感觉。选项是“=”(相等),“<”(小于或等于),或“>”(大于或等于)。您还可以使用常量GRB_EQUAL,GRB_LESS_EQUAL,或GRB_GREATER_EQUAL。
园艺学会:右边的值的新限制。这个观点可以零如果你不添加任何约束。
vbeg:约束矩阵非零值被传递到这个例程在压缩稀疏列(CSC)格式。约束矩阵的每一列都被表示为一个索引值对列表,其中每个索引条目提供了一个非零系数约束指数,和每个值条目提供了相应的非零值。每个变量在模型中有一个vbeg和vlen值,表示该变量的非零的开始位置vind和vval数组和变量的非零值的数量,分别。因此,例如,如果vbeg [2] = 10和vlen [2] = 2,这将表明,与之关联的变量2有两个非零值。他们的约束指标中可以找到vind [10]和vind [11],这些非零的数值可以在找到vval [10]和vval [11]。请注意,矩阵的列必须下令自始至终,这意味着中的值vbeg必须引入。
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 + 2 z最大化受到x + 2 y + 3 z < = 4 x + y > = 1 x, y, z二进制int * / var = 3;int若干= 2;int vbeg [] = {0、2、4};int vlen [] = {2 2 1};int vind [] = {0 1 0 1 0};双vval [] = {1.0, 1.0, 2.0, 1.0, 3.0};双obj [] = {1.0, 1.0, 2.0};char[]感觉= {GRB_LESS_EQUAL, GRB_GREATER_EQUAL};双rhs [] = {4.0, 1.0};char vtype [] = {GRB_BINARY、GRB_BINARY GRB_BINARY}; error = GRBloadmodel(env, &model, "example", vars, constrs, -1, 0.0, obj, sense, rhs, vbeg, vlen, vind, vval, NULL, NULL, vtype, NULL, NULL);