GRBloadmodel


GRBloadmodel

int GRBloadmodel( 格本夫 *环境,
GRB模型 **modelP,
常量字符 *Pname,
int 努瓦,
int numconstrs,
int objsense,
双重的 objcon,
双重的 *obj,
烧焦 *感觉,
双重的 *rhs,
int *vbeg,
int *弗伦,
int *维德,
双重的 *vval,
双重的 *磅,
双重的 *乌兰巴托,
烧焦 *vtype,
常量字符 **varnames,
常量字符 **(姓名)

使用提供的参数初始化模型数据(目标函数、变量边界、约束矩阵等),创建新的优化模型。然后,模型可以进行优化或修改(例如,添加变量或约束、更改变量类型或边界等)。

如果约束矩阵可能包含超过20亿个非零值,则应考虑使用GRBX负荷模型这个程序的变体。

返回值:

非零返回值表示创建模型时出现问题。请参阅错误代码表获取可能返回值的列表。可通过调用GRBgeterrormsg.

论据:

环境:应在其中创建新模型的环境。请注意,新模型会获得此环境的副本,因此对原始环境的后续修改(例如,参数更改)不会影响新模型。请使用GRBgetenv修改与模型关联的环境。

模型:指向新创建模型的指针应放置的位置。

Pname:模型的名称。

纽瓦:模型中变量的数量。

numconstrs:模型中的约束数。

奥布杰森斯:目标函数的意义。允许值为1(最小化)或-1(最大化)。

奥比肯:恒定目标偏移量。

obj:新变量的目标系数。此参数可以是无效的,在这种情况下,目标系数设置为0.

感觉:新约束的含义。选项包括'='(相等),'<'(小于或等于),或'>'(大于或等于)。也可以使用常量GRB_相等,GRB_小于等于GRB_大于等于.

rhs:新约束的右侧值。此参数可以是无效的如果您没有添加任何约束。

vbeg:约束矩阵非零值在压缩稀疏列(CSC)中传递到此例程格式。约束矩阵中的每列表示为索引值对列表,其中每个索引项提供非零值系数的约束索引,每个值项提供相应的非零值。模型中的每个变量都有一个vbeg弗伦值,指示该变量在维德维瓦尔数组,以及该变量的非零值数。因此,例如,如果vbeg[2]=10vlen[2]=2,这表明变量2有两个与之关联的非零值。它们的约束指数可在中找到维德[10]维德[11],这些非零的数值可在中找到vval[10]vval[11].

弗伦:与每个变量关联的约束矩阵非零值的数目。请参阅vbeg关于更多信息的争论。

维德:与非零值关联的约束索引。请参见对的描述vbeg关于更多信息的争论。

维瓦尔:与约束矩阵非零关联的数值。请参阅vbeg关于更多信息的争论。

:新变量的下限。这一论点可能是错误的无效的,在这种情况下,所有变量的下界为0.

乌兰巴托:新变量的上限。这一论点可能是错误的无效的,在这种情况下,所有变量的上界都是无限的。

V型:变量的类型。选项为GRB_连续,GRB_二进制,GRB_整数,GRB_半导体GRB_半整数. 这一论点可能是错误的无效的,在这种情况下,假设所有变量都是连续的。

varnames:新变量的名称。此参数可以是无效的,在这种情况下,所有变量都有默认名称。

姓名:新约束的名称。此参数可以是无效的,在这种情况下,所有约束都被指定为默认名称。

重要提示:

我们建议您一次使用一个约束或一个变量构建一个模型GRBaddconstr格巴德瓦,而不是使用此例程一次加载整个约束矩阵。它更简单,更不容易出错,并且不会引入显著的开销。

用法示例:

/*x+y+y+2 z+2 z+2 x+y+2 z z受x+2 y+2 y+2 z z+2 z受x+2 y+2 y+2 z z+2 z z z z受x+2 y+2 y+2 y+2 z z z受x+2 y+2 y+2 y+2 y+3 z z z z z<=4 x+3 x+y,y,y,y,z二进制,z,z二进制,z,z,z,z,z元=3;INTconconcons=2;INTVBEG=2;INTVBEG元元元元组[[3+y+y+y+y+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2 z z z z z z z z z z z z z+2+2+2+2+2+2+2 z z z z z z z z z z z z z z z z z z z z z 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);