8.5.16. MDOModel¶
-
class MDOModel¶
在MindOpt应用程序中表示模型
方法
构建和输入环境关联的模型
构建和输入环境关联的模型
从文件中读取已有的信息,并构建和输入的环境相关联的模型
从文件中读取已有的信息,并构建和输入的环境相关联的模型
从另一个现有的模型拷贝创建一个新模型
向该模型添加新的线性约束
向该模型添加新的线性约束
向该模型添加新的线性约束
向该模型添加新的线性约束
向该模型添加新的线性约束
向该模型添加新约束,约束类型取决于temp约束的值
向该模型添加一定数量的约束
向该模型添加一定数量的约束
向该模型添加新的指示约束(Indicator constraint)
向该模型添加新的指示约束(Indicator constraint)
向该模型添加新的PSD约束
通过指示其维度和名称添加新的PSD变量
通过指示其目标系数和名称来添加新的PSD变量
向此模型添加新的二次约束
向此模型添加新的二次约束
向此模型添加新的二次约束
向该模型添加新的范围约束
向该模型添加新的范围PSD约束
向该模型添加一定数量的范围约束
向该模型添加一个SOS约束
通过指示其下界,上界,目标系数,类型和名称,向该模型添加变量
将变量添加到该模型并将其关联到现有约束
向该模型添加一个变量,并通过指示约束(Indicator Constraint)矩阵列将其关联到现有约束
将cnt个同类型的变量添加到该模型
添加多个属性不同的变量
添加多个不同属性且有约束的变量
更改约束矩阵中的约束系数
更改约束矩阵中的约束系数
计算至少包含一个IIS(不可约不一致子系统)
按名称检索int参数的值
按其名称检索double参数的值
按名称检索字符串参数的值
检索int属性的值
检索double属性的值
检索字符串属性的值
检索与变量关联的特定属性的值
检索与变量关联的特定属性的值
检索与变量关联的特定属性的值
检索与变量关联的特定属性的值
检索与约束关联的特定属性的值
检索与约束关联的特定属性的值
检索与约束关联的特定属性的值
检索与约束关联的特定属性的值
检索与PSD变量关联的特定属性的值
检索与PSD变量关联的特定属性的值
检索与PSD变量关联的特定属性的值
检索与PSD约束关联的特定属性的值
检索与PSD约束关联的特定属性的值
检索与一般约束(General Constraint)关联的属性的值
检索与一般约束(General Constraint)关联的属性的值
检索与二次约束关联的属性的值
检索与二次约束关联的属性的值
从约束矩阵中检索变量的系数值
从约束矩阵中检索单列的值
检索该模型中的第i个约束
按约束的名称检索约束
检索该模型中的所有约束
检索与该模型关联的环境
检索该模型中的指示约束(Indicator constraint)
检索当前模型中的所有一般约束(General Constraint)
检索该模型的目标函数
检索该模型中的第i个PSD约束
检索该模型中的所有PSD约束
检索第i个PSD变量
检索该模型中的所有PSD变量
获取二次约束的左侧表达式
检索该模型中的所有二次约束
从约束矩阵中通过约束检索行
检索该SOS约束包含的变量以及系数
检索当前model里所有的SOS约束
检索该模型中的第i个变量
按名称检索变量
检索该模型中的所有变量
开始优化模型
从文件将数据读入该模型
从该模型中删除变量
从该模型中删除约束
从该模型中删除SOS约束
从该模型中删除一般约束(General Constraint)
从该模型中删除二次约束
将模型重置为未求解状态,丢弃先前计算的任何解
设置int参数的值
设置double参数的值
设置字符串参数的值
设置参数的值
设置int属性的值
设置double属性的值
设置字符串属性的值
设置和指定变量关联的特定属性的值
设置和指定变量关联的特定属性的值
设置和指定变量关联的特定属性的值
设置和指定变量关联的特定属性的值
设置和指定约束关联的特定属性的值
设置和指定约束关联的特定属性的值
设置和指定约束关联的特定属性的值
设置和指定约束关联的特定属性的值
设置和指定PSD变量关联的特定属性的值
设置和指定PSD变量关联的特定属性的值
设置和指定PSD变量关联的特定属性的值
设置和指定PSD约束关联的特定属性的值
设置和指定PSD约束关联的特定属性的值
设置与一般约束(General Constraint)关联的属性的值
设置与二次约束关联的属性的值
设置与二次约束关联的属性的值
设置用户定义的回调类对象
设置目标函数
设置目标函数
设置目标函数
将模型数据写入文件
-
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。
-
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& tc – TempConstr 的对象。
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是变量边界和约束边界的子集,该子集满足:
子集对应的子问题仍然不可行
删除该子集中的任何边界后,子问题变得可行。
有关更多详细信息,请检查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
要检索的系数值
-
MDOConstr getConstrByName(const std::string &name)¶
按约束的名称检索约束
- Parameters
const std::string& name – 要检索的约束的名称
- Returns
要检索的约束
-
MDOConstr *getConstrs()¶
检索该模型中的所有约束
- Returns
该模型中的所有约束,其长度可以通过int属性 MDO_IntAttr_NumConstrs 知道。
Note
返回的指针是堆分配的数组,不要忘记使用后删除它。
-
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 *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。
-
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(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 ¶m, 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。
-
MDOModel(const MDOEnv *env, const std::string &filename)¶