[Coin-lpsolver] Help with problems with quadratic objectives

Kish Shen kish.shen at crosscoreop.com
Thu Mar 22 22:53:57 EDT 2007


Hi,

I am trying to complete the support of our interface to OSI/CLP/CBC solvers, by adding 
the support for solving quadratic problems (QP and perhaps MIQP also). which is available 
for CPLEX and Xpress-MP solvers.

I assume I can't do this through the current OSI, and so must go direct to CLP, by using the
ClpQuadraticObjective class.

I am trying to understand the DOxygen documentation on how to provide the quadratic 
coefficients:

  ClpQuadraticObjective::ClpQuadraticObjective  	(  	const double *   	 linearObjective,
		int  	numberColumns,
		const CoinBigIndex *  	start,
		const int *  	column,
		const double *  	element,
		int  	numberExtendedColumns_ = -1	 
	) 	

I assume start, column, element defines  the non-zero quadratic coefficients of the objective 
function, and that start is an array of size n,  where n = number of variables (columns) in the 
problem, and for variable i, the column[start[i]] to column[start[i+1]] defines the variables
that have non-zero coefficients with variable i.

Is this symmetric, i.e. if there is a quadratic coefficient 3*x1*x2, does this mean that
the coefficient must be specified in both the column and element for x1 and x2, and if so,
should the coefficient (element) be halved, i.e. 1.5 in each?

What is the meaning of numberExtendedColumns_?

For CPLEX and Xpress, we actually set the quadratic coefficients one by one, by using (for
CPLEX), CPXchgqpcoef(env, lp, i, j, value),  which sets the quadratic coefficient for variables
and j to value. This is used to both set the initial quadratic objective, and to subsequently modify 
the quadratic component of the objective function. Is something equivalent available for CLP?

Beside the DOxygen documentation, are there any other description of these functions?

Thanks in advance for any information and help!

Cheers,

Kish 





More information about the Clp mailing list