problem data for cycle clustering problem
This file implements the problem data for the cycle clustering problem.
The problem data contains original transition matrix, the scaling parameter that appears in the objective function, and all variables that appear in the problem.
Definition in file probdata_cyc.c.
#include "probdata_cyc.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/var.h"
#include <assert.h>
Go to the source code of this file.
Check if the clustering has exactly one state in every cluster.
scip | SCIP data structure |
solclustering | matrix with the clustering |
nbins | the number of bins |
ncluster | the number of clusters |
Definition at line 57 of file probdata_cyc.c.
References FALSE, i, SCIP_Bool, SCIP_Real, SCIPisEQ(), SCIPisIntegral(), SCIPisZero(), and TRUE.
Referenced by createSwitchSolution(), runCyckerlin(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXEC(), and switchNext().
SCIP_RETCODE assignVars | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_Real ** | clustering, | ||
int | nbins, | ||
int | ncluster ) |
Assign the variables in scip according to the found clustering.
scip | SCIP data structure |
sol | the SCIP solution |
clustering | the matrix with the clusterassignment |
nbins | the number of bins |
ncluster | the number of cluster |
Definition at line 88 of file probdata_cyc.c.
References assert(), c, CONSECUTIVE_CLUSTER, i, INCLUSTER, NULL, phi(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPcycGetBinvars(), SCIPcycGetEdgevars(), SCIPisEQ(), SCIPisGE(), SCIPisIntegral(), SCIPisLE(), SCIPsetSolVal(), SCIPvarGetLbGlobal(), SCIPvarGetStatus(), SCIPvarGetTransVar(), SCIPvarGetUbGlobal(), SCIPvarIsTransformed(), sol, and var.
Referenced by createSwitchSolution(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXEC(), and SCIPcycAddIncompleteSol().
int phi | ( | int | k, |
int | ncluster ) |
function that returns the successive cluster along the cycle
k | the cluster |
ncluster | the number of clusters |
Definition at line 181 of file probdata_cyc.c.
References assert().
Referenced by assignVars(), createProbQP(), createProbSimplified(), and SCIPcycPrintSolutionValues().
int phiinv | ( | int | k, |
int | ncluster ) |
function that returns the predecessor-cluster along the cycle
k | the cluster |
ncluster | the number of clusters |
Definition at line 193 of file probdata_cyc.c.
References assert().
Referenced by createProbSimplified(), and getTempObj().
|
static |
creates all the variables for the problem. The constraints are added later, depending on the model that is used
scip | SCIP data Structure |
probdata | the problem data |
Definition at line 209 of file probdata_cyc.c.
References c, i, INCLUSTER, NON_CONSECUTIVE_CLUSTER, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPaddVar(), SCIPallocBlockMemoryArray, SCIPallocClearBlockMemoryArray, SCIPcreateVarBasic(), SCIPdigraphAddArc(), SCIPisZero(), SCIPsetObjsense(), and SCIPsnprintf().
Referenced by SCIPcreateProbCyc().
|
static |
create the problem without variable amount of clusters, use simpler non-facet-defining inequalities
scip | SCIP Data Structure |
probdata | the problem data |
Definition at line 276 of file probdata_cyc.c.
References CONSECUTIVE_CLUSTER, FALSE, i, INCLUSTER, NON_CONSECUTIVE_CLUSTER, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPaddCons(), SCIPchgVarObj(), SCIPcreateConsBasicLinear(), SCIPcreateConsBasicLogicor(), SCIPcreateConsLinear(), SCIPcreateConsSetpart(), SCIPgetRealParam(), SCIPinfinity(), SCIPinfoMessage(), SCIPreleaseCons(), SCIPsnprintf(), TRUE, and var.
Referenced by SCIPcreateProbCyc().
|
static |
create the problem without variable amount of clusters, using three edge-variables for each pair of states. This is the tested default version.
scip | SCIP Data Structure |
probdata | The problem data |
Definition at line 419 of file probdata_cyc.c.
References CONSECUTIVE_CLUSTER, FALSE, i, INCLUSTER, NULL, phi(), phi(), phiinv(), SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_NORMAL, SCIPaddCoefLinear(), SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPaddCons(), SCIPaddOrigObjoffset(), SCIPchgVarObj(), SCIPcreateConsBasicLinear(), SCIPcreateConsBasicLogicor(), SCIPcreateConsLinear(), SCIPcreateConsSetpart(), SCIPgetRealParam(), SCIPinfinity(), SCIPisZero(), SCIPreleaseCons(), SCIPsnprintf(), SCIPverbMessage(), and TRUE.
Referenced by SCIPcreateProbCyc().
|
static |
create the problem without variable amount of clusters, using quadratic formulations. This is inferior to the simplified variant. Only useful for comparing relaxations.
scip | SCIP Data Structure |
probdata | The problem data |
Definition at line 636 of file probdata_cyc.c.
References c, FALSE, i, NULL, phi(), SCIP_CALL, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPaddCons(), SCIPaddVar(), SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPallocClearBlockMemoryArray, SCIPcreateConsBasicLogicor(), SCIPcreateConsQuadraticNonlinear(), SCIPcreateConsSetpart(), SCIPcreateVarBasic(), SCIPfreeBlockMemoryArray, SCIPfreeBufferArray, SCIPgetRealParam(), SCIPinfinity(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsetObjsense(), SCIPsnprintf(), and TRUE.
Referenced by SCIPcreateProbCyc().
|
static |
create the problem with variable amount of clusters. Very large number of constraints not viable for large scale problems.
scip | SCIP Data Structure |
probdata | The problem data |
Definition at line 820 of file probdata_cyc.c.
References CONSECUTIVE_CLUSTER, FALSE, i, INCLUSTER, MAX, MIN, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_NORMAL, SCIPaddCoefLinear(), SCIPaddCons(), SCIPchgVarObj(), SCIPcreateConsLinear(), SCIPgetRealParam(), SCIPinfinity(), SCIPreleaseCons(), SCIPsnprintf(), SCIPverbMessage(), and TRUE.
Referenced by SCIPcreateProbCyc().
|
static |
Scip callback to transform the problem
Definition at line 954 of file probdata_cyc.c.
References assert(), c, i, INCLUSTER, NON_CONSECUTIVE_CLUSTER, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPallocClearBlockMemoryArray, SCIPcopyDigraph(), and SCIPtransformVar().
|
static |
delete-callback method of scip
Definition at line 1039 of file probdata_cyc.c.
References assert(), c, i, INCLUSTER, NON_CONSECUTIVE_CLUSTER, NULL, SCIP_CALL, SCIP_OKAY, SCIPdigraphFree(), SCIPdigraphFreeComponents(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, and SCIPreleaseVar().
|
static |
scip-callback to delete the transformed problem
Definition at line 1108 of file probdata_cyc.c.
References assert(), c, i, INCLUSTER, NON_CONSECUTIVE_CLUSTER, NULL, SCIP_CALL, SCIP_OKAY, SCIPdigraphFree(), SCIPdigraphFreeComponents(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, and SCIPreleaseVar().
|
static |
callback method of scip for copying the probdata
Definition at line 1177 of file probdata_cyc.c.
References assert(), c, FALSE, i, INCLUSTER, NON_CONSECUTIVE_CLUSTER, NULL, result, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SUCCESS, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPallocClearBlockMemoryArray, SCIPcaptureVar(), SCIPcopyDigraph(), SCIPgetTransformedVar(), SCIPgetVarCopy(), SCIPvarIsActive(), and var.
SCIP_RETCODE SCIPcreateProbCyc | ( | SCIP * | scip, |
const char * | name, | ||
int | nbins, | ||
int | ncluster, | ||
SCIP_Real ** | cmatrix ) |
Create the probdata for an cyc-clustering problem
add callback methods to scip
scip | SCIP data structure |
name | problem name |
nbins | number of bins |
ncluster | number of cluster |
cmatrix | The transition matrix |
Definition at line 1303 of file probdata_cyc.c.
References assert(), createProbOnlyEdge(), createProbQP(), createProbSimplified(), createProbSimplifiedTest(), createVariables(), i, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_NORMAL, SCIPABORT, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPcreateDigraph(), SCIPcreateProbBasic(), SCIPgetCharParam(), SCIPsetProbCopy(), SCIPsetProbData(), SCIPsetProbDelorig(), SCIPsetProbDeltrans(), SCIPsetProbTrans(), and SCIPverbMessage().
Referenced by readCyc(), and SCIPapplyRedSize().
Getter methods for the various parts of the probdata Returns the transition matrix
scip | SCIP data structure |
Definition at line 1382 of file probdata_cyc.c.
References assert(), NULL, SCIP_Real, and SCIPgetProbData().
Referenced by runCyckerlin(), SCIP_DECL_HEUREXEC(), and SCIPapplyRedSize().
int SCIPcycGetNBins | ( | SCIP * | scip | ) |
Returns the number of states
scip | SCIP data structure |
Definition at line 1398 of file probdata_cyc.c.
References assert(), NULL, and SCIPgetProbData().
Referenced by getBranchCands(), getSolutionValues(), runCyckerlin(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), SCIPapplyRedSize(), SCIPcycAddIncompleteSol(), and switchNext().
int SCIPcycGetNCluster | ( | SCIP * | scip | ) |
Returns the number of clusters
scip | SCIP data structure |
Definition at line 1414 of file probdata_cyc.c.
References assert(), NULL, and SCIPgetProbData().
Referenced by addPathCuts(), addSubtourCuts(), branchOnBin(), getBranchCands(), getSolutionValues(), runCyckerlin(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), SCIPapplyRedSize(), SCIPcycAddIncompleteSol(), and switchNext().
Returns the state-variable-matrix
scip | SCIP data structure |
Definition at line 1430 of file probdata_cyc.c.
References assert(), NULL, and SCIPgetProbData().
Referenced by assignVars(), branchOnBin(), getBranchCands(), getSolutionValues(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXEC(), and SCIPcycAddIncompleteSol().
Returns the scaling parameter
scip | SCIP data structure |
Definition at line 1447 of file probdata_cyc.c.
References assert(), NULL, SCIP_Real, and SCIPgetProbData().
Referenced by assignNextBin(), createSwitchSolution(), getTempObj(), SCIP_DECL_HEUREXEC(), SCIPapplyRedSize(), and switchNext().
Returns the edge variables
scip | SCIP data structure |
Definition at line 1463 of file probdata_cyc.c.
References assert(), NULL, and SCIPgetProbData().
Referenced by addPathCuts(), addSubtourCuts(), addTourCuts(), assignVars(), createPartitionCut(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECLP().
return one specific edge variable
edgevars | edgevar data structure |
state1 | first state |
state2 | second state |
edgetype | position in clustering |
Definition at line 1480 of file probdata_cyc.c.
References assert(), and NULL.
Referenced by addPathCuts(), addSubtourCuts(), addTourCuts(), createPartitionCut(), SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECLP().
check for an array of states, if all possible edge-combinations exist
edgevars | edgevar data structure |
states | state array |
nstates | size of state array |
Definition at line 1496 of file probdata_cyc.c.
References assert(), FALSE, i, NULL, SCIP_Bool, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECLP().
SCIP_DIGRAPH * SCIPcycGetEdgeGraph | ( | SCIP * | scip | ) |
Returns the edge-graph
scip | SCIP data structure |
Definition at line 1528 of file probdata_cyc.c.
References assert(), NULL, and SCIPgetProbData().
Referenced by SCIP_DECL_SEPAEXECLP(), SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECLP().
SCIP_RETCODE SCIPcycPrintSolutionValues | ( | SCIP * | scip, |
SCIP_SOL * | sol ) |
print the model-values like coherence in the clusters and transition-probabilities between clusters that are not evident from the scip-solution
scip | SCIP data structure |
sol | The solution containg the values |
Definition at line 1548 of file probdata_cyc.c.
References assert(), i, NULL, phi(), SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_NORMAL, SCIPgetProbData(), SCIPgetSolVal(), SCIPverbMessage(), and sol.