dp_config.h

Go to the documentation of this file.
00001 #ifndef __DP_CONFIG_H__
00002 #define __DP_CONFIG_H__
00003 /* This is the version string used for the program */
00004 #define DP_VERSION_STRING "05-10-14-0924"
00005 
00006 /* Used internally for handling numerical issues related to dual dominoes and
00007  * dual-2-dominoes. Basically, if the value of a dual-tooth is between
00008  * DP_RESET_VALUE and 0.0, then the dual-tooth's value is reset to 0.0. On the
00009  * other hand, if dual-tooth's value is less than DP_RESET_VALUE the program
00010  * will complain that the SEC conditions are not satisfied. */
00011 #ifndef DP_RESET_VALUE
00012 #define DP_RESET_VALUE -0.002
00013 #endif
00014 
00015 /* this manages the minimum violation value for the inequalities found. */
00016 #ifndef DP_MAXVIOLATED_EPSILON
00017 #define DP_MAXVIOLATED_EPSILON 0.0001
00018 #endif
00019 
00020 /* set to one if while updating the list of current cuts we use the best
00021  * violation criterion */
00022 #define DDPC_BEST_VIOLATION 1
00023 
00024 /* set to one if we replace cuts 'dominated' by the new one (were domination
00025  * depend on the definiton of DP_BIG_ANGLE */
00026 #define DDPC_REPLACE_CLOSE 1
00027 
00028 /* this manages the threshold of selection for DP cuts */
00029 #define DP_BIG_ANGLE 0.55
00030 
00031 /* set this to one if we want to improve the 'spread' of our inequalities
00032  * according to SELECT_MIN_NORM and DP_MAXDECREASE */
00033 #define DDPC_IMPROVE_SPREAD 1
00034 
00035 /* this determine up to what point we want to decrease the norm */
00036 #define SELECT_MIN_NORM 1.5
00037 
00038 /* this factor is how much we allow the quiality of the cut to decreas if we
00039  * increas the worst angle */
00040 #define DP_MAXDECREASE 0.5
00041 
00042 /* how we choose the midle path when we untangle de dominoes */
00043 #define DP_LONGEST  1
00044 #define DP_SHORTEST 2
00045 #define DP_LIGHTEST 3
00046 #define DP_HEVIEST  4
00047 #ifndef DP_CHOOSE_MIDDLE
00048 #define DP_CHOOSE_MIDDLE DP_LONGEST
00049 #endif
00050 
00051 /* Original edges (those passed by concorde) whose value are below
00052    ZERO_X_EPSILON are eliminated */
00053 
00054 #ifndef ZERO_X_EPSILON
00055 #define ZERO_X_EPSILON 0.000001
00056 #endif
00057 
00058 #ifndef CHECK_MODE
00059 #define CHECK_MODE 0
00060 #endif
00061 
00062 #ifndef DISPLAY_MODE
00063 #define DISPLAY_MODE 1
00064 #endif
00065 
00066 #ifndef DISPLAY_RESOLUTION
00067 #define DISPLAY_RESOLUTION 10
00068 #define IDR (1.0/DISPLAY_RESOLUTION)
00069 #endif
00070 
00071 #ifndef LOG_MODE
00072 #define LOG_MODE 1
00073 #endif
00074 
00075 #ifndef ELIM_EDGES
00076 #define ELIM_EDGES 1
00077 #endif
00078 
00079 /* control the reduction of paths of ones in G*, if setted to one we keep at
00080  * most three edges of a consecutive one path in bdualG */
00081 #ifndef __DP_ONES_PATH_CONTRACT__
00082 #define __DP_ONES_PATH_CONTRACT__ 1
00083 #endif
00084 
00085 /*** eg_ddomino.h ***/
00086 
00087 /* This constant determines how much less than 4.0 the path sum defining
00088    the domino has to be */
00089 
00090 #ifndef DDOM_EPSILON
00091 #define DDOM_EPSILON 0.00001
00092 #endif
00093 
00094 /* This is a speed up. It eliminates nodes 't' from the graph whose distance
00095    to 's' is greater than 4.5/3 (look at this!!!) */
00096 
00097 #ifndef DDOM_LARGE_MODE
00098 #define DDOM_LARGE_MODE 1
00099 #endif
00100 
00101 #ifndef DP_REMOVE_EMPTY_HANDLES
00102 #define DP_REMOVE_EMPTY_HANDLES 1
00103 #endif
00104 
00105 /* this flag determines wether or not to use the heuristic which uses 
00106    graph M^* to find additional violated cuts */
00107 
00108 #ifndef DDP_HEURISTIC
00109 #define DDP_HEURISTIC 1
00110 #endif
00111 
00112 #ifndef DDP_HEURISTIC_CHANCES
00113 #define DDP_HEURISTIC_CHANCES 15
00114 #endif
00115 
00116 // How much time the 1P separator dedicates to generating violated cuts
00117 extern double DDP_HEURISTIC_MAXTIME;
00118 
00119 // How many cuts the 1P separator stores
00120 #ifndef DDP_HEURISTIC_MAXCUTS
00121 #define DDP_HEURISTIC_MAXCUTS 500
00122 #endif
00123 
00124 #ifndef DDP_MIN_VIOLATION
00125 #define DDP_MIN_VIOLATION 0.001
00126 #endif
00127 
00128 #ifndef DDPC_PERTURB_ODD
00129 #define DDPC_PERTURB_ODD 0
00130 #endif
00131 
00132 #ifndef DP_TEETHING
00133 #define DP_TEETHING 0
00134 #endif
00135 
00136 #ifndef DP_TEETHING_PERTURBATION
00137 #define DP_TEETHING_PERTURBATION 1e-6
00138 #endif
00139 
00140 #ifndef DP_HEUR_MIN_DOM
00141 #define DP_HEUR_MIN_DOM 3
00142 #endif
00143 
00144 #ifndef DP_HEUR_CLOSE_BIAS
00145 #define DP_HEUR_CLOSE_BIAS 0.1
00146 #endif
00147 
00148 #ifndef DP_HEUR_MORE_DOM_BIAS
00149 #define DP_HEUR_MORE_DOM_BIAS 0.65
00150 #endif
00151 
00152 #ifndef DP_HEUR_BACKTRACK_K
00153 #define DP_HEUR_BACKTRACK_K 10
00154 #endif
00155 
00156 #ifndef OLD_HEURISTIC
00157 #define OLD_HEURISTIC 0
00158 #endif
00159 
00160 #ifndef NEW_HEURISTIC
00161 #define NEW_HEURISTIC 1
00162 #endif
00163 
00164 #ifndef WHICH_HEURISTIC
00165 #define WHICH_HEURISTIC 1
00166 #endif
00167 
00168 #ifndef __DPFINDTREE_F__
00169 #define __DPFINDTREE_F__
00170 
00171 /* this define the type of function that generate trees */
00172 typedef int (*DPfindTree_f) (int ncount,
00173                              int ecount,
00174                              int *elist,
00175                              double *wlist,
00176                              int *tlist,
00177                              void *function_data);
00178 #endif
00179 
00180 #endif

Generated on Thu Oct 20 14:58:40 2005 for DominoParitySeparator by  doxygen 1.4.5