GOBNILP  f164d83
circuit_cuts.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * GOBNILP Copyright (C) 2012-2017 James Cussens, Mark Bartlett *
3  * *
4  * This program is free software; you can redistribute it and/or *
5  * modify it under the terms of the GNU General Public License as *
6  * published by the Free Software Foundation; either version 3 of the *
7  * License, or (at your option) any later version. *
8  * *
9  * This program is distributed in the hope that it will be useful, *
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
12  * General Public License for more details. *
13  * *
14  * You should have received a copy of the GNU General Public License *
15  * along with this program; if not, see *
16  * <http://www.gnu.org/licenses>. *
17  * *
18  * Additional permission under GNU GPL version 3 section 7 *
19  * *
20  * If you modify this Program, or any covered work, by linking or *
21  * combining it with SCIP (or a modified version of that library), *
22  * containing parts covered by the terms of the ZIB Academic License, *
23  * the licensors of this Program grant you additional permission to *
24  * convey the resulting work. *
25  * *
26  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27 
32 #ifndef __SCIP_CIRCUIT_CUTS_H__
33 #define __SCIP_CIRCUIT_CUTS_H__
34 
35 #include "scip/scip.h"
36 #include "stack.h"
37 #include "vector.h"
38 #include "vectorlist.h"
39 #include "parent_set_data.h"
40 
42 typedef struct
43 {
44  SCIP_Real** adj_matrix;
45  Stack* s;
46  SCIP_Bool* blocked;
47  VectorList* components;
48  VectorList* cycles;
49  VectorList* b;
50  Vector* index_array;
51  Vector* lowlink;
52  SCIP_VAR** included_cluster;
53  SCIP_VAR** excluded_cluster;
54  SCIP_VAR** included_cycle;
55  SCIP_VAR** excluded_cycle;
56  int max_cycles;
57  SCIP_Bool add_fractional_cuts;
58  SCIP_Bool add_cluster_cuts;
59  SCIP_Bool add_cycle_cuts;
65 
66 extern SCIP_RETCODE CC_addParams(SCIP* scip);
67 extern SCIP_RETCODE CC_initialise(SCIP* scip, CircuitCutsStorage* ccs, ParentSetData* data);
68 extern SCIP_RETCODE CC_finalise(SCIP* scip, CircuitCutsStorage* ccs, int n);
69 extern SCIP_RETCODE CC_findCuts(SCIP* scip, SCIP_CONSHDLR* conshdlr, ParentSetData* psd, SCIP_SOL* sol, CircuitCutsStorage* ccs, int* nGen, SCIP_Bool forcecuts, SCIP_Bool* found_efficacious_ptr, SCIP_Bool* cutoff);
70 
71 #endif
SCIP_Bool add_cycle_cuts_to_pool
Whether cycle cuts should be added to the cut pool.
Definition: circuit_cuts.h:61
SCIP_Bool add_fractional_cuts
Whether fractional circuits should be looked for.
Definition: circuit_cuts.h:57
Function and type declarations for parent_set_data.c.
Function declarations for vectorlist.c.
SCIP_RETCODE CC_addParams(SCIP *scip)
Adds parameters to those recognised by SCIP.
Definition: circuit_cuts.c:51
A list of lists of integer values.
Definition: vectorlist.h:39
A collection of storage items that can be allocated just once per constraint to save time...
Definition: circuit_cuts.h:42
int max_cycles
The maximum number of cycles to find.
Definition: circuit_cuts.h:56
SCIP_Bool add_cycle_cuts
Whether cycle cuts should be added.
Definition: circuit_cuts.h:59
The basic data needed to record a collection of parent sets associated with a problem.
Definition: parent_set_data.h:48
int max_cycle_length
The maximum length of cycle to look for.
Definition: circuit_cuts.h:62
A list of integer values.
Definition: vector.h:38
SCIP_Bool add_cluster_cuts
Whether cluster cuts should be added.
Definition: circuit_cuts.h:58
SCIP_RETCODE CC_findCuts(SCIP *scip, SCIP_CONSHDLR *conshdlr, ParentSetData *psd, SCIP_SOL *sol, CircuitCutsStorage *ccs, int *nGen, SCIP_Bool forcecuts, SCIP_Bool *found_efficacious_ptr, SCIP_Bool *cutoff)
Find cuts to rule out cycles in the current solution.
Definition: circuit_cuts.c:585
Function declarations for vector.c.
SCIP_RETCODE CC_initialise(SCIP *scip, CircuitCutsStorage *ccs, ParentSetData *data)
Sets up data structures once, to avoid creating them everytime the separation routine is called...
Definition: circuit_cuts.c:101
SCIP_RETCODE CC_finalise(SCIP *scip, CircuitCutsStorage *ccs, int n)
Frees all memory allocated by CC_initialise.
Definition: circuit_cuts.c:166
A stack of integer values.
Definition: stack.h:38
SCIP_Bool add_cluster_cuts_to_pool
Whether cluster cuts should be added to the cut pool.
Definition: circuit_cuts.h:60
Function declarations for stack.c.