CPXXgetquad 和 CPXgetquad
例程 "CPXXgetquad/CPXgetquad用于访问具有二次目标函数的模型矩阵 Q 的一系列列。
int CPXXgetquad( CPXCENVptr 环境, CPXCLPptr lp, CPXNNZ * nzcnt_p, CPXNNZ * qmatbeg, CPXDIM * qmatind, double * qmatval, CPXNNZ qmatspace, CPXNNZ * 剩余_p, CPXDIM 兴办, CPXDIM 最后 )
int CPXgetquad( CPXCENVptr 环境, CPXCLPptr lp, int * nzcnt_p, int * qmatbeg, int * qmatind, double * qmatval, int qmatspace, int * 剩余_p, int 兴办, int 最后 )
描述
例程 "CPXXgetquad/CPXgetquad用于访问具有二次目标函数的模型矩阵 Q 的一系列列。 必须指定范围的开始和结束以及返回这些列的非零条目的数组的长度。
具体来说,"j列由 "qmatbeg[j-begin]至 "qmatbeg[(j+1)-begin]-1"范围内的 "qmatval"和 "qmatind"条目组成。 end"列由 "qmatbeg[end-begin]"至 "nzcnt_p-1"的条目组成) 该数组的长度必须至少为 (end-begin+1)。
注:如果 "
qmatspace的值为零,返回的 "surplus_p值的负数表示数组 "qmatind和 "qmatval所需的长度。参数
- env
- 一个指向
CPXXopenCPLEX/CPXopenCPLEX所返回 CPLEX 环境的指针。 - lp
- 一个指向
CPXXcreateprob/CPXcreateprob所返回 CPLEX 问题对象的指针。 - nzcnt_p
- A pointer to an integer to contain the number of nonzeros returned; that is, the true length of the arrays
qmatindandqmatval. 如果函数返回 0(零)或 "CPXERR_NEGATIVE_SURPLUS,则该值包含存储在 "qmatind或 "qmatval中的元素个数。 否则,该值不变或设置为 0(零)。 - qmatbeg
- 一个数组,包含 Q 的每一列在数组 "
qmatval和 "qmatind中的起始位置索引。 - qmatind
- 一个数组,包含与 "
qmatval元素相关的行索引。 如果 "qmatspace为零,则可能为空。 - qmatval
- 一个数组,其将包含指定列的非零系数。 如果 "
qmatspace为零,则可能为空。 - qmatspace
- 一个整数,表示数组 "
qmatind和 "qmatval的长度。 可为零。 - surplus_p
- 一个整数指针,用于读取 "
qmatspace与数组 "qmatind和 "qmatval中条目数的差值。*surplus_p的非负值表示数组的长度足够。 负值表示长度不够,例程无法完成任务。 在本例中,"CPXXgetquad/CPXgetquad返回值为 "CPXERR_NEGATIVE_SURPLUS,"*surplus_p的负值表示数组空间不足。 - 开始
- 整数,表示要返回的列范围的起始位置。
- 结束
- 一个整数,表示要返回的列范围的终点。
返回
如果此例程成功,那么会返回零,而如果发生错误,那么会返回非零。 CPXERR_NEGATIVE_SURPLUS表示 "qmatind和 "qmatval"数组中没有足够的空间来存放非零系数。
示例
status = CPXgetquad (env, lp, &nzcnt, qmatbeg, qmatind,
qmatval, qmatspace, &surplus, 0,
cur_numquad-1);