assert(concsolvertype !=
NULL);
75assert(name !=
NULL);
76assert(prefpriodefault >= 0.0 && prefpriodefault <= 1.0);
78assert(concsolvercreateinst !=
NULL);
79assert(concsolverdestroyinst !=
NULL);
80assert(concsolverexec !=
NULL);
81assert(concsolvercopysolvdata !=
NULL);
82assert(concsolverstop !=
NULL);
83assert(concsolversyncwrite !=
NULL);
84assert(concsolversyncread !=
NULL);
91(*concsolvertype)->data = data;
92(*concsolvertype)->ninstances = 0;
93(*concsolvertype)->concsolvercreateinst = concsolvercreateinst;
94(*concsolvertype)->concsolverdestroyinst = concsolverdestroyinst;
95(*concsolvertype)->concsolverinitseeds = concsolverinitseeds;
96(*concsolvertype)->concsolverexec = concsolverexec;
97(*concsolvertype)->concsolvercopysolvdata = concsolvercopysolvdata;
98(*concsolvertype)->concsolverstop = concsolverstop;
99(*concsolvertype)->concsolversyncwrite = concsolversyncwrite;
100(*concsolvertype)->concsolversyncread = concsolversyncread;
101(*concsolvertype)->concsolvertypefreedata = concsolvertypefreedata;
104(void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"the preferred number concurrent solvers of type <%s> with respect to the number of threads", name);
106&(*concsolvertype)->prefprio,
FALSE, prefpriodefault, 0.0, 1.0,
132assert(concsolvertype !=
NULL);
133assert(name !=
NULL);
134assert(prefpriodefault >= 0.0 && prefpriodefault <= 1.0);
136assert(concsolvercreateinst !=
NULL);
137assert(concsolverdestroyinst !=
NULL);
138assert(concsolverexec !=
NULL);
139assert(concsolvercopysolvdata !=
NULL);
140assert(concsolverstop !=
NULL);
141assert(concsolversyncwrite !=
NULL);
142assert(concsolversyncread !=
NULL);
145name, prefpriodefault, concsolvercreateinst, concsolverdestroyinst, concsolverinitseeds, concsolverexec,
146concsolvercopysolvdata, concsolverstop, concsolversyncwrite, concsolversyncread, concsolvertypefreedata, data),
157assert(concsolvertype !=
NULL);
158 if( *concsolvertype ==
NULL)
161 if( (*concsolvertype)->concsolvertypefreedata !=
NULL)
162(*concsolvertype)->concsolvertypefreedata(&(*concsolvertype)->data);
173assert(concsolvertype !=
NULL);
175 returnconcsolvertype->
data;
184assert(concsolvertype !=
NULL);
186concsolvertype->
data= data;
194assert(concsolvertype !=
NULL);
196 returnconcsolvertype->
name;
204assert(concsolvertype !=
NULL);
224(*concsolver)->type = concsolvertype;
227(*concsolver)->nsolsrecvd = 0;
228(*concsolver)->nsolsshared = 0;
229(*concsolver)->ntighterbnds = 0;
230(*concsolver)->ntighterintbnds = 0;
234(*concsolver)->nsyncs = 0;
235(*concsolver)->syncdelay = 0.0;
241(*concsolver)->syncfreq = 0.01 *
set->scip->stat->nnz *
SCIPgetNVars(
set->scip) *
set->concurrent_freqinit;
243(*concsolver)->syncfreq =
set->concurrent_freqinit;
245(*concsolver)->syncdata =
NULL;
247 SCIPdebugMessage(
"concsolver %s initialized sync freq to %f\n", (*concsolver)->name, (*concsolver)->syncfreq);
250 SCIP_CALL( concsolvertype->concsolvercreateinst(
set->scip, concsolvertype, *concsolver) );
262assert(concsolver !=
NULL);
263assert((*concsolver)->type !=
NULL);
265assert((*concsolver)->type->concsolverdestroyinst !=
NULL);
267 SCIP_CALL( (*concsolver)->type->concsolverdestroyinst(
set->scip, *concsolver) );
268--(*concsolver)->type->ninstances;
283assert(concsolver !=
NULL);
285 returnconcsolver->
data;
294assert(concsolver !=
NULL);
296concsolver->
data= data;
304assert(concsolver !=
NULL);
306 returnconcsolver->
name;
315assert(concsolver !=
NULL);
318 if( concsolver->
type->concsolverinitseeds !=
NULL)
319 SCIP_CALL( concsolver->
type->concsolverinitseeds(concsolver, seed) );
329assert(concsolver !=
NULL);
331assert(concsolver->
type->concsolverexec !=
NULL);
348assert(concsolver !=
NULL);
350assert(concsolver->
type->concsolvercopysolvdata !=
NULL);
352 returnconcsolver->
type->concsolvercopysolvdata(concsolver,
scip);
360assert(concsolver !=
NULL);
362assert(concsolver->
type->concsolverstop !=
NULL);
364 SCIP_CALL( concsolver->
type->concsolverstop(concsolver) );
387assert(concsolver !=
NULL);
389assert(concsolver->
type->concsolversyncwrite !=
NULL);
390assert(concsolver->
type->concsolversyncread !=
NULL);
397concsolvertype = concsolver->
type;
400assert(syncstore !=
NULL);
404 if( syncdata ==
NULL)
412 SCIP_CALL( concsolvertype->concsolversyncwrite(concsolver, syncstore, syncdata,
set->concurrent_nbestsols,
set->concurrent_maxnsols, &nsols) );
435 if( concsolver->
nsyncs== 0 )
452progress =
SCIPrelDiff(prevub - prevlb, newub - newlb);
459progress =
set->concurrent_targetprogress;
464progress =
MAX(progress, 0.0);
467 if( progress < 0.5 * set->concurrent_targetprogress )
468freqfactor =
set->concurrent_freqfactor;
469 else if( progress > 2 *
set->concurrent_targetprogress )
470freqfactor = 0.5 + 0.5 /
set->concurrent_freqfactor;
474 SCIPdebugMessage(
"syncfreq is %g and freqfactor is %f due to progress %f\n", concsolver->
syncfreq, freqfactor, progress);
475newsyncfreq = concsolver->
syncfreq* freqfactor;
490 while( syncdata !=
NULL)
494 SCIP_CALL( concsolvertype->concsolversyncread(concsolver, syncstore, syncdata, &nsols, &ntighterbnds, &ntighterintbnds) );
514assert(concsolver !=
NULL);
524assert(concsolver !=
NULL);
537assert(concsolver !=
NULL);
547assert(concsolver !=
NULL);
557assert(concsolver !=
NULL);
567assert(concsolver !=
NULL);
577assert(concsolver !=
NULL);
579 returnconcsolver->
nnodes;
587assert(concsolver !=
NULL);
597assert(concsolver !=
NULL);
607assert(concsolver !=
NULL);
617assert(concsolver !=
NULL);
627assert(concsolver !=
NULL);
629 returnconcsolver->
idx;
int SCIPboundstoreGetNChgs(SCIP_BOUNDSTORE *boundstore)
the interface of the boundstore structure
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
internal methods for clocks and timing issues
SCIP_Longint SCIPconcsolverGetNNodes(SCIP_CONCSOLVER *concsolver)
void SCIPconcsolverSetTimeSinceLastSync(SCIP_CONCSOLVER *concsolver, SCIP_Real time)
SCIP_RETCODE SCIPconcsolverExec(SCIP_CONCSOLVER *concsolver)
SCIP_RETCODE SCIPconcsolverCreateInstance(SCIP_SET *set, SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVER **concsolver)
SCIP_Real SCIPconcsolverGetSyncFreq(SCIP_CONCSOLVER *concsolver)
SCIP_RETCODE SCIPconcsolverInitSeeds(SCIP_CONCSOLVER *concsolver, unsigned int seed)
SCIP_RETCODE SCIPconcsolverDestroyInstance(SCIP_SET *set, SCIP_CONCSOLVER **concsolver)
SCIP_CONCSOLVERDATA * SCIPconcsolverGetData(SCIP_CONCSOLVER *concsolver)
SCIP_Longint SCIPconcsolverGetNSolsRecvd(SCIP_CONCSOLVER *concsolver)
SCIP_Real SCIPconcsolverGetSyncTime(SCIP_CONCSOLVER *concsolver)
void SCIPconcsolverSetData(SCIP_CONCSOLVER *concsolver, SCIP_CONCSOLVERDATA *data)
SCIP_RETCODE SCIPconcsolverTypeCreate(SCIP_CONCSOLVERTYPE **concsolvertype, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, SCIP_Real prefpriodefault, SCIP_DECL_CONCSOLVERCREATEINST((*concsolvercreateinst)), SCIP_DECL_CONCSOLVERDESTROYINST((*concsolverdestroyinst)), SCIP_DECL_CONCSOLVERINITSEEDS((*concsolverinitseeds)), SCIP_DECL_CONCSOLVEREXEC((*concsolverexec)), SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA((*concsolvercopysolvdata)), SCIP_DECL_CONCSOLVERSTOP((*concsolverstop)), SCIP_DECL_CONCSOLVERSYNCWRITE((*concsolversyncwrite)), SCIP_DECL_CONCSOLVERSYNCREAD((*concsolversyncread)), SCIP_DECL_CONCSOLVERTYPEFREEDATA((*concsolvertypefreedata)), SCIP_CONCSOLVERTYPEDATA *data)
int SCIPconcsolverGetIdx(SCIP_CONCSOLVER *concsolver)
SCIP_Longint SCIPconcsolverGetNTighterIntBnds(SCIP_CONCSOLVER *concsolver)
SCIP_RETCODE SCIPconcsolverGetSolvingData(SCIP_CONCSOLVER *concsolver, SCIP *scip)
static SCIP_RETCODE doConcsolverTypeCreate(SCIP_CONCSOLVERTYPE **concsolvertype, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, SCIP_Real prefpriodefault, SCIP_DECL_CONCSOLVERCREATEINST((*concsolvercreateinst)), SCIP_DECL_CONCSOLVERDESTROYINST((*concsolverdestroyinst)), SCIP_DECL_CONCSOLVERINITSEEDS((*concsolverinitseeds)), SCIP_DECL_CONCSOLVEREXEC((*concsolverexec)), SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA((*concsolvercopysolvdata)), SCIP_DECL_CONCSOLVERSTOP((*concsolverstop)), SCIP_DECL_CONCSOLVERSYNCWRITE((*concsolversyncwrite)), SCIP_DECL_CONCSOLVERSYNCREAD((*concsolversyncread)), SCIP_DECL_CONCSOLVERTYPEFREEDATA((*concsolvertypefreedata)), SCIP_CONCSOLVERTYPEDATA *data)
SCIP_Real SCIPconcsolverGetSolvingTime(SCIP_CONCSOLVER *concsolver)
SCIP_Longint SCIPconcsolverGetNTighterBnds(SCIP_CONCSOLVER *concsolver)
char * SCIPconcsolverTypeGetName(SCIP_CONCSOLVERTYPE *concsolvertype)
SCIP_RETCODE SCIPconcsolverSync(SCIP_CONCSOLVER *concsolver, SCIP_SET *set)
SCIP_Longint SCIPconcsolverGetNLPIterations(SCIP_CONCSOLVER *concsolver)
void SCIPconcsolverTypeFree(SCIP_CONCSOLVERTYPE **concsolvertype)
SCIP_RETCODE SCIPconcsolverStop(SCIP_CONCSOLVER *concsolver)
char * SCIPconcsolverGetName(SCIP_CONCSOLVER *concsolver)
SCIP_Real SCIPconcsolverTypeGetPrefPrio(SCIP_CONCSOLVERTYPE *concsolvertype)
SCIP_Longint SCIPconcsolverGetNSolsShared(SCIP_CONCSOLVER *concsolver)
SCIP_Longint SCIPconcsolverGetMemTotal(SCIP_CONCSOLVER *concsolver)
void SCIPconcsolverTypeSetData(SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVERTYPEDATA *data)
SCIP_CONCSOLVERTYPEDATA * SCIPconcsolverTypeGetData(SCIP_CONCSOLVERTYPE *concsolvertype)
datastructures for concurrent solvers
SCIP_RETCODE SCIPaddConcurrentSolver(SCIP *scip, SCIP_CONCSOLVER *concsolver)
int SCIPgetNConcurrentSolvers(SCIP *scip)
helper functions for concurrent scip solvers
#define SCIP_CALL_FINALLY(x, y)
int SCIPgetNVars(SCIP *scip)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)
SCIP_RETCODE SCIPstopClock(SCIP *scip, SCIP_CLOCK *clck)
SCIP_RETCODE SCIPfreeClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_RETCODE SCIPcreateWallClock(SCIP *scip, SCIP_CLOCK **clck)
SCIP_RETCODE SCIPstartClock(SCIP *scip, SCIP_CLOCK *clck)
int SCIPsnprintf(char *t, int len, const char *s,...)
static const char * paramname[]
memory allocation routines
#define BMSfreeMemory(ptr)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSclearMemory(ptr)
#define BMSfreeMemoryArray(ptr)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_RETCODE SCIPsetAddRealParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
internal methods for global SCIP settings
SCIP_CONCSOLVERTYPEDATA * data
SCIP_Longint ntighterbnds
SCIP_Real timesincelastsync
SCIP_Longint ntighterintbnds
SCIP_CLOCK * totalsynctime
SCIP_CONCSOLVERTYPE * type
SCIP_Longint nlpiterations
SCIP_CONCSOLVERDATA * data
datastructures for concurrent solvers
SCIP main data structure.
datastructures for problem statistics
SCIP_Real SCIPsyncdataGetSyncFreq(SCIP_SYNCDATA *syncdata)
SCIP_Longint SCIPsyncdataGetMemTotal(SCIP_SYNCDATA *syncdata)
SCIP_BOUNDSTORE * SCIPsyncdataGetBoundChgs(SCIP_SYNCDATA *syncdata)
SCIP_RETCODE SCIPsyncstoreFinishSync(SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA **syncdata)
SCIP_Real SCIPsyncdataGetUpperbound(SCIP_SYNCDATA *syncdata)
SCIP_RETCODE SCIPsyncstoreEnsureAllSynced(SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata)
void SCIPsyncdataSetSyncFreq(SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata, SCIP_Real syncfreq)
SCIP_RETCODE SCIPsyncstoreStartSync(SCIP_SYNCSTORE *syncstore, SCIP_Longint syncnum, SCIP_SYNCDATA **syncdata)
SCIP_Real SCIPsyncdataGetLowerbound(SCIP_SYNCDATA *syncdata)
int SCIPsyncdataGetNSynced(SCIP_SYNCDATA *syncdata)
SCIP_SYNCDATA * SCIPsyncstoreGetSyncdata(SCIP_SYNCSTORE *syncstore, SCIP_Longint syncnum)
SCIP_SYNCDATA * SCIPsyncstoreGetNextSyncdata(SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata, SCIP_Real syncfreq, SCIP_Longint writenum, SCIP_Real *delay)
int SCIPsyncstoreGetNSolvers(SCIP_SYNCSTORE *syncstore)
SCIP_STATUS SCIPsyncdataGetStatus(SCIP_SYNCDATA *syncdata)
the function declarations for the synchronization store
#define SCIP_DECL_CONCSOLVERSTOP(x)
#define SCIP_DECL_CONCSOLVERINITSEEDS(x)
#define SCIP_DECL_CONCSOLVERTYPEFREEDATA(x)
#define SCIP_DECL_CONCSOLVERSYNCWRITE(x)
#define SCIP_DECL_CONCSOLVERDESTROYINST(x)
#define SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA(x)
struct SCIP_ConcSolverTypeData SCIP_CONCSOLVERTYPEDATA
#define SCIP_DECL_CONCSOLVEREXEC(x)
#define SCIP_DECL_CONCSOLVERCREATEINST(x)
#define SCIP_DECL_CONCSOLVERSYNCREAD(x)
struct SCIP_ConcSolverData SCIP_CONCSOLVERDATA
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_PARA_DETERMINISTIC
struct SCIP_SyncData SCIP_SYNCDATA
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4