8.7.1. 模型属性¶
C API对应参数接口参考 |
参数 |
说明 |
---|---|---|
MDO_STR_ATTR_PROB_NAME |
优化问题的名称 |
|
MDO_INT_ATTR_MIN_SENSE |
优化问题是否为最小化问题 |
|
MDO_REAL_ATTR_OBJ_CONST |
目标函数的常数偏移量 |
|
MDO_INT_ATTR_NUM_VARS |
模型中变量的总数 |
|
MDO_INT_ATTR_NUM_CONSS |
模型中约束的总数 |
|
MDO_INT_ATTR_NUM_ENTS |
模型中非零元的总数 |
|
MDO_REAL_ATTR_LB |
变量下界 |
|
MDO_REAL_ATTR_UB |
变量上界 |
|
MDO_REAL_ATTR_OBJ |
线性目标函数中变量的系数 |
|
MDO_REAL_ATTR_LHS |
约束下界(左侧值) |
|
MDO_REAL_ATTR_RHS |
约束上界(右侧值) |
|
MDO_STR_ATTR_COL_NAME |
变量(列)名称 |
|
MDO_STR_ATTR_ROW_NAME |
约束(行)名称 |
|
MDO_INT_ATTR_IS_INTEGER |
变量是否为整数类型 |
|
MDO_INT_ATTR_ROW_IIS |
指示此约束的左侧值和 (或) 右侧值是否属于IIS |
|
MDO_INT_ATTR_COL_IIS |
指示此变量的上限和 (或) 下限是否属于IIS |
Note
若用户在求解某一模型后,对模型的任一属性进行了修改,则修改前的模型求解结果将无法再获取,需要调用优化器进行重新求解。C++、Java、Python的参数API在 MDO_INT_PARAM 的namespace里,可参见 属性的别名 章节。
8.7.1.1. “ProbName”¶
此属性用于设置和查询当前优化模型的名称。
Group: Model
Type: String
Modifiable: Yes
示例
C
Mdo_setStrAttr(model, "ProbName", "problem0"); Mdo_getStrAttr(model, "ProbName", maxlen, name);Note
为了避免溢出,字符数组的大小(请参见下面的 “maxlen”)应足够长。
C++
model.setStrAttr("ProbName", "problem0"); name = model.getStrAttr("ProbName");Python
model.set_str_attr("ProbName", "problem0") name = model.get_str_attr("ProbName")
8.7.1.2. “MinSense”¶
最小化指示符。 此属性用于设置和查询优化目标的含义。“1” 表示目标函数是最小化目标,这是默认设置。将此属性设置为 “0” 会将目标变为最大化。
Group: Model
Type: Integer
Modifiable: Yes
Default value: 1
选项 |
说明 |
---|---|
0 |
最大化 |
1 |
最小化 |
示例
C
Mdo_setIntAttr(model, "MinSense", 1); Mdo_getIntAttr(model, "MinSense", &sense);C++
model.setIntAttr("MinSense", 1); sense = model.getIntAttr("MinSense");Python
model.set_int_attr("MinSense", 1) sense = model.get_int_attr("MinSense")
8.7.1.3. “ObjConst”¶
此属性用于设置和查询目标函数的常量偏移量。
Note
无论目标函数设置为最小化或最大化,目标值都将减去此数字。
Group: Model
Type: Real
Modifiable: Yes
示例
C
Mdo_setRealAttr(model, "ObjConst", 1.0); Mdo_getRealAttr(model, "ObjConst", &obj_offset);C++
model.setRealAttr("ObjConst", 1.0); obj_offset = model.getRealAttr("ObjConst");Python
model.set_real_attr("ObjConst", 1) obj_offset = model.get_real_attr("ObjConst")
8.7.1.4. “NumVars”¶
此属性用于查询当前优化模型中的变量总数。
Group: Model
Type: Integer
Modifiable: No
示例
C
Mdo_getIntAttr(model, "NumVars", &num_vars);C++
num_vars = model.getIntAttr("NumVars");Python
num_vars = model.get_int_attr("NumVars")
8.7.1.5. “NumConss”¶
此属性用于查询当前优化模型中的约束总数。
Group: Model
Type: Integer
Modifiable: No
示例
C
Mdo_getIntAttr(model, "NumConss", &num_conss);C++
num_conss = model.getIntAttr("NumConss");Python
num_conss = model.get_int_attr("NumConss")
8.7.1.6. “NumEnts”¶
此属性用于查询当前优化模型中非零元的总数。
Group: Model
Type: Integer
Modifiable: No
示例
C
Mdo_getIntAttr(model, "NumEnts", &num_ents);C++
num_ents = model.getIntAttr("NumEnts");Python
num_ents = model.get_int_attr("NumEnts")
8.7.1.7. “LB”¶
此属性用于设置和查询当前优化模型中变量的下界。
Group: Model
Type: Real
Modifiable: Yes
Default value: 0.0
Note
小于或等于 -1.E20 的任何值均被视为负无穷大。
示例
C
Mdo_setRealAttrIndex(model, "LB", 0, -10.0); Mdo_setRealAttrArray(model, "LB", 0, 4, lb_array); Mdo_getRealAttrIndex(model, "LB", 0, &lb); Mdo_getRealAttrArray(model, "LB", 0, 4, lb_array);C++
model.setRealAttrIndex("LB", 0, -10.0); model.setRealAttrArray("LB", 0, 4, lb_array); lb = model.getRealAttrIndex("LB", 0); lb_array = model.getRealAttrArray("LB", 0, 4); var.setRealAttr("LB", -10.0); lb = var.getRealAttr("LB");Python
model.set_real_attr_index("LB", 0, -10.0) model.set_real_attr_array("LB", 0, lb_array) lb = model.get_real_attr_index("LB", 0) lb_array = model.get_real_attr_array("LB", 0, 4) var.set_real_attr("LB", -10.0) lb = var.get_real_attr("LB")
8.7.1.8. “UB”¶
此属性用于设置和查询当前优化模型中变量的上界。
Group: Model
Type: Real
Modifiable: Yes
Default value: 0.0
Note
任何大于或等于1.E + 20的值都将被视为正无穷大。
示例
C
Mdo_setRealAttrIndex(model, "UB", 0, +10.0); Mdo_setRealAttrArray(model, "UB", 0, 4, ub_array); Mdo_getRealAttrIndex(model, "UB", 0, &ub); Mdo_getRealAttrArray(model, "UB", 0, 4, ub_array);C++
model.setRealAttrIndex("UB", 0, +10.0); model.setRealAttrArray("UB", 0, 4, ub_array); ub = model.getRealAttrIndex("UB", 0); ub_array = model.getRealAttrArray("UB", 0, 4); var.setRealAttr("UB", +10.0); ub = var.getRealAttr("UB");Python
model.set_real_attr_index("UB", 0, +10.0) model.set_real_attr_array("UB", 0, ub_array) ub = model.get_real_attr_index("UB", 0) ub_array = model.get_real_attr_array("UB", 0, 4) var.set_real_attr("UB", +10.0) ub = var.get_real_attr("UB")
8.7.1.9. “Obj”¶
此属性用于设置和查询当前优化模型的目标函数中变量的系数。
Group: Model
Type: Real
Modifiable: Yes
Default value: 0.0
示例
C
Mdo_setRealAttrIndex(model, "Obj", 0, +10.0); Mdo_setRealAttrArray(model, "Obj", 0, 4, obj_array); Mdo_getRealAttrIndex(model, "Obj", 0, &obj); Mdo_getRealAttrArray(model, "Obj", 0, 4, obj_array);C++
model.setRealAttrIndex("Obj", 0, +10.0); model.setRealAttrArray("Obj", 0, 4, obj_array); obj = model.getRealAttrIndex("Obj", 0); obj_array = model.getRealAttrArray("Obj", 0, 4); var.setRealAttr("Obj", +10.0); obj = var.getRealAttr("Obj");Python
model.set_real_attr_index("Obj", 0, +10.0) model.set_real_attr_array("Obj", 0, obj_array) obj = model.get_real_attr_index("Obj", 0) obj_array = model.get_real_attr_array("Obj", 0, 4) var.set_real_attr("Obj", +10.0) obj = var.get_real_attr("Obj")
8.7.1.10. “LHS”¶
此属性用于设置和查询当前优化模型中约束的下界(左侧值)。
Group: Model
Type: Real
Modifiable: Yes
Default value: 0.0
Note
小于或等于 -1.E20 的任何值均被视为负无穷大。
示例
C
Mdo_setRealAttrIndex(model, "LHS", 0, -10.0); Mdo_setRealAttrArray(model, "LHS", 0, 4, lhs_array); Mdo_getRealAttrIndex(model, "LHS", 0, &lhs); Mdo_getRealAttrArray(model, "LHS", 0, 4, lhs_array);C++
model.setRealAttrIndex("LHS", 0, -10.0); model.setRealAttrArray("LHS", 0, 4, lhs_array); lhs = model.getRealAttrIndex("LHS", 0); lhs_array = model.getRealAttrArray("LHS", 0, 4); cons.setRealAttr("LHS", -10.0); lhs = cons.getRealAttr("LHS");Python
model.set_real_attr_index("LHS", 0, -10.0) model.set_real_attr_array("LHS", 0, lhs_array) lhs = model.get_real_attr_index("LHS", 0) lhs_array = model.get_real_attr_array("LHS", 0, 4) cons.set_real_attr("LHS", -10.0) lhs = cons.get_real_attr("LHS")
8.7.1.11. “RHS”¶
此属性用于设置和查询当前优化模型中约束的上界(右侧值)。
Group: Model
Type: Real
Modifiable: Yes
Default value: 0.0
Note
任何大于或等于 1.E+20 的值都将被视为正无穷大。
示例
C
Mdo_setRealAttrIndex(model, "RHS", 0, +10.0); Mdo_setRealAttrArray(model, "RHS", 0, 4, rhs_array); Mdo_getRealAttrIndex(model, "RHS", 0, &rhs); Mdo_getRealAttrArray(model, "RHS", 0, 4, rhs_array);C++
model.setRealAttrIndex("RHS", 0, +10.0); model.setRealAttrArray("RHS", 0, 4, rhs_array); rhs = model.getRealAttrIndex("RHS", 0); rhs_array = model.getRealAttrArray("RHS", 0, 4); cons.setRealAttr("RHS", +10.0); rhs = cons.getRealAttr("RHS");Python
model.set_real_attr_index("RHS", 0, +10.0) model.set_real_attr_array("RHS", 0, rhs_array) rhs = model.get_real_attr_index("RHS", 0) rhs_array = model.get_real_attr_array("RHS", 0, 4) cons.set_real_attr("RHS", +10.0) rhs = cons.get_real_attr("RHS")
8.7.1.12. “ColName”¶
此属性用于设置和查询当前优化模型中的变量名称。
Group: Model
Type: String
Modifiable: Yes
示例
C
Mdo_setStrAttrIndex(model, "ColName", 0, "x0"); Mdo_getStrAttrIndex(model, "ColName", 0, maxlen, name);C++
model.setStrAttrIndex("ColName", 0, "x0"); name = model.getStrAttrIndex("ColName", 0); x0.setStrAttr("ColName", "x0"); name = x0.getStrAttr("ColName");Python
model.set_str_attr_index("ColName", 0, "x0") name = model.get_str_attr_index("ColName", 0) x0.set_str_attr("ColName", "x0") name = x0.get_str_attr("ColName")
8.7.1.13. “RowName”¶
此属性用于设置和查询当前优化模型中的约束名称。
Group: Model
Type: String
Modifiable: Yes
示例
C
Mdo_setStrAttrIndex(model, "RowName", 0, "c0"); Mdo_getStrAttrIndex(model, "RowName", 0, maxlen, name);C++
model.setStrAttrIndex("RowName", 0, "c0"); name = model.getStrAttrIndex("RowName", 0); c0.setStrAttr("RowName", "c0"); name = c0.getStrAttr("RowName");Python
model.set_str_attr_index("RowName", 0, "c0") name = model.get_str_attr_index("RowName", 0) c0.set_str_attr("RowName", "c0") name = c0.get_str_attr("RowName")
8.7.1.14. “IsInteger”¶
此属性用于设置和查询变量类型是否为整数型。
Group: Common
Default value: 0
选项 |
说明 |
---|---|
0 |
连续变量类型 |
1 |
整数变量类型 |
示例
C
Mdo_setIntAttrIndex(model, "IsInteger", 0, 1); Mdo_setIntAttrArray(model, "IsInteger", 0, 4, is_integer_array); Mdo_getIntAttrIndex(model, "IsInteger", 0, &is_integer); Mdo_getIntAttrArray(model, "IsInteger", 0, 4, is_integer_array);C++
model.setIntAttrIndex("IsInteger", 0, 1); model.setIntAttrArray("IsInteger", 0, 4, is_integer_array); is_integer = model.getIntAttrIndex("IsInteger", 0); is_integer_array = model.getIntAttrArray("IsInteger", 0, 4); var.setIntAttr("IsInteger", 1); is_integer = var.getIntAttr("IsInteger");Python
model.set_int_attr_index("IsInteger", 0, 1) model.set_int_attr_array("IsInteger", 0, is_integer_array) is_integer = model.get_int_attr_index("IsInteger", 0) is_integer_array = model.get_int_attr_array("IsInteger", 0, 4) var.set_int_attr("IsInteger", 1) is_integer = var.get_int_attr("IsInteger")
8.7.1.15. “RowIIS”¶
指示此约束的左侧值和 (或) 右侧值是否属于IIS
Group: Solution
Type: Integer
Modifiable: No
示例
C
Mdo_getIntAttrIndex(model, "RowIIS", 0, &row_iis); Mdo_getIntAttrArray(model, "RowIIS", 0, 4, &row_iis_array);C++
row_iis = model.getIntAttrIndex("RowIIS", 0); row_iis_array = model.getIntAttrArray("RowIIS", 0, 4);Python
row_iis = model.get_int_attr_index("RowIIS", 0) row_iis_array = model.get_int_attr_array("RowIIS", 0, 4)
8.7.1.16. “ColIIS”¶
指示此变量的上限和 (或) 下限是否属于IIS
Group: Solution
Type: Integer
Modifiable: No
示例
C
Mdo_getIntAttrIndex(model, "ColIIS", 0, &col_iis); Mdo_getIntAttrArray(model, "ColIIS", 0, 4, &col_iis_array);C++
col_iis = model.getIntAttrIndex("ColIIS", 0); col_iis_array = model.getIntAttrArray("ColIIS", 0, 4);Python
col_iis = model.get_int_attr_index("ColIIS", 0) col_iis_array = model.get_int_attr_array("ColIIS", 0, 4)