8.2.1. MdoCol¶
-
class mindopt::MdoCol¶
列对象。
此对象会实现包含列对象的数据结构,该列对象由一组约束和系数对组成。
将列输入优化模型的典型步骤如下:
调用
MdoCol::MdoCol()
创建一个空列对象。调用
MdoCol::addTerms()
输入非零元素。
可通过调用
MdoCol::getCons()
和MdoCol::getCoeff()
查询非零元素,以访问关联的约束和系数。Note
一般来说,这是一个有效期很短的临时对象。
示例
/* Create an empty model. */ MdoModel model; MdoI32 itmp = 0; MdoReal dtmp = 0.0; /* Add empty constraints. */ std::vector<std::reference_wrapper<MdoCons> > cons; cons.push_back(model.addCons(1.0, 1.0, "c0")); cons.push_back(model.addCons(1.0, MDO_INFINITY, "c1")); /* Input columns. */ std::vector<MdoCol> col(4); col[0].addTerm(cons[0], 1.0); col[0].addTerm(cons[1], 1.0); col[1].addTerm(cons[0], 1.0); col[2].addTerm(cons[0], 2.0); col[2].addTerm(cons[1], -1.0); col[3].addTerm(cons[0], 3.0); col[3].addTerm(cons[1], 6.0); /* Populate column object */ std::cout << "Original col: " << std::endl; std::cout << "col[0]: " << col[0] << std::endl; std::cout << "col[1]: " << col[1] << std::endl; std::cout << "col[2]: " << col[2] << std::endl; /* Check column */ MdoCons c0 = model.getCons(0); dtmp = col[0].getCoeff(0); itmp = col[0].getSize(); /* Remove value from column */ col[0].removeTerm(1); itmp = col[0].getSize(); col[1].removeTerm(c0); itmp = col[1].getSize(); col[0].clear(); itmp = col[0].getSize(); /* Adds another column object to itself. */ double *col_coeff_array = new double[col[2].getSize()]; double *col_coeff_chk = new double[col[2].getSize()]; col[0].addCol(col[2], 2); for (int i=0; i < col[2].getSize(); i++) { col_coeff_array[i] = col[0].getCoeff(i); col_coeff_chk[i] = 2 * col[2].getCoeff(i); } /* Adds a nonzero term. */ col[1].addTerm(c0, 3); dtmp = col[1].getCoeff(0);
构造函数/析构函数。
-
MdoCol(void)¶
默认构造函数。
-
virtual ~MdoCol(void)¶
析构函数。
基本运算符。
用于访问内部数据的函数。
-
void addCol(const MdoCol &col, MdoReal multipiler)¶
此函数会将其他列对象添加到自身。
- Parameters
col – 待添加的列对象。
multipiler – 常数乘子。
-
void addTerm(const MdoCons &cons, MdoReal coeff)¶
此函数会添加一个非零项。非零项即一对约束和系数。
- Parameters
cons – 与非零项关联的约束对象。
coeff – 非零项的系数。
-
void addTerms(std::vector<std::reference_wrapper<MdoCons>> &conss, const MdoReal *coeffs, MdoI32 size)¶
此函数会添加一组非零项。非零项即一对约束和系数。
- Parameters
conss – 包含对约束对象的引用的矢量对象。
coeffs – 包含非零系数的数组。
size – 待添加的项数。
-
const MdoCons &getCons(MdoI32 pos) const¶
此函数会从列对象中检索约束对象。
- Parameters
pos – 当前存储在 pos 位置的项。
- Return
约束对象。
-
MdoReal getCoeff(MdoI32 pos) const¶
此函数会从列对象中检索非零元素的值。
- Parameters
pos – 当前存储在 pos 位置的项。
- Return
非零元素的值。
-
MdoBool removeTerm(const MdoCons &cons)¶
在给定约束对象的情况下,此函数会从列对象中删除非零元素。
- Parameters
cons – 将被删除非零系数的约束对象。
- Return
如果指定的系数存在于列中并且已被删除,则返回 true。
-
void clear(void)¶
此函数会从列对象中删除所有非零元素。