37 #ifndef __SCIP_PARA_INSTANCE_TH_H__ 38 #define __SCIP_PARA_INSTANCE_TH_H__ 45 #include "scip/scip.h" 46 #include "scip/cons_linear.h" 70 ) : scip(0), nVars(0), varIndexRange(0), mapToOriginalIndecies(0), mapToSolverLocalIndecies(0),
71 orgScip(0), copyIncreasedVariables(false)
77 ) : scip(inScip), nVars(0), varIndexRange(0), mapToOriginalIndecies(0), mapToSolverLocalIndecies(0),
78 orgScip(0), copyIncreasedVariables(false)
85 if( mapToOriginalIndecies )
89 if( mapToSolverLocalIndecies )
110 return SCIPretransformObj(orgScip, SCIPretransformObj(scip, internalValue) );
114 return SCIPretransformObj(scip, internalValue);
123 return SCIPtransformObj(scip, SCIPtransformObj(orgScip, externalValue));
127 return SCIPtransformObj(scip, externalValue);
135 assert( mapToOriginalIndecies );
137 SCIP_CALL_ABORT( SCIPcreateSol(scip, &newsol, 0) );
138 SCIP_VAR **vars = SCIPgetVars(scip);
139 assert( SCIPgetNVars(scip) == sol->
getNVars() );
143 if( mapToOriginalIndecies[i] >= 0 )
166 SCIP_CALL_ABORT(SCIPgetSolVals(scip, newsol, SCIPgetNVars(scip), SCIPgetVars(scip), vals) );
169 #if (SCIP_VERSION < 321 || ( SCIP_VERSION == 321 && SCIP_SUBVERSION < 2) ) 170 SCIP_CALL_ABORT( SCIPtrySolFree(scip, &newsol, FALSE, TRUE, TRUE, TRUE, &success) );
172 SCIP_CALL_ABORT( SCIPtrySolFree(scip, &newsol, FALSE, TRUE, TRUE, TRUE, TRUE, &success) );
192 bool noPreprocessingInLC,
193 bool usetRootNodeCuts,
196 char *settingsNameLC,
204 return std::string(
"Should be written from scip environment.");
212 return SCIPgetProbName(orgScip);
216 return SCIPgetProbName(scip);
224 SCIP_VAR **vars = SCIPgetVars(scip);
225 return SCIPvarGetLbGlobal(vars[i]);
229 SCIP_VAR **vars = SCIPgetVars(scip);
230 return SCIPvarGetUbGlobal(vars[i]);
234 SCIP_VAR **vars = SCIPgetVars(scip);
235 return SCIPvarGetType(vars[i]);
239 SCIP_VAR **vars = SCIPgetVars(scip);
240 return SCIPvarGetObj(vars[i]);
245 SCIP_VAR **vars = SCIPgetVars(scip);
246 return SCIPvarGetName(vars[i]);
251 return SCIPgetNConss(scip);
256 SCIP_CONS **conss = SCIPgetConss(scip);
257 SCIP_CONSHDLR* conshdlr = SCIPconsGetHdlr(conss[i]);
258 assert( conshdlr != NULL );
259 if( strcmp(SCIPconshdlrGetName(conshdlr),
"linear") != 0 )
261 THROW_LOGICAL_ERROR2(
"invalid constraint type exists; consname = ", SCIPconshdlrGetName(conshdlr));
263 return SCIPgetLhsLinear(scip, conss[i]);
268 SCIP_CONS **conss = SCIPgetConss(scip);
269 SCIP_CONSHDLR* conshdlr = SCIPconsGetHdlr(conss[i]);
270 assert( conshdlr != NULL );
271 if( strcmp(SCIPconshdlrGetName(conshdlr),
"linear") != 0 )
273 THROW_LOGICAL_ERROR2(
"invalid constraint type exists; consname = ", SCIPconshdlrGetName(conshdlr));
275 return SCIPgetRhsLinear(scip, conss[i]);
280 SCIP_CONS **conss = SCIPgetConss(scip);
281 SCIP_CONSHDLR* conshdlr = SCIPconsGetHdlr(conss[i]);
282 assert( conshdlr != NULL );
283 if( strcmp(SCIPconshdlrGetName(conshdlr),
"linear") != 0 )
285 THROW_LOGICAL_ERROR2(
"invalid constraint type exists; consname = ", SCIPconshdlrGetName(conshdlr));
287 return SCIPgetNVarsLinear(scip, conss[i]);
292 SCIP_CONS **conss = SCIPgetConss(scip);
293 SCIP_VAR **vars = SCIPgetVarsLinear(scip, conss[i]);
294 return SCIPvarGetProbindex(vars[j]);
299 SCIP_CONS **conss = SCIPgetConss(scip);
300 return SCIPgetValsLinear(scip, conss[i]);
305 SCIP_CONS **conss = SCIPgetConss(scip);
306 return SCIPconsGetName(conss[i]);
323 assert(mapToOriginalIndecies);
324 return mapToOriginalIndecies[index];
329 assert(mapToOriginalIndecies);
331 mapToOriginalIndecies = 0;
337 assert(mapToSolverLocalIndecies);
339 mapToSolverLocalIndecies = 0;
361 return SCIPgetObjsense(scip);;
371 copyIncreasedVariables =
true;
386 std::cout <<
"This function should name be used for FiberSCIP!" << std::endl;
413 std::cout <<
"This function should name be used for FiberSCIP!" << std::endl;
423 #endif // __SCIP_PARA_INSTANCE_TH_H__
virtual void setFileName(const char *file)=0
SCIP_Real getLhsLinear(int i)
static ScipParaCommTh * comm
int getOrigProbIndex(int index)
virtual const char * getFileName()=0
const char * getFileName()
virtual int bcast(ParaComm *comm, int rank, int method)=0
broadcast function to all solvers
const char * getConsName(int i)
bool copyIncreasedVariables
ParaSolution extension for SCIP solver.
void createProblem(SCIP *scip, int method, bool noPreprocessingInLC, bool usetRootNodeCuts, ScipDiffParamSet *scipDiffParamSetRoot, ScipDiffParamSet *scipDiffParamSet, char *settingsNameLC, char *isolname)
int indexAmongSolvers(int index)
ScipParaInstanceTh * ScipParaInstanceThPtr
void getSolValuesForOriginalProblem(ScipParaSolution *sol, SCIP_Real *vals)
SCIP_Real * getLinearCoefs(int i)
SCIP * getParaInstanceScip()
SCIP_Real getRhsLinear(int i)
bool isSolverLocalIndeciesMap()
SCIP_Real getVarLb(int i)
int getNVarsLinear(int i)
const char * getProbName()
SCIP parameter set to be transferred ( Only keep difference between default settings )...
#define THROW_LOGICAL_ERROR2(msg1, msg2)
int * mapToSolverLocalIndecies
void setUserPlugins(ScipUserPlugins *inUi)
void includeUserPlugins(SCIP *inScip)
bool isOriginalIndeciesMap()
void copyScipEnvironment(SCIP **scip)
int * extractSolverLocalIndexMap()
virtual ~ScipParaInstance()
ScipParaInstance(SCIP *inScip)
int * mapToOriginalIndecies
int * extractOrigProbIndexMap()
int getIdxLinearCoefVar(int i, int j)
void setFileName(const char *file)
bool isCopyIncreasedVariables()
const char * getVarName(int i)
const std::string toString()
void copyIncrasedVariables()
SCIP_Real getObjCoef(int i)
double convertToInternalValue(double externalValue)
Base class of communicator object.
SCIP_Real getVarUb(int i)
double convertToExternalValue(double internalValue)