def main(args): global SR_MTS, SR_global_MTS """ Main program. It uses Run DE for experiments. F, CR must be float, or 'n' as a normal """ description = "SHADEILS" parser = argparse.ArgumentParser(description) parser.add_argument("-f", default=16, type=int, dest="function", help='function') # Argument for problem type: D4, D12 or D19, both with or without noise parser.add_argument("-pr", required=True, type=str, choices=list( ("D4", "D12", "D19", "D4N", "D12N", "D19N")), dest="problem", help='problem type') parser.add_argument("-v", default=False, dest="verbose", action='store_true', help='verbose mode') parser.add_argument("-s", default=1, type=int, dest="seed", choices=range(1, 6), help='seed (1 - 5)') parser.add_argument("-r", default=1, type=int, dest="run", help='runs') parser.add_argument("-e", required=False, type=int, dest="maxevals", help='maxevals') # Argument for index of evals, that is [1,2,3] -> [1.2e5, 6e5,3e6] parser.add_argument("-i", default=1, type=int, dest="index", choices=range(1, 4), help="index of evals") parser.add_argument("-t", default=0.001, type=float, dest="threshold", help='threshold') parser.add_argument("-p", default=100, type=int, dest="popsize", help='population size') parser.add_argument("-H", default=3, type=int, dest="shade_h", help='SHADE history size') parser.add_argument("-d", default="results", type=str, dest="dir_output", help='directory output') # Time stamp for comparative study time0 = time.clock() #seeds seeds = [24, 45689, 97232447, 96793335, 12345679] args = parser.parse_args(args) fun = args.function problem = args.problem # Noise problem, False by default noise = False if (problem in ["D4", "D4N"]): dim = 1024 elif (problem in ["D12", "D12N"]): dim = 3072 elif (problem in ["D19", "D19N"]): dim = 4864 if ("N" in problem): print("Problem with noise") noise = True print("EEG Problem: {0}".format(problem)) print("Problem: {0}".format(problem)) print("Dimension: {0}".format(dim)) print("Seed: {0}".format(args.seed)) print("Treshold: {0}".format(args.threshold)) print("Popsize: {0}".format(args.popsize)) if args.shade_h is None: args.shade_h = min(args.popsize, 100) print("SHADE_H: {0}".format(args.shade_h)) if (args.maxevals): evals = list(map(int, [1.0e5, 6e5, 3e6])[:args.maxevals]) else: evals = list(map(int, [1.0e5, 6e5, 3e6])) evals_index = args.index bench = Benchmark() maxfuns = bench.get_num_functions() funinfo = bench.get_info(fun, dim) if not (1 <= fun <= maxfuns and 1 <= args.seed <= 5): parser.print_help() sys.exit(1) name = "SHADEILS" fname = name + "_EEGProblem_" + problem + "_" + str( evals[evals_index - 1]) + ".txt" output = path.join(args.dir_output, fname) if not args.verbose and isfile(output): fin = open(output, 'rb') lines = fin.readlines() fin.close() if lines: print("Experiment already exists. Check results folder") return if not args.verbose: fid = open(output, 'w') else: fid = sys.stdout # Parameter commons #bench.set_algname("shadeils_restart0.1_pos") fitness_fun = bench.get_function(fun, dim, noise) seed(seeds[args.seed - 1]) for _ in range(args.run): SR_MTS = [] SR_global_MTS = [] SHADEILS.ihshadels(fitness_fun, funinfo, dim, evals, evals_index, fid, time0, threshold=args.threshold, popsize=args.popsize, info_de=args.shade_h) bench.next_run() fid.close()
def main(args): global SR_MTS, SR_global_MTS """ Main program. It uses Run DE for experiments. F, CR must be float, or 'n' as a normal """ description = "IHDELS" parser = argparse.ArgumentParser(description) parser.add_argument("-f", required=True, type=int, choices=range(1, 16), dest="function", help='function') parser.add_argument("-v", default=False, dest="verbose", action='store_true', help='verbose mode') parser.add_argument("-s", default=1, type=int, dest="seed", choices=range(1, 6), help='seed (1 - 5)') parser.add_argument("-r", default=5, type=int, dest="run", help='runs') parser.add_argument("-e", required=False, type=int, dest="maxevals", help='maxevals') parser.add_argument("-t", default=0.01, type=float, dest="threshold", help='threshold') parser.add_argument("-p", default=100, type=int, dest="popsize", help='population size') parser.add_argument("-H", default=None, type=int, dest="shade_h", help='SHADE history size') parser.add_argument("-d", default="results", type=str, dest="dir_output", help='directory output') #seeds seeds = [23, 45689, 97232447, 96793335, 12345679] args = parser.parse_args(args) fun = args.function dim = 1000 print("Function: {0}".format(fun)) print("Seed: {0}".format(args.seed)) print("Treshold: {0}".format(args.threshold)) print("Popsize: {0}".format(args.popsize)) if args.shade_h is None: args.shade_h = min(args.popsize, 100) print("SHADE_H: {0}".format(args.shade_h)) if (args.maxevals): evals = list(map(int, [1.2e5, 6e5, 3e6])[:args.maxevals]) else: evals = list(map(int, [1.2e5, 6e5, 3e6])) print(evals) bench = Benchmark() maxfuns = bench.get_num_functions() funinfo = bench.get_info(fun) if not (1 <= fun <= maxfuns and 1 <= args.seed <= 5): parser.print_help() sys.exit(1) name = "SHADEILS" fname = name +"_pop{args.popsize}_H{args.shade_h}_t{args.threshold:.2f}_F{args.function}_{args.seed}r{args.run}.txt".format(args=args); output = path.join(args.dir_output, fname) if not args.verbose and isfile(output): fin = open(output, 'rb') lines = fin.readlines() fin.close() if lines: print("Experiment already exists. Check results folder") return if not args.verbose: fid = open(output, 'w') else: fid = sys.stdout # Parameter commons #bench.set_algname("shadeils_restart0.1_pos") fitness_fun = bench.get_function(fun) seed(seeds[args.seed-1]) for _ in range(args.run): SR_MTS = [] SR_global_MTS = [] SHADEILS.ihshadels(fitness_fun, funinfo, dim, evals, fid, threshold=args.threshold, popsize=args.popsize, info_de=args.shade_h) bench.next_run() fid.close()