7.6.1. 模型属性

参数

说明

“ProbName”

优化问题的名称

“MinSense”

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

“ObjConst”

目标函数的常数偏移量

“NumVars”

模型中变量的总数

“NumConss”

模型中约束的总数

“NumEnts”

模型中非零元的总数

“LB”

变量下界

“UB”

变量上界

“Obj”

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

“LHS”

约束下界(左侧值)

“RHS”

约束上界(右侧值)

“ColName”

变量(列)名称

“RowName”

约束(行)名称

“IsInteger”

变量是否为整数类型

Note

若用户在求解某一模型后,对模型的任一属性进行了修改,则修改前的模型求解结果将无法再获取,需要调用优化器进行重新求解。

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

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

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

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

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

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

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

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

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

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

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

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

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

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