#include #include #include #include #include "Heuristics.h" using namespace std; int param_N; // use N items double param_u; // pick weights between [0,u] for u<1 bool param_useFast; // if true, use FastPQ bool param_verbose; // if true, print verbose output. unsigned long param_seed; // seed for random number generator (if desired) void generateWeights(double* w, int N, double u, long seed = (unsigned)time(NULL)) { srandom(seed); for (int i = 0; i 1.0) { cout << "second argument = u (paramater 0 < u <= 1, gives range for weights).\n"; cout << " (argument given was '" << argv[2] << "')\n"; valid = false; } param_useFast = (argv[3][0]=='1'); if (argv[3][0] != '0' && argv[3][0] != '1') { cout << "third argument should be '0' for slowPQ or '1' for fastPQ.\n"; cout << " (argument given was '" << argv[3] << "')\n"; valid = false; } param_verbose = (argv[4][0]=='1'); if (argv[4][0] != '0' && argv[4][0] != '1') { cout << "fourth argument should be '0' for brief output or '1' for verbose output.\n"; cout << " (argument given was '" << argv[4] << "')\n"; valid = false; } if (valid) { if (argc>5) { param_seed = strtoul(argv[5],&endptr,10); if (endptr==argv[5]) { cout << "fifth argument (optional) = 'seed' value for random number generator.\n"; cout << " (argument given was '" << argv[5] << "')\n"; valid = false; } } else { // use clock as seed param_seed = (unsigned)time(NULL); } } } if (valid) { cout << "------------------------------------------\n"; cout << "Parameters:\n"; cout << " N=" << param_N << ", u=" << param_u << ".\n"; cout << " PQ: " << (param_useFast ? "fast" : "slow") << ".\n"; cout << " Verbose output: " << (param_verbose ? "yes" : "no") << ".\n"; cout << " Random Seed: " << param_seed << ".\n"; cout << "------------------------------------------\n"; cout << "\n"; } return(valid); } int main(int argc, const char* argv[]) { if (getArguments(argc,argv)) runTrial(param_N,param_u,param_useFast,param_verbose,param_seed); return(0); }