8.5.16. MDOModel

class MDOModel

在MindOpt应用程序中表示模型

方法

MDOModel

构建和输入环境关联的模型

MDOModel

构建和输入环境关联的模型

MDOModel

从文件中读取已有的信息,并构建和输入的环境相关联的模型

MDOModel

从文件中读取已有的信息,并构建和输入的环境相关联的模型

MDOModel

从另一个现有的模型拷贝创建一个新模型

addConstr

向该模型添加新的线性约束

addConstr

向该模型添加新的线性约束

addConstr

向该模型添加新的线性约束

addConstr

向该模型添加新的线性约束

addConstr

向该模型添加新的线性约束

addConstr

向该模型添加新约束,约束类型取决于temp约束的值

addConstrs

向该模型添加一定数量的约束

addConstrs

向该模型添加一定数量的约束

addGenConstrIndicator

向该模型添加新的指示约束(Indicator constraint)

addGenConstrIndicator

向该模型添加新的指示约束(Indicator constraint)

addPsdConstr

向该模型添加新的PSD约束

addPsdVar

通过指示其维度和名称添加新的PSD变量

addPsdVar

通过指示其目标系数和名称来添加新的PSD变量

addQConstr

向此模型添加新的二次约束

addQConstr

向此模型添加新的二次约束

addQConstr

向此模型添加新的二次约束

addRange

向该模型添加新的范围约束

addRangePsdConstr

向该模型添加新的范围PSD约束

addRanges

向该模型添加一定数量的范围约束

addSOS

向该模型添加一个SOS约束

addVar

通过指示其下界,上界,目标系数,类型和名称,向该模型添加变量

addVar

将变量添加到该模型并将其关联到现有约束

addVar

向该模型添加一个变量,并通过指示约束(Indicator Constraint)矩阵列将其关联到现有约束

addVars

将cnt个同类型的变量添加到该模型

addVars

添加多个属性不同的变量

addVars

添加多个不同属性且有约束的变量

chgCoeff

更改约束矩阵中的约束系数

chgCoeffs

更改约束矩阵中的约束系数

computeIIS

计算至少包含一个IIS(不可约不一致子系统)

get

按名称检索int参数的值

get

按其名称检索double参数的值

get

按名称检索字符串参数的值

get

检索int属性的值

get

检索double属性的值

get

检索字符串属性的值

get

检索与变量关联的特定属性的值

get

检索与变量关联的特定属性的值

get

检索与变量关联的特定属性的值

get

检索与变量关联的特定属性的值

get

检索与约束关联的特定属性的值

get

检索与约束关联的特定属性的值

get

检索与约束关联的特定属性的值

get

检索与约束关联的特定属性的值

get

检索与PSD变量关联的特定属性的值

get

检索与PSD变量关联的特定属性的值

get

检索与PSD变量关联的特定属性的值

get

检索与PSD约束关联的特定属性的值

get

检索与PSD约束关联的特定属性的值

get

检索与一般约束(General Constraint)关联的属性的值

get

检索与一般约束(General Constraint)关联的属性的值

get

检索与二次约束关联的属性的值

get

检索与二次约束关联的属性的值

getCoeff

从约束矩阵中检索变量的系数值

getCol

从约束矩阵中检索单列的值

getConstr

检索该模型中的第i个约束

getConstrByName

按约束的名称检索约束

getConstrs

检索该模型中的所有约束

getEnv

检索与该模型关联的环境

getGenConstrIndicator

检索该模型中的指示约束(Indicator constraint)

getGenConstrs

检索当前模型中的所有一般约束(General Constraint)

getObjective

检索该模型的目标函数

getPsdConstr

检索该模型中的第i个PSD约束

getPsdConstrs

检索该模型中的所有PSD约束

getPsdVar

检索第i个PSD变量

getPsdVars

检索该模型中的所有PSD变量

getQCRow

获取二次约束的左侧表达式

getQConstrs

检索该模型中的所有二次约束

getRow

从约束矩阵中通过约束检索行

getSOS

检索该SOS约束包含的变量以及系数

getSOSs

检索当前model里所有的SOS约束

getVar

检索该模型中的第i个变量

getVarByName

按名称检索变量

getVars

检索该模型中的所有变量

optimize

开始优化模型

read

从文件将数据读入该模型

remove

从该模型中删除变量

remove

从该模型中删除约束

remove

从该模型中删除SOS约束

remove

从该模型中删除一般约束(General Constraint)

remove

从该模型中删除二次约束

reset

将模型重置为未求解状态,丢弃先前计算的任何解

set

设置int参数的值

set

设置double参数的值

set

设置字符串参数的值

set

设置参数的值

set

设置int属性的值

set

设置double属性的值

set

设置字符串属性的值

set

设置和指定变量关联的特定属性的值

set

设置和指定变量关联的特定属性的值

set

设置和指定变量关联的特定属性的值

set

设置和指定变量关联的特定属性的值

set

设置和指定约束关联的特定属性的值

set

设置和指定约束关联的特定属性的值

set

设置和指定约束关联的特定属性的值

set

设置和指定约束关联的特定属性的值

set

设置和指定PSD变量关联的特定属性的值

set

设置和指定PSD变量关联的特定属性的值

set

设置和指定PSD变量关联的特定属性的值

set

设置和指定PSD约束关联的特定属性的值

set

设置和指定PSD约束关联的特定属性的值

set

设置与一般约束(General Constraint)关联的属性的值

set

设置与二次约束关联的属性的值

set

设置与二次约束关联的属性的值

setCallback

设置用户定义的回调类对象

setObjective

设置目标函数

setObjective

设置目标函数

setObjective

设置目标函数

write

将模型数据写入文件

MDOModel(const MDOEnv *env)

构建和输入环境关联的模型

Parameters

const MDOEnv* env – 指向关联环境的指针

MDOModel(const MDOEnv &env)

构建和输入环境关联的模型

Parameters

const MDOEnv& env – 指向关联环境的引用

MDOModel(const MDOEnv *env, const std::string &filename)

从文件中读取已有的信息,并构建和输入的环境相关联的模型

Parameters
  • const MDOEnv* env – 指向关联环境的指针

  • const std::string& filename – 要从中读取模型的文件名。文件格式和压缩类型应在filename以后缀显示。有效的文件格式包括.lp,.mps,.qps,.dat-s,支持的压缩类型包括.gz和.Bz2。

MDOModel(const MDOEnv &env, const std::string &filename)

从文件中读取已有的信息,并构建和输入的环境相关联的模型

Parameters
  • const MDOEnv& env – 关联环境

  • const std::string& filename – 要从中读取模型的文件名。文件格式和压缩类型应在filename以后缀显示。有效的文件格式包括.lp,.mps,.qps,.dat-s,支持的压缩类型包括.gz和.Bz2。

MDOModel(const MDOModel &xmodel)

从另一个现有的模型拷贝创建一个新模型

Parameters

const MDOModel& xmodel – 需要被复制的现有模型

MDOConstr addConstr(const MDOLinExpr &expr1, char sense, const MDOLinExpr &expr2, const std::string &name = "")

向该模型添加新的线性约束

Parameters
  • const MDOLinExpr& expr1 – 左侧的线性表达式

  • char sense

    不等式标志。支持的标志包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • const MDOLinExpr& expr2 – 右侧的线性表达式

  • const std::string& name="" – 新约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的约束

MDOConstr addConstr(const MDOLinExpr &expr1, char sense, MDOVar v, const std::string &name = "")

向该模型添加新的线性约束

Parameters
  • const MDOLinExpr& expr1 – 左侧的线性表达式

  • char sense

    不等式标志。支持的标志包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • MDOVar v – 右侧变量

  • const std::string& name="" – 新约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的约束

MDOConstr addConstr(MDOVar v1, char sense, MDOVar v2, const std::string &name = "")

向该模型添加新的线性约束

Parameters
  • MDOVar v1 – 左侧变量

  • char sense

    不等式标志。支持的标志包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • MDOVar v2 – 右侧变量

  • const std::string& name="" – 新约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的约束

MDOConstr addConstr(MDOVar v, char sense, double rhs, const std::string &name = "")

向该模型添加新的线性约束

Parameters
  • MDOVar v – 左侧变量

  • char sense

    不等式标志。支持的标志包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • double rhs – 右侧值

  • const std::string& name="" – 新约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的约束

MDOConstr addConstr(const MDOLinExpr &expr, char sense, double rhs, const std::string &name = "")

向该模型添加新的线性约束

Parameters
  • const MDOLinExpr& expr – 左侧的线性表达式

  • char sense

    不等式标志。支持的标志包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • double rhs – 右侧的值

  • const std::string& name="" – 新约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的约束

MDOConstr addConstr(const MDOTempConstr &tc, const std::string &name = "")

向该模型添加新约束,约束类型取决于temp约束的值

Parameters
  • const MDOTempConstr& tc – 要添加的临时约束

  • const std::string& name="" – 新约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的约束

MDOConstr *addConstrs(int cnt)

向该模型添加一定数量的约束

Parameters

int cnt – 要添加的约束的数量

Returns

新添加的约束

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

MDOConstr *addConstrs(const MDOLinExpr *expr, const char *sense, const double *rhs, const std::string *name = "", int len)

向该模型添加一定数量的约束

Parameters
  • const MDOLinExpr* expr – 新约束的线性表达式。如果为NULL,则使用0。

  • const char* sense

    新约束的不等式符号。如果为NULL则使用 ‘MDO_LESS_EQUAL’。支持的符号包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • const double* rhs – 新约束的右侧值。如果存在NULL,将使用 ‘MDO_INFINITY’。

  • const std::string* name="" – 新约束的名称,如果是NULL则系统自动生成名称。

  • int len – 要添加的约束的数量

Returns

新添加的约束

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

MDOGenConstr addGenConstrIndicator(MDOVar binvar, int binval, const MDOLinExpr &expr, char sense, double rhs, const std::string &name = "")

向该模型添加新的指示约束(Indicator constraint)。

Parameters
  • MDOVar binvar – 该Indicator约束的二进制变量。

  • int binval – Indicator约束生效时的二进制值。

  • const MDOLinExpr& expr – 新Indicator约束的线性表达式

  • char sense – 新Indicator约束的约束比较符

  • double rhs – 新Indicator约束的右侧值。

  • const std::string& name="" – 新Indicator约束的名称。

Returns

新添加的一般约束。

MDOGenConstr addGenConstrIndicator(MDOVar binvar, int binval, const MDOTempConstr &expr, const std::string &name = "")

向该模型添加新的指示约束(Indicator constraint)。

Parameters
  • MDOVar binvar – 该Indicator约束的二进制变量。

  • int binval – Indicator约束生效时的二进制值。

  • const MDOTempConstr& expr – 新Indicator约束的线性约束部分。

  • const std::string& name="" – 新Indicator约束的名称。

Returns

新添加的一般约束。

MDOPsdConstr addPsdConstr(const MDOPsdExpr &expr, const char sense, double rhs, const std::string &name = "")

向该模型添加新的PSD约束

Parameters
  • const MDOPsdExpr& expr – 新PSD约束的左侧表达式

  • const char sense

    不等式符号。支持的符号包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • double rhs – 新PSD变量的右值

  • const std::string& name="" – 新的PSD约束的名称,空字符串的情况下将使用系统生成的名称。

Returns

新添加的约束

MDOPsdVar addPsdVar(int dim, const std::string &name = "")

通过指示其维度和名称添加新的PSD变量

Parameters
  • int dim – 新PSD变量的维数,即与该新PSD变量相关联的矩阵行 (或矩阵列,矩阵是正方形) 的数量

  • const std::string& name="" – 新的PSD变量的名称,空字符串的情况下将使用系统生成的名称。

Returns

新添加的PSD变量

MDOPsdVar addPsdVar(const MDOMatrix &obj, const std::string &name = "")

通过指示其目标系数和名称来添加新的PSD变量

Parameters
  • const MDOMatrix& obj – 新PSD变量的目标系数,应当为一个方阵

  • const std::string& name="" – 新的PSD变量的名称,空字符串的情况下将使用系统生成的名称。

Returns

新添加的PSD变量

MDOQConstr addQConstr(const MDOQuadExpr &expr, char sense, const MDOQuadExpr &rhsExpr, const std::string &name = "")

向此模型添加新的二次约束。

Parameters
  • const MDOQuadExpr& expr – 左侧表达式。

  • char sense

    不等号。支持的不等号包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • const MDOQuadExpr& rhsExpr – 右侧表达式。

  • const std::string& name="" – 新二次约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的二次约束。

MDOQConstr addQConstr(const MDOQuadExpr &expr, char sense, MDOVar rhsExpr, const std::string &name = "")

向此模型添加新的二次约束。

Parameters
  • const MDOQuadExpr& expr – 左侧表达式。

  • char sense

    不等号。支持的不等号包括:

    • MDO_EQUAL

    • MDO_LESS_EQUAL

    • MDO_GREATER_EQUAL

  • MDOVar rhsExpr – 右侧变量。

  • const std::string& name="" – 新二次约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的二次约束。

MDOQConstr addQConstr(const MDOTempConstr &tc, const std::string &name = "")

向此模型添加新的二次约束。

Parameters
  • const MDOTempConstr& tcTempConstr 的对象。

  • const std::string& name="" – 新二次约束的名称,允许空字符串,在这种情况下,将给出系统生成的名称。

Returns

新添加的二次约束。

MDOConstr addRange(const MDOLinExpr &expr, double lower, double upper, const std::string &name = "")

向该模型添加新的范围约束

Parameters
  • const MDOLinExpr& expr – 线性表达式

  • double lower – 线性表达式的下界

  • double upper – 线性表达式的上界

  • const std::string& name="" – 新约束的名称,空字符串的情况下将使用系统生成的名称。

Returns

新添加的约束

MDOPsdConstr addRangePsdConstr(const MDOPsdExpr &expr, double lower, double upper, const std::string &name = "")

向该模型添加新的范围PSD约束

Parameters
  • const MDOPsdExpr& expr – 新PSD约束的表达式

  • double lower – PSD表达式的下界

  • double upper – PSD表达式的上界

  • const std::string& name="" – 新的PSD约束的名称,空字符串的情况下将使用系统生成的名称。

Returns

新添加的约束

MDOConstr *addRanges(const MDOLinExpr *expr, const double *lower, const double *upper, const std::string *name = "", int len)

向该模型添加一定数量的范围约束

Parameters
  • const MDOLinExpr* expr – 新约束的线性表达式。如果是NULL,则将使用0作为左值。

  • const double* lower – 线性表达式的下界。如果是NULL,则将使用0作为下界。

  • const double* upper – 线性表达式的上界。如果是NULL则使用 MDO_INFINITY

  • const std::string* name="" – 新约束的名称,如果是NULL则使用系统生成的名称。

  • int len – 要添加的约束的数量

Returns

新添加的约束

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

MDOSOS addSOS(const MDOVar *vars, const double *weights, int len, int type)

向该模型添加一个SOS约束

Parameters
  • const MDOVar* vars – 新SOS约束里包含的变量

  • const double* weights – 新SOS约束里变量的权重

  • int len – 新SOS约束里变量的数量

  • int type

    新SOS约束的类型。支持的类型包括:

    • MDO_SOS_TYPE1(1)

    一个set里最多允许一个变量不等于0

    • MDO_SOS_TYPE2(2)

    一个set里最多允许两个连续的变量不等于0

Returns

新添加的SOS约束

MDOVar addVar(double lb, double ub, double obj, char vtype, const std::string &vname = "")

通过指示其下界,上界,目标系数,类型和名称,向该模型添加变量

Parameters
  • double lb – 新变量的下界

  • double ub – 新变量的上界

  • double obj – 新变量的目标系数

  • char vtype

    新变量的类型。支持的类型包括:

    • MDO_CONTINUOUS(‘C’) 连续变量,

    • MDO_BINARY(‘B’) 二进制变量,

    • MDO_INTEGER(‘I’) 整型变量,

    • MDO_SEMICONT(‘S’) 半连续变量,

    • MDO_SEMIINT(‘N’) 半整型变量。

  • const std::string& vname="" – 新变量的名称,如果为空字符串,则使用系统生成的名称。

Returns

新添加的变量

MDOVar addVar(double lb, double ub, double obj, char vtype, int nonzeros, const MDOConstr *xconstrs, const double *coeffs = NULL, const std::string &name = "")

将变量添加到该模型并将其关联到现有约束

Parameters
  • double lb – 新变量的下界

  • double ub – 新变量的上界

  • double obj – 新变量的目标系数

  • char vtype

    新变量的类型。支持的类型包括:

    • MDO_CONTINUOUS(‘C’) 连续变量,

    • MDO_BINARY(‘B’) 二进制变量,

    • MDO_INTEGER(‘I’) 整型变量,

    • MDO_SEMICONT(‘S’) 半连续变量,

    • MDO_SEMIINT(‘N’) 半整型变量。

  • int nonzeros – 要关联的约束的数量

  • const MDOConstr* xconstrs – 要关联的约束

  • const double* coeffs=NULL – 每个关联约束的约束系数。如果为NULL,则所有系数将被设置为零。

  • const std::string& name="" – 新变量的名称,如果为空字符串,则将使用系统生成的名称。

Returns

新添加的变量

MDOVar addVar(double lb, double ub, double obj, char vtype, const MDOColumn &col, const std::string &name = "")

向该模型添加一个变量,并通过指示约束(Indicator Constraint)矩阵列将其关联到现有约束

Parameters
  • double lb – 新变量的下界

  • double ub – 新变量的上界

  • double obj – 新变量的目标系数

  • char vtype

    新变量的类型。支持的类型包括:

    • MDO_CONTINUOUS(‘C’) 对于连续变量,

    • MDO_BINARY(‘B’) 为二进制变量,

    • MDO_INTEGER(‘I’) 为整型变量,

    • MDO_SEMICONT(‘S’) 对于半连续变量,

    • MDO_SEMIINT(‘N’) 表示半整型变量。

  • const MDOColumn& col – 关联到新变量的约束矩阵列

  • const std::string& name="" – 新变量的名称,如果是空字符串,则使用系统生成的名称。

Returns

新添加的变量

MDOVar *addVars(int cnt, char type = MDO_CONTINUOUS)

将cnt个同类型的变量添加到该模型

Parameters
  • int cnt – 要添加的变量数

  • char type=MDO_CONTINUOUS

    新变量的类型。支持的类型包括:

    • MDO_CONTINUOUS(‘C’) 连续变量,

    • MDO_BINARY(‘B’) 二进制变量,

    • MDO_INTEGER(‘I’) 整型变量,

    • MDO_SEMICONT(‘S’) 半连续变量,

    • MDO_SEMIINT(‘N’) 半整型变量。

Returns

新添加的变量指针

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

MDOVar *addVars(const double *lb, const double *ub, const double *obj, const char *type, const std::string *name, int len)

添加多个属性不同的变量

Parameters
  • const double* lb – 新变量的下界。如果为NULL,则将下界设为0。

  • const double* ub – 新变量的上界。如果为NULL,则将上界设为 MDO_INFINITY

  • const double* obj – 新变量的目标系数。如果为NULL,则将设置为0。

  • const char* type

    新变量的类型。支持的类型包括:

    • MDO_CONTINUOUS(‘C’) 连续变量,

    • MDO_BINARY(‘B’) 二进制变量,

    • MDO_INTEGER(‘I’) 整型变量,

    • MDO_SEMICONT(‘S’) 半连续变量,

    • MDO_SEMIINT(‘N’) 半整型变量。

  • const std::string* name – 新变量的名称。如果为NULL,则将使用系统生成的名称。

  • int len – 要添加的变量的数量

Returns

新添加的变量

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

MDOVar *addVars(const double *lb, const double *ub, const double *obj, const char *type, const std::string *name, const MDOColumn *col, int len)

添加多个不同属性且有约束的变量

Parameters
  • const double* lb – 新变量的下界。如果为NULL,则将设置下界为0。

  • const double* ub – 新变量的上界。如果为NULL,则将设置上界为 MDO_INFINITY

  • const double* obj – 新变量的目标系数。如果为NULL,则将设置新变量的目标系数为0。

  • const char* type

    新变量的类型。支持的类型包括:

    • MDO_CONTINUOUS(‘C’) 连续变量,

    • MDO_BINARY(‘B’) 二进制变量,

    • MDO_INTEGER(‘I’) 整型变量,

    • MDO_SEMICONT(‘S’) 半连续变量,

    • MDO_SEMIINT(‘N’) 半整型变量。

  • const std::string* name – 新变量的名称。如果为NULL,则将使用系统生成的名称。

  • const MDOColumn* col – 要关联到新变量的约束矩阵列

  • int len – 要添加的变量的数量

Returns

新添加的变量

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

void chgCoeff(MDOConstr c, MDOVar v, double val)

更改约束矩阵中的约束系数

Parameters
  • MDOConstr c – 系数的约束条件

  • MDOVar v – 系数的变量

  • double val – 新的系数值

void chgCoeffs(const MDOConstr *xconstrs, const MDOVar *xvars, const double *val, int len)

更改约束矩阵中的约束系数

Parameters
  • const MDOConstr* xconstrs – 系数的约束条件

  • const MDOVar* xvars – 系数的变量

  • const double* val – 新的系数值

  • int len – 要更改的系数的数量

void computeIIS()

计算至少包含一个IIS(不可约不一致子系统)。 IIS是变量边界和约束边界的子集,该子集满足:

  1. 子集对应的子问题仍然不可行

  2. 删除该子集中的任何边界后,子问题变得可行。

有关更多详细信息,请检查IIS相关属性的变量和约束。

Note

子系统的基数应该很小。请注意,这个问题应该是不可解的。

int get(MDO_IntParam param)

按名称检索int参数的值

Parameters

MDO_IntParam param – 参数名称

Returns

要检索的参数的当前值

double get(MDO_DoubleParam param)

按其名称检索double参数的值

Parameters

MDO_DoubleParam param – 参数名称

Returns

要检索的参数的当前值

std::string get(MDO_StringParam param)

按名称检索字符串参数的值

Parameters

MDO_StringParam param – 参数名称

Returns

要检索的参数的当前值

int get(MDO_IntAttr attr)

检索int属性的值

Parameters

MDO_IntAttr attr – 属性名称

Returns

要检索的属性的当前值

double get(MDO_DoubleAttr attr)

检索double属性的值

Parameters

MDO_DoubleAttr attr – 属性名称

Returns

要检索的属性的当前值

std::string get(MDO_StringAttr attr)

检索字符串属性的值

Parameters

MDO_StringAttr attr – 属性名称

Returns

要检索的属性的当前值

int *get(MDO_IntAttr attr, const MDOVar *xvars, int len)

检索与变量关联的特定属性的值

Parameters
  • MDO_IntAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • int len – 变量的数量

Returns

要检索的属性值

Note

返回的指针是堆分配的数组,不要忘记使用之后删除它

char *get(MDO_CharAttr attr, const MDOVar *xvars, int len)

检索与变量关联的特定属性的值

Parameters
  • MDO_CharAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • int len – 变量的数量

Returns

要检索的属性值

Note

返回的指针是堆分配的数组,不要忘记使用之后删除它。

double *get(MDO_DoubleAttr attr, const MDOVar *xvars, int len)

检索与变量关联的特定属性的值

Parameters
  • MDO_DoubleAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • int len – 变量的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

std::string *get(MDO_StringAttr attr, const MDOVar *xvars, int len)

检索与变量关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • int len – 变量的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

int *get(MDO_IntAttr attr, const MDOConstr *xconstrs, int len)

检索与约束关联的特定属性的值

Parameters
  • MDO_IntAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • int len – 约束的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

char *get(MDO_CharAttr attr, const MDOConstr *xconstrs, int len)

检索与约束关联的特定属性的值

Parameters
  • MDO_CharAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • int len – 约束的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

double *get(MDO_DoubleAttr attr, const MDOConstr *xconstrs, int len)

检索与约束关联的特定属性的值。

Parameters
  • MDO_DoubleAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • int len – 约束的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

std::string *get(MDO_StringAttr attr, const MDOConstr *xconstrs, int len)

检索与约束关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • int len – 约束的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

int *get(MDO_IntAttr attr, const MDOPsdVar *psdvars, int len)

检索与PSD变量关联的特定属性的值。

Parameters
  • MDO_IntAttr attr – 属性名称

  • const MDOPsdVar* psdvars – 关联的PSD变量

  • int len – PSD变量的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

std::string *get(MDO_StringAttr attr, const MDOPsdVar *psdvars, int len)

检索与PSD变量关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOPsdVar* psdvars – 关联的PSD变量

  • int len – PSD变量的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

MDOMatrix *get(MDO_MatAttr attr, const MDOPsdVar *psdvars, int len)

检索与PSD变量关联的特定属性的值

Parameters
  • MDO_MatAttr attr – 属性名称

  • const MDOPsdVar* psdvars – 关联的PSD变量

  • int len – PSD变量的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

double *get(MDO_DoubleAttr attr, const MDOPsdConstr *psdconstrs, int len)

检索与PSD约束关联的特定属性的值。

Parameters
  • MDO_DoubleAttr attr – 属性名称。

  • const MDOPsdConstr* psdconstrs – 相关联的PSD约束

  • int len – PSD约束的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

std::string *get(MDO_StringAttr attr, const MDOPsdConstr *psdconstrs, int len)

检索与PSD约束关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOPsdConstr* psdconstrs – 相关联的PSD约束

  • int len – PSD约束的数量

Returns

要检索的属性值

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

int *get(MDO_IntAttr attr, const MDOGenConstr *xgenconstrs, int len)

检索与一般约束(General Constraint)关联的属性的值。

Parameters
  • MDO_IntAttr attr – 属性名称。

  • const MDOGenConstr* xgenconstrs – 关联的一般约束。

  • int len – 一般约束的数量。

Returns

要检索的属性值。

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

std::string *get(MDO_StringAttr attr, const MDOGenConstr *xgenconstrs, int len)

检索与一般约束(General Constraint)关联的属性的值。

Parameters
  • MDO_StringAttr attr – 属性名称。

  • const MDOGenConstr* xgenconstrs – 关联的一般约束。

  • int len – 一般约束的数量。

Returns

要检索的属性值。

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

double *get(MDO_DoubleAttr attr, const MDOQConstr *qconstrs, int len)

检索与二次约束关联的属性的值。

Parameters
  • MDO_DoubleAttr attr – 属性名称。

  • const MDOQConstr* qconstrs – 关联的二次约束。

  • int len – 一般约束的数量。

Returns

要检索的属性值。

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

std::string *get(MDO_StringAttr attr, const MDOQConstr *qconstrs, int len)

检索与二次约束关联的属性的值。

Parameters
  • MDO_StringAttr attr – 属性名称。

  • const MDOQConstr* qconstrs – 关联的二次约束。

  • int len – 一般约束的数量。

Returns

要检索的属性值。

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

double getCoeff(MDOConstr c, MDOVar v)

从约束矩阵中检索变量的系数值

Parameters
  • MDOConstr c – 被查询的约束条件

  • MDOVar v – 被查询的变量名

Returns

要检索的系数值

MDOColumn getCol(MDOVar v)

从约束矩阵中检索单列的值

Parameters

MDOVar v – 表示列的变量

Returns

要检索的约束矩阵列。

MDOConstr getConstr(int i)

检索该模型中的第i个约束

Parameters

int i – 要检索的约束的索引

Returns

要检索的约束

MDOConstr getConstrByName(const std::string &name)

按约束的名称检索约束

Parameters

const std::string& name – 要检索的约束的名称

Returns

要检索的约束

MDOConstr *getConstrs()

检索该模型中的所有约束

Returns

该模型中的所有约束,其长度可以通过int属性 MDO_IntAttr_NumConstrs 知道。

Note

返回的指针是堆分配的数组,不要忘记使用后删除它。

MDOEnv getEnv()

检索与该模型关联的环境

Returns

与模型关联的环境

void getGenConstrIndicator(MDOGenConstr genc, MDOVar *binvar, int *binval, MDOLinExpr *expr, char *sense, double *rhs)

检索该模型中的指示约束(Indicator constraint)。

Parameters
  • MDOGenConstr genc – [in] Indicator约束对象。

  • MDOVar* binvar – [out] 保存该Indicator约束中二进制变量的位置。

  • int* binval – [out] 保存该Indicator约束生效时二进制值的位置。

  • MDOLinExpr* expr – [out] 保存该Indicator约束的线性表达式的位置。

  • char* sense – [out] 保持约束比较符的地方。

  • double* rhs – [out] 保存该Indicator约束的右侧值的位置。

MDOGenConstr *getGenConstrs()

检索当前模型中的所有一般约束(General Constraint)

Returns

返回模型中所有一般约束的列表。

MDOQuadExpr getObjective()

检索该模型的目标函数

Returns

目标函数

MDOPsdConstr getPsdConstr(int i)

检索该模型中的第i个PSD约束

Parameters

int i – 要检索的PSD约束的索引

Returns

要检索的PSD约束

MDOPsdConstr *getPsdConstrs()

检索该模型中的所有PSD约束

Returns

该模型中的所有PSD约束,其长度可以通过int属性 MDO_IntAttr_NumPsdConstrs 知道。

Note

返回的指针是堆分配的数组,不要忘记使用后删除它。

MDOPsdVar getPsdVar(int i)

检索第i个PSD变量

Parameters

int i – 要检索的PSD变量的索引

Returns

要检索的PSD变量

MDOPsdVar *getPsdVars()

检索该模型中的所有PSD变量

Returns

该模型中的所有PSD变量,其长度可以通过int属性 MDO_IntAttr_NumPsdVars 知道。

Note

返回的指针是堆分配的数组,不要忘记使用后删除它。

MDOQuadExpr getQCRow(MDOQConstr qc)

获取二次约束的左侧表达式。

Parameters

MDOQConstr qc – 二次约束的索引。

Returns

二次约束左侧表达式。

MDOQConstr *getQConstrs()

检索该模型中的所有二次约束。

Returns

该模型中的所有二次约束,其长度可以通过int属性 MDO_IntAttr_NumQConstrs 知道。

Note

返回的指针是堆分配的数组,不要忘记使用后删除它。

MDOLinExpr getRow(MDOConstr c)

从约束矩阵中通过约束检索行

Parameters

MDOConstr c – 要检索的约束

Returns

要检索的约束矩阵行

int getSOS(MDOSOS sos, MDOVar *vars, double *weights, int *typeP)

检索该SOS约束包含的变量以及系数。

Parameters
  • MDOSOS sos – [in] 被查询的SOS约束

  • MDOVar* vars – [out] 该SOS约束包含的变量列表

  • double* weights – [out] 该SOS约束包含的变量的权重列表

  • int* typeP

    [out] typeP[0]表示该SOS约束的类型(MDO_SOS_TYPE1或MDO_SOS_TYPE2)。

    • MDO_SOS_TYPE1(1)

    一个set里最多允许一个变量不等于0

    • MDO_SOS_TYPE2(2)

    一个set里最多允许两个连续的变量不等于0

Returns

返回变量列表的长度。

Note

在实际使用时,一般需要调用两次getSOS得到全部信息。第一次调用该方法时,vars和weights可以传入NULL,得到列表长度之后,第二次调用再传入分配足够长度的vars和weights。

MDOSOS *getSOSs()

检索当前model里所有的SOS约束

Returns

返回模型内所有的SOS约束列表

MDOVar getVar(int i)

检索该模型中的第i个变量

Parameters

int i – 要检索的变量的索引

Returns

该模型中的第i个变量

MDOVar getVarByName(const std::string &name)

按名称检索变量

Parameters

const std::string& name – 要检索的变量的名称

Returns

变量

MDOVar *getVars()

检索该模型中的所有变量

Returns

该模型中的所有变量,其长度可以通过int属性 MDO_IntAttr_NumVars 知道。

Note

返回的指针指向堆中分配的数组,使用结束后请用delete删除指针指向的堆中空间。

void optimize()

开始优化模型

void read(const std::string &filename)

从文件将数据读入该模型

Parameters

const std::string& filename – 存储模型的文件的路径。请注意,文件格式及其压缩类型 (可选) 在文件名后缀中编码。有效的后缀为:.prm,以及.mst,可选的压缩类型为.gz或.bz2。

void remove(MDOVar v)

从该模型中删除变量

Parameters

MDOVar v – 要删除的变量

void remove(MDOConstr c)

从该模型中删除约束

Parameters

MDOConstr c – 要移除的约束

void remove(MDOSOS sos)

从该模型中删除SOS约束

Parameters

MDOSOS sos – 要移除的SOS约束

void remove(MDOGenConstr genconstr)

从该模型中删除一般约束(General Constraint)

Parameters

MDOGenConstr genconstr – 要移除的一般约束

void remove(MDOQConstr qc)

从该模型中删除二次约束。

Parameters

MDOQConstr qc – 要删除的二次约束。

void reset(int clearall = 0)

将模型重置为未求解状态,丢弃先前计算的任何解

Parameters

int clearall=0 – 是否清除所有信息而不是只清除解决方案。1表示是,0表示仅清除解决方案。

void set(MDO_IntParam param, int val)

设置int参数的值。

Parameters
  • MDO_IntParam param – 参数名称

  • int val – 参数的新值

void set(MDO_DoubleParam param, double val)

设置double参数的值

Parameters
  • MDO_DoubleParam param – 参数名称

  • double val – 参数的新值

void set(MDO_StringParam param, const std::string &val)

设置字符串参数的值

Parameters
  • MDO_StringParam param – 参数名称

  • const std::string& val – 参数的新值

void set(const std::string &param, const std::string &val)

设置参数的值。输入参数的参数类型取决于参数本身。

Parameters
  • const std::string& param – 参数名称

  • const std::string& val – 参数的新值的字符串表示形式

void set(MDO_IntAttr attr, int val)

设置int属性的值

Parameters
  • MDO_IntAttr attr – 属性名称

  • int val – 新的属性值

void set(MDO_DoubleAttr attr, double val)

设置double属性的值

Parameters
  • MDO_DoubleAttr attr – 属性名称

  • double val – 新的属性值

void set(MDO_StringAttr attr, const std::string &val)

设置字符串属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const std::string& val – 新的属性值

void set(MDO_IntAttr attr, const MDOVar *xvars, const int *val, int len)

设置和指定变量关联的特定属性的值

Parameters
  • MDO_IntAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • const int* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_CharAttr attr, const MDOVar *xvars, const char *val, int len)

设置和指定变量关联的特定属性的值

Parameters
  • MDO_CharAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • const char* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_DoubleAttr attr, const MDOVar *xvars, const double *val, int len)

设置和指定变量关联的特定属性的值

Parameters
  • MDO_DoubleAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • const double* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_StringAttr attr, const MDOVar *xvars, const std::string *val, int len)

设置和指定变量关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOVar* xvars – 关联变量

  • const std::string* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_IntAttr attr, const MDOConstr *xconstrs, const int *val, int len)

设置和指定约束关联的特定属性的值

Parameters
  • MDO_IntAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • const int* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_CharAttr attr, const MDOConstr *xconstrs, const char *val, int len)

设置和指定约束关联的特定属性的值

Parameters
  • MDO_CharAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • const char* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_DoubleAttr attr, const MDOConstr *xconstrs, const double *val, int len)

设置和指定约束关联的特定属性的值

Parameters
  • MDO_DoubleAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • const double* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_StringAttr attr, const MDOConstr *xconstrs, const std::string *val, int len)

设置和指定约束关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOConstr* xconstrs – 关联约束

  • const std::string* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_IntAttr attr, const MDOPsdVar *psdvars, const int *val, int len)

设置和指定PSD变量关联的特定属性的值

Parameters
  • MDO_IntAttr attr – 属性名称

  • const MDOPsdVar* psdvars – 关联的PSD变量

  • const int* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_StringAttr attr, const MDOPsdVar *psdvars, std::string *val, int len)

设置和指定PSD变量关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOPsdVar* psdvars – 关联的PSD变量

  • std::string* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_MatAttr attr, const MDOPsdVar *psdvars, const MDOMatrix *val, int len)

设置和指定PSD变量关联的特定属性的值

Parameters
  • MDO_MatAttr attr – 属性名称

  • const MDOPsdVar* psdvars – 关联的PSD变量

  • const MDOMatrix* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_DoubleAttr attr, const MDOPsdConstr *psdconstrs, const double *val, int len)

设置和指定PSD约束关联的特定属性的值

Parameters
  • MDO_DoubleAttr attr – 属性名称

  • const MDOPsdConstr* psdconstrs – 相关联的PSD约束

  • const double* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_StringAttr attr, const MDOPsdConstr *psdconstrs, const std::string *val, int len)

设置和指定PSD约束关联的特定属性的值

Parameters
  • MDO_StringAttr attr – 属性名称

  • const MDOPsdConstr* psdconstrs – 相关联的PSD约束

  • const std::string* val – 属性的新值

  • int len – 要设置的属性的数量

void set(MDO_StringAttr attr, const MDOGenConstr *xgenconstrs, const std::string *val, int len)

设置与一般约束(General Constraint)关联的属性的值。

Parameters
  • MDO_StringAttr attr – 属性名称。

  • const MDOGenConstr* xgenconstrs – 关联的一般约束。

  • const std::string* val – 属性的新值。

  • int len – 要设置的属性的数量。

void set(MDO_DoubleAttr attr, const MDOQConstr *qconstrs, const double *val, int len)

设置与二次约束关联的属性的值。

Parameters
  • MDO_DoubleAttr attr – 属性名称。

  • const MDOQConstr* qconstrs – 关联的二次约束。

  • const double* val – 属性的新值。

  • int len – 要设置的属性的数量。

void set(MDO_StringAttr attr, const MDOQConstr *qconstrs, const std::string *val, int len)

设置与二次约束关联的属性的值。

Parameters
  • MDO_StringAttr attr – 属性名称。

  • const MDOQConstr* qconstrs – 关联的二次约束。

  • const std::string* val – 属性的新值。

  • int len – 要设置的属性的数量。

void setCallback(MDOCallback *callback)

设置用户定义的回调类对象。

Parameters

MDOCallback* callback – 用户定义的回调类对象。

void setObjective(const MDOLinExpr &obje, int sense = 0)

设置目标函数

Parameters
  • const MDOLinExpr& obje – 要设置的目标函数

  • int sense=0 – 优化方向。MDO_MAXIMIZE(-1) 指最大化,MDO_MINIMIZE(1) 指最小化,如果输入其他值则不会发生改变当前的优化方向。默认优化方向为MDO_MINIMIZE。

void setObjective(const MDOQuadExpr &obje, int sense = 0)

设置目标函数

Parameters
  • const MDOQuadExpr& obje – 要设置的目标函数

  • int sense=0 – 优化方向。MDO_MAXIMIZE(-1) 指最大化,MDO_MINIMIZE(1) 指最小化,如果输入其他值则不会发生改变当前的优化方向。默认优化方向为MDO_MINIMIZE。

void setObjective(const MDOPsdExpr &obje, int sense = 0)

设置目标函数

Parameters
  • const MDOPsdExpr& obje – 要设置的目标函数

  • int sense=0 – 优化方向。MDO_MAXIMIZE(-1) 指最大化,MDO_MINIMIZE(1) 指最小化,如果输入其他值则不会发生改变当前的优化方向。默认优化方向为MDO_MINIMIZE。

void write(const std::string &filename)

将模型数据写入文件

Parameters

const std::string& filename – 数据序列化的文件路径。请注意,数据类型及其压缩 类型 (可选) 在文件名后缀中编码。有效的后缀为.lp,.mps,.qps 这些后缀将序列化模型本身。而.sol,.bas,.prm,以及.mst将序列化模型的解,变量的基值,参数设置,以及MIP的初始解到文件。 可选的压缩类型后缀.gz或.bz2。