8.1.2. 模型管理¶
此文件用于声明与模型控制相关的所有基本 API 函数,包括
创建具有默认参数设置的空模型;
添加新的变量和约束;
销毁加载的模型和所有关联数据。
示例
MdoI32 itmp = 0;
MdoReal dtmp = 0.0;
MdoMdl * model = NULL;
Mdo_createMdl(&model);
/* Set/get minimization sense. */
Mdo_setMaxObjSense(model);
itmp = Mdo_isMaxObjSense(model);
Mdo_setMinObjSense(model);
itmp = Mdo_isMinObjSense(model);
/* Set/get col information of this model */
int var_indices[] = {0, 1, 2, 3};
double objs[4] = {0};
double lbs[] = { 1.0, 2.0, 3.0, 4.0 };
double ubs[] = { 10.0, 20.0, 30.0, MDO_INFINITY };
double lbs_chk[4] = {0};
double ubs_chk[4] = {0};
MdoBool integers_array[4] = {0, 1, 1, 0};
MdoBool integers_chk[4] = {0};
const char* col_names_array[] = { "var0", "var1", "var2", "var3" };
char col_name_chk[1024] = { "\0" };
int col_index;
Mdo_getObjs(model, 4, var_indices, objs);
Mdo_setLbs(model, 4, var_indices, lbs);
Mdo_getLbs(model, 4, var_indices, lbs_chk);
Mdo_setUbs(model, 4, var_indices, ubs);
Mdo_getUbs(model, 4, var_indices, ubs_chk);
Mdo_setIntegers(model, 4, var_indices, integers_array);
Mdo_getIntegers(model, 4, var_indices, integers_chk);
Mdo_setColNames(model, 4, var_indices, col_names_array);
Mdo_getColName(model, 0, col_name_chk, 1024, NULL);
col_index = Mdo_getColIndex(model, "var1");
Mdo_setObjOffset(model, 10.0);
dtmp = Mdo_getObjOffset(model);
/* Set/get row information of this model */
int cons_indices[] = {0, 1};
double lhss[] = { -1, 10 };
double rhss[] = { 1, MDO_INFINITY };
double lhss_chk[2] = {0};
double rhss_chk[2] = {0};
const char* row_names_array[] = { "cons0", "cons1" };
char row_name_chk[1024] = { "\0" };
int row_index;
Mdo_setLhss(model, 2, cons_indices, lhss);
Mdo_getLhss(model, 2, cons_indices, lhss_chk);
Mdo_setRhss(model, 2, cons_indices, rhss);
Mdo_getRhss(model, 2, cons_indices, rhss_chk);
Mdo_setRowNames(model, 2, cons_indices, row_names_array);
Mdo_getRowName(model, 0, row_name_chk, 1024, NULL);
row_index = Mdo_getRowIndex(model, "cons1");
/* Check elements of this model */
int row_indices[] =
{
0, 0, 0, 0,
1, 1, 1
};
int col_indices[] =
{
0, 1, 2, 3,
0, 2, 3
};
const double elements_value[] =
{
1.0, 2.0, 3.0, 4.0,
-1.0, -2.0, -3.0
};
double elements_chk[7];
Mdo_setElements(model, 7, row_indices, col_indices, elements_value);
Mdo_getElements(model, 7, row_indices, col_indices, elements_chk);
/* Solve */
Mdo_solveProb(model);
/* Check dim. */
itmp = Mdo_getNumRows(model);
itmp = Mdo_getNumCols(model);
itmp = Mdo_getNumElements(model);
/* Delete */
int row_indices_delete[] =
{
0,
1
};
int col_indices_delete[] =
{
2,
3
};
Mdo_deleteElements(model, 2, row_indices_delete, col_indices_delete);
Mdo_getIntAttr(model, "NumEnts", &itmp);
Mdo_deleteRows(model, 2, cons_indices);
Mdo_getIntAttr(model, "NumConss", &itmp);
Mdo_deleteCols(model, 4, var_indices);
Mdo_getIntAttr(model, "NumVars", &itmp);
/* Free model */
Mdo_freeMdl(&model);
函数
-
MdoResult Mdo_createMdl(MdoMdlPtr *mdl)¶
此函数会创建具有默认参数设置的空 MindOpt 模型。
- Parameters
mdl – 指向模型指针内存地址的指针。
- Return
一个可指定函数状态的响应代码。
- See
-
void Mdo_freeMdl(MdoMdlPtr *mdl)¶
此函数会销毁模型及其所有关联数据。
- Parameters
mdl – 指向模型指针内存地址的指针。
- See
-
void Mdo_copyMdl(MdoMdlCptr mdl)¶
此函数会创建一个已有模型的复制版。
- Parameters
mdl – 指向模型的指针。
- Return
一个新模型的指针。如果创建失败,会返回 NULL 指针。
- See
-
MdoResult Mdo_loadModel(MdoMdlPtr mdl, MdoI32 num_cols, MdoI32 num_rows, const MdoI32 *bgn, const MdoI32 *indices, const MdoReal *values, const MdoReal *lbs, const MdoReal *ubs, const MdoReal *objs, const MdoBool *are_integers, MdoReal obj_const, MdoBool is_min, const MdoReal *lhss, const MdoReal *rhss, const char *const *col_names, const char *const *row_names)¶
载入问题。
- Parameters
mdl – 指向模型的指针。
num_cols – 列数(变量)。
num_rows – 行数(约束)。
bgn – 一个可定义 CSC(压缩稀疏列)矩阵的起始索引的整数数组。此处,
bgn
部分必须包含num_cols + 1
个元素;因此最后一列的长度为bgn[num_cols] - bgn[num_cols - 1]
。indices – 一个可定义 CSC 矩阵中非零元素的列索引的整数数组。
values – 一个可定义 CSC 矩阵中非零元素值的实数数组。
lbs – 包含变量下界的实数数组。可以为
NULL
;此时将使用 0 作为所有下界的默认值。ubs – 包含变量上界的实数数组。可以为
NULL
;此时将使用 ∞ 作为所有上界的默认值。objs – 包含线性目标系数的实数数组。可以为
NULL
;此时将使用 0 作为所有目标系数的默认值。are_integers – 一个可指定变量是否为整数变量的标志数组。可以为
NULL
;此时所有变量都将视为连续变量。obj_const – 目标偏移量。
is_min – 一个可指定目标函数是否拥有最小化指向的布尔标志。
lhss – 包含约束下界(LHS 值)的实数数组。可以为
NULL
;此时将使用−∞
作为所有下界的默认值。rhss – 包含约束上界(RHS 值)的实数数组。可以为
NULL
;此时将使用∞
作为所有上界的默认值。col_names – 包含列(变量)名称的指针数组。可以为
NULL
。row_names – 包含行(约束)名称的指针数组。可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
Note
此处使用包含列起点 (
bgn
)、行索引 (indices
) 和非零元素 (values
) 的标准压缩稀疏列 (CSC) 矩阵来指定约束矩阵。请注意,bgn
部分必须包含num_cols + 1
个元素;因此最后一列的长度为bgn[num_cols] - bgn[num_cols - 1]
。
-
MdoResult Mdo_addCol(MdoMdlPtr mdl, MdoReal lb, MdoReal ub, MdoReal obj, MdoI32 size, const MdoI32 *indices, const MdoReal *values, const char *name, MdoBool is_integer)¶
向模型引入一个新列。
- Parameters
mdl – 指向模型的指针。
lb – 下界值。
ub – 上界值。
obj – 目标系数。
size – 非零条目数,可以为零。
indices – 包含所有非零元素索引的数组,可以为
NULL
。values – 包含所有非零元素值的数组,可以为
NULL
。name – 列名称,可以为
NULL
。is_integer – 一个可指定是否为整数变量的标志。
- Return
一个可指定函数状态的响应代码。
- See
Note
此函数会向模型中添加新列。列由以下元素定义:
目标系数。
变量的下界值和上界值。
列的非零元素。
列类型。
列名称。
-
MdoResult Mdo_addCols(MdoMdlPtr mdl, MdoI32 num_cols, const MdoReal *lbs, const MdoReal *ubs, const MdoReal *objs, const MdoI32 *bgn, const MdoI32 *indices, const MdoReal *values, const char *const *col_names, const MdoBool *are_integers)¶
向模型中添加多个列。
- Parameters
mdl – 指向模型的指针。
num_cols – 列数(变量)。
lbs – 包含变量下界的实数数组。可以为
NULL
;此时将使用 0 作为所有下界的默认值。ubs – 包含变量上界的实数数组。可以为
NULL
;此时将使用∞
作为所有上界的默认值。objs – 包含线性目标系数的实数数组。可以为
NULL
;此时将使用 0 作为所有目标系数的默认值。bgn – 一个可定义 CSC(压缩稀疏列)矩阵的起始索引的整数数组。此处,bgn 部分必须包含
num_cols + 1 elements
;因此最后一列的长度为bgn[num_cols] - bgn[num_cols - 1]
。indices – 一个可定义 CSC 矩阵中非零元素的列索引的整数数组。
values – 一个可定义 CSC 矩阵中非零元素值的实数数组。
col_names – 包含列(变量)名称的指针数组。可以为
NULL
。are_integers – 一个可指定变量是否为整数变量的标志数组。可以为
NULL
;此时所有变量都将视为连续变量。
- Return
一个可指定函数状态的响应代码。
- See
Note
此函数会向模型中添加多个列。列由以下元素定义:
目标系数。
变量的下界值和上界值。
列的非零元素。
列类型。
列名称。
-
MdoResult Mdo_addRow(MdoMdlPtr mdl, MdoReal lhs, MdoReal rhs, MdoI32 size, const MdoI32 *indices, const MdoReal *values, const char *name)¶
向模型引入一个新线性约束。
- Parameters
mdl – 指向模型的指针。
lhs – 左侧值。
rhs – 右侧值。
size – 非零条目数,可以为
0
。indices – 包含所有非零元素索引的数组,可以为
NULL
。values – 包含所有非零元素值的数组,可以为
NULL
。name – 行名称,可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
- See
Note
此函数会向模型中添加线性约束。线性约束定义为 \(l \leq \sum_j a_j x_j \leq r\),其中 \(l\) (resp. \(r\)) 表示线性约束的左侧 (resp. right) 值,而 \(a_j\) 表示非零系数。
-
MdoResult Mdo_addRows(MdoMdlPtr mdl, MdoI32 num_rows, const MdoReal *lhss, const MdoReal *rhss, const MdoI32 *bgn, const MdoI32 *indices, const MdoReal *values, const char *const *row_names)¶
此函数会向模型中添加多个行。
- Parameters
mdl – 指向模型的指针。
num_rows – 行数(约束)。
lhss – 包含约束下界(LHS 值)的实数数组。可以为
NULL
;此时将使用−∞
作为所有下界的默认值。rhss – 包含约束上界(RHS 值)的实数数组。可以为
NULL
;此时将使用∞
作为所有上界的默认值。bgn – 一个可定义 CSR(压缩稀疏行)矩阵的起始索引的整数数组。此处,bgn 部分必须包含
num_rows + 1 elements
;因此最后一行的长度为bgn[num_rows] - bgn[num_rows - 1]
。indices – 一个可定义 CSR 矩阵中非零元素的行索引的整数数组。
values – 一个可定义 CSR 矩阵中非零元素值的实数数组。
row_names – 包含行(约束)名称的指针数组。可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
- See
-
MdoResult Mdo_getCols(MdoMdlCptr mdl, MdoI32 num_cols, MdoI32 *col_indices, MdoI32 *bgn, MdoI32 *indices, MdoReal *values, MdoI32 size, MdoI32 *real_size)¶
从约束矩阵中提取一组列。
- Parameters
mdl – 指向模型的指针。
num_cols – 待访问的列数。
col_indices – 待访问的列索引。
bgn – 一个可定义 CSC(压缩稀疏列)矩阵的起始索引的整数数组。此处,
bgn
部分必须包含num_cols + 1 elements
;因此最后一列的长度为bgn[num_cols] - bgn[num_cols - 1]
。可以为NULL
。indices – 一个可定义 CSC 矩阵中非零元素的列索引的整数数组。可以为
NULL
。values – 一个可定义 CSC 矩阵中非零元素值的实数数组。可以为
NULL
。size –
indices
或values
的当前长度。real_size –
indices
或values
所需的最小长度。
- Return
一个可指定函数状态的响应代码。
- See
Note
用户可通过此函数提取约束矩阵中的一组列。缓冲区数组
indices
和values
必须由用户预先分配。如果这些缓冲区数组的长度不够,则只会返回前size
个非零元素,而real_size
将保留所需的最小长度。下面列出了此函数的典型用法。
此函数可通过为
bgn
、indices
或values
传递NULL
进行调用,以获得所需的最小长度real_size
。使用
real_size
元素为indices
和values
分配内存,使用num_cols
元素为indices
分配内存。再次调用此函数,以获取约束矩阵的列切片。
-
MdoResult Mdo_getRows(MdoMdlCptr mdl, MdoI32 num_rows, MdoI32 *row_indices, MdoI32 *bgn, MdoI32 *indices, MdoReal *values, MdoI32 size, MdoI32 *real_size)¶
从约束矩阵中提取一组行。
- Parameters
mdl – 指向模型的指针。
num_rows – 待访问的行数。
row_indices – 待访问的行索引。
bgn – 一个可定义 CSR(压缩稀疏行)矩阵的起始索引的整数数组。此处,
bgn
部分必须包含num_rows + 1
个元素;因此最后一行的长度为bgn[num_rows] - bgn[num_rows - 1]
。可以为NULL
。indices – 一个可定义 CSR 矩阵中非零元素的行索引的整数数组。可以为 NULL。
values – 一个可定义 CSR 矩阵中非零元素值的实数数组。可以为
NULL
。size –
indices
或values
的当前长度。real_size –
indices
或values
所需的最小长度。
- Return
一个可指定函数状态的响应代码。
- See
Note
用户可通过此函数提取约束矩阵中的一组行。缓冲区数组
indices
和values
必须由用户预先分配。如果这些缓冲区数组的长度不够,则只会返回前size
个非零元素,而real_size
将保留所需的最小长度。下面列出了此函数的典型用法。
此函数可通过为
bgn
、indices
或values
传递NULL
进行调用,以获得所需的最小长度real_size
。使用
real_size
元素为indices
和values
分配内存,使用num_cols
元素为indices
分配内存。再次调用此函数,以获取约束矩阵的行切片。
-
MdoResult Mdo_addSymMat(MdoMdlPtr mdl, MdoI32 dim_mat, const char *mat_name)¶
此函数会向模型添加块变量(对称正半定矩阵)。
- Parameters
mdl – 指向模型的指针。
dim_mat – 维数(块变量的行数)。
mat_name – 块变量名,可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
- See
-
MdoResult Mdo_addSymMats(MdoMdlPtr mdl, MdoI32 num_mats, const MdoI32 *dim_mats, const char *const *mat_names)¶
此函数会向模型添加多个块变量。
- Parameters
mdl – 指向模型的指针。
num_mats – 待添加的块变量的个数。
dim_mat – 一个包含每个块变量的维数的数组。
mat_name – 一个保存块变量名称的数组,可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_replaceSymMatObjs(MdoMdlPtr mdl, MdoI32 mat_index, MdoI32 size, const MdoI32 *mat_row_indices, const MdoI32 *mat_col_indices, const MdoReal *mat_values)¶
此函数会替换目标函数中指定块变量。
- Parameters
mdl – 指向模型的指针。
mat_index – 需要替换的块变量索引。
size – 要替换的块变量的元素个数。
mat_row_indices – 一个保存块变量的行索引的数组。
mat_col_indices – 一个保存块变量的列索引的数组。
mat_values – 一个保存块变量相关联的元素值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_replaceSymMatElements(MdoMdlPtr mdl, MdoI32 row_index, MdoI32 mat_index, MdoI32 size, const MdoI32 *mat_row_indices, const MdoI32 *mat_col_indices, const MdoReal *mat_values)¶
此函数会替换约束中指定块变量。
- Parameters
mdl – 指向模型的指针。
row_index – 约束行索引。
mat_index – 块变量索引。
size – 要替换的块变量的元素个数。
mat_row_indices – 一个保存块变量的行索引的数组。
mat_col_indices – 一个保存块变量的列索引的数组。
mat_values – 一个保存与块变量相关联的元素值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getRealAttrSymMat(const MdoMdlPtr mdl, const char *att, const MdoI32 mat_index, MdoI32 size, const MdoI32 *mat_row_indices, const MdoI32 *mat_col_indices, MdoReal *mat_values)¶
此函数会检索与指定块变量属性相关联的值。
- Parameters
mdl – 指向模型的指针。
att – 要访问的实值对称变量属性。
mat_index – 块变量索引。
size – 要访问的块变量的元素个数。
mat_row_indices – 一个保存块变量的行索引的数组。
mat_col_indices – 一个保存块变量的列索引的数组。
mat_values – 一个保存与指定块变量属性相关联的值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoBool Mdo_isMinObjSense(MdoMdlCptr mdl)¶
此函数会检查目标函数是否具有最小化指向。
- Parameters
mdl – 指向模型的常量指针。
- Return
一个可指定目标函数是否拥有最小化指向的布尔标志。
-
MdoBool Mdo_isMaxObjSense(MdoMdlCptr mdl)¶
此函数会检查目标函数是否具有最大化指向。
- Parameters
mdl – 指向模型的常量指针。
- Return
一个可指定目标函数是否拥有最大化指向的布尔标志。
-
void Mdo_setMinObjSense(MdoMdlPtr mdl)¶
此函数会将已加载问题的目标函数更改为最小化指向。
- Parameters
mdl – 指向模型的指针。
-
void Mdo_setMaxObjSense(MdoMdlPtr mdl)¶
此函数会将已加载问题的目标函数更改为最大化指向。
- Parameters
mdl – 指向模型的指针。
-
MdoReal Mdo_getObjOffset(MdoMdlCptr mdl)¶
此函数会检索目标偏移量(常数项)。
- Parameters
mdl – 指向模型的常量指针。
- Return
目标偏移量(常数项)的值。
-
void Mdo_setObjOffset(MdoMdlPtr mdl, MdoReal obj_fix)¶
此函数会检索目标偏移量(常数项)。
- Parameters
mdl – 指向模型的指针。
obj_fix – 新的目标偏移量(固定成本)。
-
MdoI32 Mdo_getNumRows(MdoMdlCptr mdl)¶
此函数会检索总行数。
- Parameters
mdl – 指向模型的常量指针。
- Return
总行数。
-
MdoI32 Mdo_getNumCols(MdoMdlCptr mdl)¶
此函数会检索总列数。
- Parameters
mdl – 指向模型的常量指针。
- Return
总列数。
-
MdoI32 Mdo_getNumElements(MdoMdlCptr mdl)¶
此函数会检索非零条目总数。
- Parameters
mdl – 指向模型的常量指针。
- Return
非零条目总数。
-
MdoResult Mdo_getObjs(MdoMdlCptr mdl, MdoI32 size, const MdoI32 *indices, MdoReal *objs)¶
此函数会检索一组目标系数。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
objs – 包含每个指定变量的当前目标系数的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setObjs(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const MdoReal *objs)¶
此函数会修改一组目标系数。
- Parameters
mdl – 指向模型的指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
objs – 包含每个指定变量的新目标系数的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getLbs(MdoMdlCptr mdl, MdoI32 size, const MdoI32 *indices, MdoReal *lbs)¶
此函数会检索一组变量下界。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
lbs – 包含每个指定变量的当前下界的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setLbs(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const MdoReal *lbs)¶
此函数会修改一组变量下界。
- Parameters
mdl – 指向模型的指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
lbs – 包含每个指定变量的新下界的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getUbs(MdoMdlCptr mdl, MdoI32 size, const MdoI32 *indices, MdoReal *ubs)¶
此函数会检索一组变量上界。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
ubs – 包含每个指定变量的当前上界的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setUbs(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const MdoReal *ubs)¶
此函数会修改一组变量上界。
- Parameters
mdl – 指向模型的指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
ubs – 包含每个指定变量的新上界的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getIntegers(MdoMdlCptr mdl, MdoI32 size, const MdoI32 *indices, MdoBool *are_integers)¶
此函数会检索用于规定每个指定变量的当前变量类型(整数变量或非整数变量)的一组标志。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
are_integers – 包含每个指定变量的当前变量类型(整数或非整数)的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setIntegers(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const MdoBool *are_integers)¶
此函数会修改一组变量类型(整数变量或非整数变量)。
- Parameters
mdl – 指向模型的指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
are_integers – 包含每个指定变量的新变量类型(整数或非整数)的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getColName(MdoMdlCptr mdl, MdoI32 j, char *col_name, MdoI32 size, MdoI32 *real_size)¶
此函数会返回列(变量)名称。
- Parameters
mdl – 指向模型的常量指针。
j – 列索引。
col_name – 列名称。可以为
NULL
。size – 最大字符串长度。
real_size – 请求名称长度的实际长度。可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
Note
如果名称的长度不够,则只会返回名称的前
size
个字符,而请求名称的实际长度将存储在real_size
中。请注意,如果名称为NULL
,则将返回名称的实际长度。
-
MdoResult Mdo_setColNames(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const char *const *col_names)¶
此函数会修改一组变量名称。
- Parameters
mdl – 指向模型的指针。
size – 待访问的变量数。
indices – 包含待访问的变量索引的数组。
col_names – 每个指定变量的新名称数组。
- Return
一个可指定函数状态的响应代码。
-
MdoI32 Mdo_getColIndex(MdoMdlptr mdl, const char *name)¶
此函数会返回模型中列名称的列索引。
- Parameters
mdl – 指向模型的常量指针。
name – 列名称。
- Return
列索引,或
-1
(如果未找到列名称)。
-
MdoResult Mdo_getLhss(MdoMdlptr mdl, MdoI32 size, const MdoI32 *indices, MdoReal *lhss)¶
此函数会返回每个指定约束的一组 LHS(左侧)值。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的约束数量。
indices – 包含待访问的约束索引的数组。
lhss – 包含每个指定约束的当前 LHS 值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setLhss(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const MdoReal *lhss)¶
此函数会修改每个指定约束的一组 LHS(左侧)值。
- Parameters
mdl – 指向模型的指针。
size – 待访问的约束数量。
indices – 包含待访问的约束索引的数组。
lhss – 包含每个指定约束的新 LHS 值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getRhss(MdoMdlptr mdl, MdoI32 size, const MdoI32 *indices, MdoReal *rhss)¶
此函数会检索每个指定约束的一组 RHS(右侧)值。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的约束数量。
indices – 包含待访问的约束索引的数组。
rhss – 包含每个指定约束的当前 RHS 值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setRhss(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const MdoReal *rhss)¶
此函数会修改每个指定约束的一组 RHS(右侧)值。
- Parameters
mdl – 指向模型的指针。
size – 待访问的约束数量。
indices – 包含待访问的约束索引的数组。
rhss – 包含每个指定约束的新 RHS 值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_getRowName(MdoMdlptr mdl, MdoI32 i, char *row_name, MdoI32 size, MdoI32 *real_size)¶
此函数会返回行(变量)名称。
- Parameters
mdl – 指向模型的常量指针。
i – 行索引。
row_name – 行名称。可以为
NULL
。size – 最大字符串长度。
real_size – 请求名称长度的实际长度。可以为
NULL
。
- Return
一个可指定函数状态的响应代码。
Note
如果名称的长度不够,则只会返回名称的前
size
个字符,而请求名称的实际长度将存储在real_size
中。请注意,如果名称为NULL
,则将返回名称的实际长度。
-
MdoResult Mdo_setRowNames(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices, const char *const *row_names)¶
此函数会修改一组约束名称。
- Parameters
mdl – 指向模型的指针。
size – 待访问的约束数量。
indices – 包含待访问的约束索引的数组。
row_names – 每个指定约束的新名称数组。
- Return
一个可指定函数状态的响应代码。
-
MdoI32 Mdo_getRowIndex(MdoMdlptr mdl, const char *name)¶
此函数会返回模型中行名称的行索引。
- Parameters
mdl – 指向模型的常量指针。
name – 行名称。
- Return
行索引,或
-1
(如果未找到行名称)。
-
MdoResult Mdo_getElements(MdoMdlptr mdl, MdoI32 size, const MdoI32 *row_indices, const MdoI32 *col_indices, MdoReal *values)¶
此函数会检索约束矩阵中所有指定元素值的集合。
- Parameters
mdl – 指向模型的常量指针。
size – 待访问的元素数。
row_indices – 包含待访问元素的行索引的数组。
col_indices – 包含待访问元素的列索引的数组。
values – 包含约束矩阵中所有指定元素的当前非零值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setElements(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *row_indices, const MdoI32 *col_indices, const MdoReal *values)¶
此函数会修改约束矩阵中所有指定元素值的集合。
- Parameters
mdl – 指向模型的指针。
size – 待访问的元素数。
row_indices – 包含待访问元素的行索引的数组。
col_indices – 包含待访问元素的列索引的数组。
values – 包含约束矩阵中所有指定元素的新非零值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_setQuadraticElements(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *col_indices1, const MdoI32 *col_indices2, const MdoReal *values)¶
此函数会修改二次规划的二次项矩阵中所有指定元素值的集合。
- Parameters
mdl – 指向模型的指针。
size – 待访问的元素数。
col_indices1 – 包含待访问元素的第一个变量索引的数组。
col_indices2 – 包含待访问元素的第二个变量索引的数组
values – 包含所有指定元素的新非零值的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_deleteRows(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices)¶
此函数会从模型中删除一组行。
- Parameters
mdl – 指向模型的指针。
size – 待删除的行数。
indices – 包含待删除的行索引的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_deleteCols(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *indices)¶
此函数会从模型中删除一组列。
- Parameters
mdl – 指向模型的指针。
size – 待删除的列数。
indices – 包含待删除的列索引的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_deleteElements(MdoMdlPtr mdl, MdoI32 size, const MdoI32 *row_indices, const MdoI32 *col_indices)¶
此函数会删除约束矩阵中的一组元素。
- Parameters
mdl – 指向模型的指针。
size – 待删除的元素数。
row_indices – 包含待删除元素的行索引的数组。
col_indices – 包含待删除元素的列索引的数组。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_deleteAllElements(MdoMdlPtr mdl)¶
此函数会删除约束矩阵中的所有元素。
- Parameters
mdl – 指向模型的指针。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_deleteAllQuadraticElements(MdoMdlPtr mdl)¶
此函数会删除二次规划的二次项矩阵中的所有元素。
- Parameters
mdl – 指向模型的指针。
- Return
一个可指定函数状态的响应代码。
-
MdoResult Mdo_relaxIntegrality(MdoMdlPtr mdl)¶
该函数会删除模型中所有整数值的要求,并将其转化为连续松弛问题。
- Parameters
mdl – 指向模型的指针。
- Return
一个可指定函数状态的响应代码。