|
|
Go to the documentation of this file. 42 for(i = 0; i < vars; i++) 46 fprintf(stderr, "%d-%d, xval[%d]=%g (%d)\n", 72 for(i = 0; i < g-> edges; i += 2) 76 for(l = 0; l < g-> layers; l++) 78 ind = l * g-> edges + i; 79 sum += xval[ind] + xval[ind + 1]; 83 #ifdef WITH_CAPACITIES 84 assert(g->capa[i] > 0); 86 if (sum - EPSILON > ( double)g->capa[i]) 114 assert(connected[i] >= 0); 116 if( connected[i] < 2 ) 120 if ((connected[i] < 2) && (hop < max_hops)) 123 if ((g-> head[k] != tail) && (xval[k] + EPSILON > 1.0)) 124 trail(g, g-> head[k], xval, i, connected, hop + 1, max_hops); 144 int* stackstart = malloc(( size_t)g-> knots * sizeof( int)); 145 int* stackedge = malloc(( size_t)g-> knots * sizeof( int)); 146 int* stacktail = malloc(( size_t)g-> knots * sizeof( int)); 152 stackedge[0] = g-> outbeg[i]; 155 while( stacksize > 0 ) 157 k = stackedge[stacksize-1]; 159 printf( "stacksize: %d, edge %d: %d --> %d\n", stacksize, k, g-> tail[k], g-> head[k]); 165 else if ((g-> head[k] != stacktail[stacksize-1]) && (xval[k] + EPSILON > 1.0)) 167 assert(connected[g-> head[k]] >= 0); 168 if( connected[g-> head[k]] < 2 ) 170 ++(connected[g-> head[k]]); 172 if ((connected[i] < 2) && (stacksize < max_hops + 1)) 174 stackstart[stacksize] = g-> head[k]; 176 stacktail[stacksize] = stackstart[stacksize-1]; 178 printf( "stack: size=%d start[%d]=%d, edge[%d]=%d, tail[%d]=%d\n", 179 stacksize+1, stacksize, stackstart[stacksize], stacksize, stackedge[stacksize], 180 stacksize, stacktail[stacksize]); 188 stackedge[stacksize-1] = g-> oeat[k]; 227 assert(xval != NULL); 229 SCIP_CALL( SCIPallocClearBufferArray(scip, &connected, g-> knots) ); 232 for(layer = 0; ret && (layer < g-> layers); layer++) 236 memset(connected, 0, ( size_t)g-> knots * sizeof( char)); 243 trail2(g, layer, xval + layer * g-> edges, connected, 1000000000); 245 for(i = 0; i < g-> knots; i++) 257 SCIPdebugMessage( "deg condition violated \n"); 263 if( connected[i] >= 2) 270 if ((g-> grad[i] > 0) && (g-> term[i] == layer) && !connected[i]) 277 SCIPfreeBufferArray(scip, &connected); 293 for(e = 0; e < g-> edges; e += 2) 300 *feasible = (SCIP_Bool) ret;
static int nail(const GRAPH *g, const double *xval)
includes various files containing graph methods used for Steiner problems
static void trail(const GRAPH *g, int i, const double *xval, int tail, char *connected, int hop, int max_hops)
SCIP_RETCODE SCIPvalidateStpSol(SCIP *scip, const GRAPH *g, const double *xval, SCIP_Bool *feasible)
|