8.7.1. 模型属性

C API对应参数接口参考

参数

说明

MDO_STR_ATTR_PROB_NAME

“ProbName”

优化问题的名称

MDO_INT_ATTR_MIN_SENSE

“MinSense”

优化问题是否为最小化问题

MDO_REAL_ATTR_OBJ_CONST

“ObjConst”

目标函数的常数偏移量

MDO_INT_ATTR_NUM_VARS

“NumVars”

模型中变量的总数

MDO_INT_ATTR_NUM_CONSS

“NumConss”

模型中约束的总数

MDO_INT_ATTR_NUM_ENTS

“NumEnts”

模型中非零元的总数

MDO_REAL_ATTR_LB

“LB”

变量下界

MDO_REAL_ATTR_UB

“UB”

变量上界

MDO_REAL_ATTR_OBJ

“Obj”

线性目标函数中变量的系数

MDO_REAL_ATTR_LHS

“LHS”

约束下界(左侧值)

MDO_REAL_ATTR_RHS

“RHS”

约束上界(右侧值)

MDO_STR_ATTR_COL_NAME

“ColName”

变量(列)名称

MDO_STR_ATTR_ROW_NAME

“RowName”

约束(行)名称

MDO_INT_ATTR_IS_INTEGER

“IsInteger”

变量是否为整数类型

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")