Detailed Description
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.
Function Documentation
◆ isPartition()
Check if the clustering has exactly one state in every cluster.
- Parameters
-
scip SCIP data structure solclustering matrix with the clustering nbins the number of bins ncluster the number of clusters
Definition at line 48 of file probdata_cyc.c.
References FALSE, SCIP_Real, SCIPisEQ(), SCIPisIntegral(), SCIPisZero(), and TRUE.
Referenced by createSwitchSolution(), runCyckerlin(), SCIP_DECL_HEUREXEC(), and switchNext().
◆ assignVars()
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.
- Parameters
-
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 79 of file probdata_cyc.c.
References NULL, phi(), SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_MULTAGGR, SCIPcycGetBinvars(), SCIPcycGetEdgevars(), SCIPisEQ(), SCIPisGE(), SCIPisIntegral(), SCIPisLE(), SCIPsetSolVal(), SCIPvarGetLbGlobal(), SCIPvarGetStatus(), SCIPvarGetTransVar(), SCIPvarGetUbGlobal(), and SCIPvarIsTransformed().
Referenced by createSwitchSolution(), SCIP_DECL_HEUREXEC(), and SCIPcycAddIncompleteSol().
◆ phi()
int phi | ( | int | k, |
int | ncluster | ||
) |
function that returns the successive cluster along the cycle
- Parameters
-
k the cluster ncluster the number of clusters
Definition at line 172 of file probdata_cyc.c.
Referenced by assignVars(), createProbQP(), createProbSimplified(), and SCIPcycPrintSolutionValues().
◆ phiinv()
int phiinv | ( | int | k, |
int | ncluster | ||
) |
function that returns the predecessor-cluster along the cycle
- Parameters
-
k the cluster ncluster the number of clusters
Definition at line 184 of file probdata_cyc.c.
Referenced by createProbSimplified(), and getTempObj().
◆ createVariables()
|
static |
creates all the variables for the problem. The constraints are added later, depending on the model that is used
- Parameters
-
scip SCIP data Structure probdata the problem data
Definition at line 200 of file probdata_cyc.c.
References 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().
◆ createProbSimplifiedTest()
|
static |
create the problem without variable amount of clusters, use simpler non-facet-defining inequalities
- Parameters
-
scip SCIP Data Structure probdata the problem data
Definition at line 269 of file probdata_cyc.c.
References FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPaddCons(), SCIPchgVarObj(), SCIPcreateConsBasicLinear(), SCIPcreateConsBasicLogicor(), SCIPcreateConsLinear(), SCIPcreateConsSetpart(), SCIPgetRealParam(), SCIPinfinity(), SCIPinfoMessage(), SCIPreleaseCons(), SCIPsnprintf(), and TRUE.
Referenced by SCIPcreateProbCyc().
◆ createProbSimplified()
|
static |
create the problem without variable amount of clusters, using three edge-variables for each pair of states. This is the tested default version.
- Parameters
-
scip SCIP Data Structure probdata The problem data
Definition at line 411 of file probdata_cyc.c.
References FALSE, NULL, 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().
◆ createProbQP()
|
static |
create the problem without variable amount of clusters, using quadratic formulations. This is inferior to the simplified variant. Only useful for comparing relaxations.
- Parameters
-
scip SCIP Data Structure probdata The problem data
Definition at line 627 of file probdata_cyc.c.
References FALSE, 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().
◆ createProbOnlyEdge()
|
static |
create the problem with variable amount of clusters. Very large number of constraints not viable for large scale problems.
- Parameters
-
scip SCIP Data Structure probdata The problem data
Definition at line 811 of file probdata_cyc.c.
References FALSE, MAX, 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().
◆ SCIP_DECL_PROBTRANS()
|
static |
Scip callback to transform the problem
Definition at line 945 of file probdata_cyc.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory(), SCIPallocBlockMemoryArray, SCIPallocClearBlockMemoryArray, SCIPcopyDigraph(), and SCIPtransformVar().
◆ SCIP_DECL_PROBDELORIG()
|
static |
delete-callback method of scip
Definition at line 1030 of file probdata_cyc.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPdigraphFree(), SCIPdigraphFreeComponents(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, and SCIPreleaseVar().
◆ SCIP_DECL_PROBDELTRANS()
|
static |
scip-callback to delete the transformed problem
Definition at line 1099 of file probdata_cyc.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPdigraphFree(), SCIPdigraphFreeComponents(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, and SCIPreleaseVar().
◆ SCIP_DECL_PROBCOPY()
|
static |
callback method of scip for copying the probdata
Definition at line 1168 of file probdata_cyc.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SUCCESS, SCIPallocBlockMemory(), SCIPallocBlockMemoryArray, SCIPallocClearBlockMemoryArray, SCIPcaptureVar(), SCIPcopyDigraph(), SCIPgetTransformedVar(), SCIPgetVarCopy(), and SCIPvarIsActive().
◆ SCIPcreateProbCyc()
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
- Parameters
-
scip SCIP data structure name problem name nbins number of bins ncluster number of cluster cmatrix The transition matrix
Definition at line 1294 of file probdata_cyc.c.
References createProbOnlyEdge(), createProbQP(), createProbSimplified(), createProbSimplifiedTest(), createVariables(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_NORMAL, SCIPABORT, SCIPallocBlockMemory(), SCIPallocBlockMemoryArray, SCIPcreateDigraph(), SCIPcreateProbBasic(), SCIPgetCharParam(), SCIPsetProbCopy(), SCIPsetProbData(), SCIPsetProbDelorig(), SCIPsetProbDeltrans(), SCIPsetProbTrans(), and SCIPverbMessage().
Referenced by readCyc(), and SCIPapplyRedSize().
◆ SCIPcycGetCmatrix()
Getter methods for the various parts of the probdata Returns the transition matrix
- Parameters
-
scip SCIP data structure
Definition at line 1373 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by runCyckerlin(), SCIP_DECL_HEUREXEC(), and SCIPapplyRedSize().
◆ SCIPcycGetNBins()
int SCIPcycGetNBins | ( | SCIP * | scip | ) |
Returns the number of states
- Parameters
-
scip SCIP data structure
Definition at line 1389 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by getBranchCands(), getSolutionValues(), runCyckerlin(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), SCIPapplyRedSize(), SCIPcycAddIncompleteSol(), and switchNext().
◆ SCIPcycGetNCluster()
int SCIPcycGetNCluster | ( | SCIP * | scip | ) |
Returns the number of clusters
- Parameters
-
scip SCIP data structure
Definition at line 1405 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by addPathCuts(), addSubtourCuts(), branchOnBin(), getBranchCands(), getSolutionValues(), runCyckerlin(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_SEPAEXECLP(), SCIPapplyRedSize(), SCIPcycAddIncompleteSol(), and switchNext().
◆ SCIPcycGetBinvars()
Returns the state-variable-matrix
- Parameters
-
scip SCIP data structure
Definition at line 1421 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by assignVars(), branchOnBin(), getBranchCands(), getSolutionValues(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and SCIPcycAddIncompleteSol().
◆ SCIPcycGetScale()
Returns the scaling parameter
- Parameters
-
scip SCIP data structure
Definition at line 1438 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by assignNextBin(), createSwitchSolution(), getTempObj(), SCIP_DECL_HEUREXEC(), SCIPapplyRedSize(), and switchNext().
◆ SCIPcycGetEdgevars()
Returns the edge variables
- Parameters
-
scip SCIP data structure
Definition at line 1454 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by addPathCuts(), addSubtourCuts(), addTourCuts(), assignVars(), createPartitionCut(), and SCIP_DECL_SEPAEXECLP().
◆ getEdgevar()
return one specific edge variable
- Parameters
-
edgevars edgevar data structure state1 first state state2 second state direction direction, 0 = incluster, 1 = forward
Definition at line 1471 of file probdata_cyc.c.
References NULL.
Referenced by addPathCuts(), addSubtourCuts(), addTourCuts(), createPartitionCut(), and SCIP_DECL_SEPAEXECLP().
◆ edgesExist()
check for an array of states, if all possible edge-combinations exist
- Parameters
-
edgevars edgevar data structure states state array nstates size of state array
Definition at line 1487 of file probdata_cyc.c.
References FALSE, NULL, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP().
◆ SCIPcycGetEdgeGraph()
SCIP_DIGRAPH* SCIPcycGetEdgeGraph | ( | SCIP * | scip | ) |
Returns the edge-graph
- Parameters
-
scip SCIP data structure
Definition at line 1519 of file probdata_cyc.c.
References NULL, and SCIPgetProbData().
Referenced by SCIP_DECL_SEPAEXECLP().
◆ SCIPcycPrintSolutionValues()
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
- Parameters
-
scip SCIP data structure sol The solution containg the values
Definition at line 1539 of file probdata_cyc.c.
References NULL, phi(), SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_NORMAL, SCIPgetProbData(), SCIPgetSolVal(), and SCIPverbMessage().