#ifndef _paras_hpp_INCLUDED #define _paras_hpp_INCLUDED #include #include #include // name, type, short-name,must-need, default ,low, high, comments #define PARAS \ PARA( DPS , int , '\0' , false , 0 , 0 , 1 , "DPS/NPS") \ PARA( DPS_period , int , '\0' , false , 10000 , 1 , 1e8 , "DPS sharing period") \ PARA( margin , int , '\0' , false , 0 , 0 , 1e3 , "DPS margin") \ PARA( pakis , int , '\0' , false , 0 , 0 , 1 , "Use pakis diversity") \ PARA( reset , int , '\0' , false , 0 , 0 , 1 , "Dynamically reseting") \ PARA( reset_time , int , '\0' , false , 10 , 1 , 1e5 , "Reseting base interval (seconds)") \ PARA( share , int , '\0' , false , 0 , 0 , 1 , "Sharing learnt clauses") \ PARA( share_intv , int , '\0' , false , 500000, 0 , 1e9 , "Sharing interval (microseconds)") \ PARA( share_lits , int , '\0' , false , 1500 , 0 , 1e6 , "Sharing lits (per every #share_intv seconds)") \ PARA( shuffle , int , '\0' , false , 1 , 0 , 1 , "Use random shuffle") \ PARA( simplify , int , '\0' , false , 1 , 0 , 1 , "Use Simplify (only preprocess)") \ PARA( threads , int , '\0' , false , 32 , 1 , 128 , "Thread number") \ PARA( times , double , '\0' , false , 5000 , 0 , 1e8 , "Cutoff time") // name, short-name, must-need, default, comments #define STR_PARAS \ STR_PARA( config , '\0' , false , "" , "Config file") \ STR_PARA( instance , 'i' , true , "" , "CNF format instance") struct paras { #define PARA(N, T, S, M, D, L, H, C) \ T N = D; PARAS #undef PARA #define STR_PARA(N, S, M, D, C) \ std::string N = D; STR_PARAS #undef STR_PARA std::unordered_map map_int; std::unordered_map map_double; std::unordered_map map_string; void init_paras (); void sync_paras (); void print_change (); void set_para (char *arg, int val); void set_para (char *arg, double val); void set_para (char *arg, char* val); }; #define OPT(N) (opt->N) #endif