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

Mdo_freeMdl()

void Mdo_freeMdl(MdoMdlPtr *mdl)

此函数会销毁模型及其所有关联数据。

Parameters
  • mdl – 指向模型指针内存地址的指针。

See

Mdo_createMdl()

void Mdo_copyMdl(MdoMdlCptr mdl)

此函数会创建一个已有模型的复制版。

Parameters
  • mdl – 指向模型的指针。

Return

一个新模型的指针。如果创建失败,会返回 NULL 指针。

See

Mdo_freeMdl()

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

Mdo_addRow(), Mdo_addCols(), Mdo_addRows()

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

Mdo_addRow(), Mdo_addCol(), Mdo_addRows()

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

Mdo_addCol(), Mdo_addRows(), Mdo_addCols()

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

Mdo_addCol(), Mdo_addRow(), Mdo_addCols()

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

  • sizeindicesvalues 的当前长度。

  • real_sizeindicesvalues 所需的最小长度。

Return

一个可指定函数状态的响应代码。

See

Mdo_getRows()

Note

用户可通过此函数提取约束矩阵中的一组列。缓冲区数组 indicesvalues 必须由用户预先分配。如果这些缓冲区数组的长度不够,则只会返回前 size 个非零元素,而 real_size 将保留所需的最小长度。

下面列出了此函数的典型用法。

  1. 此函数可通过为 bgnindicesvalues 传递 NULL 进行调用,以获得所需的最小长度 real_size

  2. 使用 real_size 元素为 indicesvalues 分配内存,使用 num_cols 元素为 indices 分配内存。

  3. 再次调用此函数,以获取约束矩阵的列切片。

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

  • sizeindicesvalues 的当前长度。

  • real_sizeindicesvalues 所需的最小长度。

Return

一个可指定函数状态的响应代码。

See

Mdo_getCols()

Note

用户可通过此函数提取约束矩阵中的一组行。缓冲区数组 indicesvalues 必须由用户预先分配。如果这些缓冲区数组的长度不够,则只会返回前 size 个非零元素,而 real_size 将保留所需的最小长度。

下面列出了此函数的典型用法。

  1. 此函数可通过为 bgnindicesvalues 传递 NULL 进行调用,以获得所需的最小长度 real_size

  2. 使用 real_size 元素为 indicesvalues 分配内存,使用 num_cols 元素为 indices 分配内存。

  3. 再次调用此函数,以获取约束矩阵的行切片。

MdoResult Mdo_addSymMat(MdoMdlPtr mdl, MdoI32 dim_mat, const char *mat_name)

此函数会向模型添加块变量(对称正半定矩阵)。

Parameters
  • mdl – 指向模型的指针。

  • dim_mat – 维数(块变量的行数)。

  • mat_name – 块变量名,可以为 NULL

Return

一个可指定函数状态的响应代码。

See

Mdo_addSymMats()

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

一个可指定函数状态的响应代码。