Ejemplo n.º 1
0
/** copies user data of source SCIP for the target SCIP */
static
SCIP_DECL_PROBCOPY(probcopyLOP)
{
   int n;
   int i;
   int j;

   assert( scip != NULL );
   assert( sourcescip != NULL );
   assert( sourcedata != NULL );
   assert( targetdata != NULL );

   /* set up data */
   SCIP_CALL( SCIPallocMemory(scip, targetdata) );

   n = sourcedata->n;
   (*targetdata)->n = n;

   /* set matrices */
   SCIP_CALL( SCIPallocMemoryArray(scip, &((*targetdata)->W), n) );
   SCIP_CALL( SCIPallocMemoryArray(scip, &((*targetdata)->vars), n) );

   for( i = 0; i < n; ++i )
   {
      SCIP_CALL( SCIPallocMemoryArray(scip, &((*targetdata)->W[i]), n) ); /*lint !e866*/
      SCIP_CALL( SCIPallocMemoryArray(scip, &((*targetdata)->vars[i]), n) ); /*lint !e866*/

      for( j = 0; j < n; ++j )
      {
         if( i != j )
         {
            SCIP_VAR* var;
            SCIP_Bool success;
            
	    SCIP_CALL( SCIPgetTransformedVar(sourcescip, sourcedata->vars[i][j], &var) );
            SCIP_CALL( SCIPgetVarCopy(sourcescip, scip, var, &((*targetdata)->vars[i][j]), varmap, consmap, global, &success) );
            assert(success);
            assert((*targetdata)->vars[i][j] != NULL);

            SCIP_CALL( SCIPcaptureVar(scip, (*targetdata)->vars[i][j]) );
         }
         else
            (*targetdata)->vars[i][j] = NULL;
      }
   }

   *result = SCIP_SUCCESS;
   
   return SCIP_OKAY;
}
Ejemplo n.º 2
0
/** adds given variable to the problem data */
SCIP_RETCODE SCIPprobdataAddVar(
   SCIP*                 scip,               /**< SCIP data structure */
   SCIP_PROBDATA*        probdata,           /**< problem data */
   SCIP_VAR*             var                 /**< variables to add */
   )
{
   /* check if enough memory is left */
   if( probdata->varssize == probdata->nvars )
   {
      probdata->varssize = MAX(100, probdata->varssize * 2);
      SCIP_CALL( SCIPreallocMemoryArray(scip, &probdata->vars, probdata->varssize) );
   }

   /* caputure variables */
   SCIP_CALL( SCIPcaptureVar(scip, var) );

   probdata->vars[probdata->nvars] = var;
   probdata->nvars++;

   SCIPdebugMessage("added variable to probdata; nvars = %d\n", probdata->nvars);

   return SCIP_OKAY;
}