- Member applyLocalBndchgsToCopiedMastervars (SCIP *scip, SCIP_CONS *cons, int *propcount)
- this might lead to an error with linking variables ?
- Member applyLocalBndchgsToPricedMastervars (SCIP *scip, SCIP_CONS *cons, int *propcount)
- check if this really works with linking variables
- Member applyProbing (SCIP *scip, SCIP_VAR **vars, int nvars, SCIP_VAR *probingvar, SCIP_Bool probingdir, SCIP_Bool solvelp, SCIP_Longint *nlpiterations, SCIP_Real *proplbs, SCIP_Real *propubs, SCIP_Real *lpobjvalue, SCIP_Bool *lpsolved, SCIP_Bool *lperror, SCIP_Bool *cutoff)
use maxproprounds

handle the feasible result

- Member assignConstraintsToRepresentatives (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool *consismaster, SCIP_HASHMAP *constoblock, int *vartoblock, int *nextblock, int *blockrepresentative)
- what about deleted variables?
- Member checkSolNew (SCIP *pricingprob, SCIP_SOL **sols, int idx, SCIP_Bool *isnew)
- ensure that the solutions are sorted
- Member createColumnindexList (SCIP *scip, vector< vector< int > > &rowindices, vector< vector< int > > &columnindices)
- broken
- Member createColumnindexList (SCIP *scip, gcg::Seeed *seeed, vector< vector< int > > &rowindices, vector< vector< int > > &columnindices)
- broken
- Member createSeeedFromMasterconss (SCIP *scip, gcg::Seeed **newSeeed, int *masterconss, int nmasterconss, gcg::Seeed *seeed, gcg::Seeedpool *seeedpool, SCIP_Bool exact)
- what about deleted variables?
- File dec_colors.cpp
allow to set range of subsets

add parameters for min/max subsets

allow for a fine grained control (ignore rhs, lhs and only consider constraint handler?)

- File dec_connected.c
- allow decompositions with only one pricing problem by just removing generalized covering and partitioning constraints The detector will detect block diagonal matrix structures as wells as generalized set partitioning or covering master problems.
- Class DEC_DetectorData
fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

fill in the necessary detector data

- Member DECdecompSetStairlinkingvars (SCIP *scip, DEC_DECOMP *decomp, SCIP_VAR ***stairlinkingvars, int *nstairlinkingvars)
- A valid check needs to be implemented
- Member DECdetermineConsBlock (SCIP *scip, DEC_DECOMP *decomp, SCIP_CONS *cons, int *block)
- : maybe this is possible in such a way that a staircase structure is preserved
- Member fixVariables (SCIP *scip, SCIP *subscip, SCIP_VAR **subvars, int *selection, SCIP_HEURDATA *heurdata, SCIP_Real *intfixingrate, SCIP_Real *zerofixingrate, SCIP_Bool *success)
- can there be aggregated linking variables?
- Member gcg::BipartiteGraph< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss_, int nvars_)
The nonzeroness is not checked, all variables in the variable array are considered

skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::ColumnGraph< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss_, int nvars_)
skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::HypercolGraph< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss_, int nvars_)
skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::HyperrowcolGraph< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss, int nvars)
The nonzeroness is not checked, all variables in the variable array are considered

skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::HyperrowGraph< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss_, int nvars_)
skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::RowGraph< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss_, int nvars_)
skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::RowGraphWeighted< T >::createFromMatrix (SCIP_CONS **conss, SCIP_VAR **vars, int nconss_, int nvars_, DISTANCE_MEASURE dist, WEIGHT_TYPE w_type)
skip all variables that have a zero coeffient or where all coefficients add to zero

Do more then one entry per variable actually work?

- Member gcg::Seeed::evaluate (SCORETYPE type)
- bound calculation for unfinished decompositions could be more precise
- Member gcg::Seeedpool::createVarClassifierForObjValueSigns ()
- correct?
- Member GCG_DECL_BRANCHACTIVEMASTER (branchActiveMasterRyanfoster)
- it is not clear if linking variables interfere with ryan foster branching
- Member GCGapplyGcgrens (SCIP *scip, SCIP_HEUR *heur, SCIP_RESULT *result, SCIP_Real minfixingrate, SCIP_Real minimprove, SCIP_Longint maxnodes, SCIP_Longint nstallnodes, SCIP_Bool binarybounds, SCIP_Bool uselprows)
- check for thread safeness
- Member GCGbranchGenericInitbranch (SCIP *masterscip, SCIP_BRANCHRULE *branchrule, SCIP_RESULT *result, int **checkedblocks, int *ncheckedblocks, GCG_STRIP ****checkedblockssortstrips, int **checkedblocksnsortstrips)
- copy memory
- Member GCGconsGetVals (SCIP *scip, SCIP_CONS *cons, SCIP_Real *vals, int nvals)
- SOS1 & SOS2 not implemented yet
- Member GCGoriginalVarAddMasterVar (SCIP *scip, SCIP_VAR *origvar, SCIP_VAR *var, SCIP_Real val)
- this method needs a little love
- Member GCGoriginalVarRemoveMasterVar (SCIP *scip, SCIP_VAR *origvar, SCIP_VAR *var)
- this method needs a little love
- Member GCGpricerPrintPricingStatistics (SCIP *scip, FILE *file)
- add constraint statistics: how many constraints (instead of cuts) have been added?
- Member GCGpricerPrintStatistics (SCIP *scip, FILE *file)
- add constraint statistics: how many constraints (instead of cuts) have been added?
- Member GCGrelaxEndProbing (SCIP *scip)
- solve master problem again
- Member GCGtransformMastersolToOrigsol (SCIP *scip, SCIP_SOL *mastersol, SCIP_SOL **origsol)
think about types of epsilons used in this method

handle infinite master solution values

this may be the wrong place for this case, handle it before the while loop and remove the similar case in the next while loop

- File gcgvar.c
- capture and release variables stored in other variable's data?
- Member getBestMastervar (SCIP *scip, SCIP_SOL *mastersol, SCIP_Real *activities, int *blocknr, SCIP_Bool *ignored, SCIP_Bool useobj, int *index, int *violchange)
handle copied original variables and linking variables

handle rays

- Member HEUR_TIMING
- should heuristic be called during the pricing loop or only after solving a node relaxation?
- Member ObjPricerGcg::pricingLoop (PricingType *pricetype, SCIP_RESULT *result, int *nfoundvars, SCIP_Real *lowerbound, SCIP_Bool *bestredcostvalid)
perhaps solve remaining pricing problems, if only few left?

solve all pricing problems all k iterations?

- Member ObjPricerGcg::setPricingObjs (PricingType *pricetype, SCIP_Bool stabilize)
- this method could use more parameters as it is private
- Member SCIP_DECL_CONSPROP (consPropMasterbranch)
- count number of propagations
- Member SCIP_DECL_DISPOUTPUT (SCIPdispOutputNLPAvgIters)
- Currently we are using the total number of nodes to compute the average LP iterations number. The reason for that is, that for the LP iterations only the total number (over all runs) are stored in the statistics. It would be nicer if the statistic also stores the number of LP iterations for the current run similar to the nodes.
- Member SCIP_DECL_HEUREXEC (heurExecGcgzirounding)
This assertion has been commented out due to numerical troubles

This is only necessary for rows containing fractional variables.

- Member SCIP_DECL_HEUREXEC (heurExecGcgrins)
- check for thread safeness
- Member SCIP_DECL_HEUREXEC (heurExecGreedycolsel)
- >= should not happen, replace it by == ?
- Member SCIP_DECL_HEUREXEC (heurExecOrigdiving)
- maybe this is unneccessary since solutions are also added in GCGrelaxUpdateCurrentSol()
- Member SCIP_DECL_HEUREXEC (heurExecRestmaster)
- check for thread safeness
- Member SCIP_DECL_HEUREXEC (heurExecRelaxcolsel)
- >= should not happen, replace it by == ?
- Member SCIP_DECL_PRICERFARKAS (ObjPricerGcg::scip_farkas)
This is just a workaround around SCIP stages!

This is just a workaround around SCIP stages!

- Member SCIP_DECL_PRICERREDCOST (ObjPricerGcg::scip_redcost)
- This is just a workaround around SCIP stages!
- Member SCIPincludeDetectorCompgreedily (SCIP *scip)
create compgreedily detector data here

add compgreedily detector parameters

- Member SCIPincludeDetectorConnected_noNewLinkingVars (SCIP *scip)
create connected_noNewLinkingVars detector data here

add connected_noNewLinkingVars detector parameters

- Member SCIPincludeDetectorConnectedbase (SCIP *scip)
create connectedbase detector data here

add connectedbase detector parameters

- Member SCIPincludeDetectorConsclass (SCIP *scip)
create consclass detector data here

add consclass detector parameters

- Member SCIPincludeDetectorConstype (SCIP *scip)
create constype detector data here

add constype detector parameters

- Member SCIPincludeDetectorDensemasterconss (SCIP *scip)
create densemasterconss detector data here

add densemasterconss detector parameters

- Member SCIPincludeDetectorGeneralmastersetcover (SCIP *scip)
create generalmastersetcover detector data here

add generalmastersetcover detector parameters

- Member SCIPincludeDetectorGeneralmastersetpack (SCIP *scip)
create generalmastersetpack detector data here

add generalmastersetpack detector parameters

- Member SCIPincludeDetectorGeneralmastersetpart (SCIP *scip)
create generalmastersetpart detector data here

add generalmastersetpart detector parameters

- Member SCIPincludeDetectorMastersetcover (SCIP *scip)
create mastersetcover detector data here

add mastersetcover detector parameters

- Member SCIPincludeDetectorMastersetpack (SCIP *scip)
create mastersetpack detector data here

add mastersetpack detector parameters

- Member SCIPincludeDetectorMastersetpart (SCIP *scip)
create mastersetpart detector data here

add mastersetpart detector parameters

- Member SCIPincludeDetectorPostprocess (SCIP *scip)
create postprocess detector data here

add postprocess detector parameters

- Member SCIPincludeDetectorVarclass (SCIP *scip)
create varclass detector data here

add varclass detector parameters

- Member searchZeroMastervar (SCIP *scip, int block, SCIP_VAR **zeromastervar)
it would be more efficient to "mark" master variables as being trivial

it would be more efficient to "mark" master variables as being trivial

- Member selectExtremePoints (SCIP *scip, SCIP_HEURDATA *heurdata, int *selection, int *nactualpts, SCIP_Bool *success)
handle infinite master solution values

handle infinite master solution values

- Member selectExtremePoints (SCIP *scip, SCIP_HEURDATA *heurdata, int *selection, SCIP_Bool *success)
handle infinite master solution values

handle infinite master solution values

- Member Separate (SCIP *scip, SCIP_VAR **F, int Fsize, SCIP_VAR **IndexSet, int IndexSetSize, GCG_COMPSEQUENCE *S, int Ssize, GCG_RECORD *record)
- mb: this is a filter
- Member solveDiagonalBlocks (SCIP *scip, SCIP_RELAXDATA *relaxdata, SCIP_RESULT *result, SCIP_Real *lowerbound)
- maybe add a constraint here to indicate that it has been decomposed