def mutateIndividual(ind, indpb=0.05): '''for each param, with prob indpb randomly sample another choice''' options = makemodel.getoptions() for (param, choices) in options.items(): if np.random.rand() < indpb: ind[param] = randParam(param, choices) return (ind, )
def randomIndividual(): ret = dict() options = makemodel.getoptions() for (param, choices) in options.items(): ret[param] = randParam(param, choices) return cleanparams(ret)
def mutateIndividual(ind, indpb=0.05): '''for each param, with prob indpb randomly sample another choice''' options = makemodel.getoptions() for (param,choices) in options.iteritems(): if np.random.rand() < indpb: ind[param] = randParam(param, choices) return (ind,)
def randomIndividual(): ret = dict() options = makemodel.getoptions() for (param,choices) in options.iteritems(): ret[param] = randParam(param, choices) return cleanparams(ret)
def crossover(ind1, ind2, indpdb=0.5): '''swap choices with probability indpb''' options = makemodel.getoptions() for (param, choices) in options.items(): if np.random.rand() < indpdb: tmp = ind1[param] ind1[param] = ind2[param] ind2[param] = tmp return (ind1, ind2)
def crossover(ind1, ind2, indpdb=0.5): '''swap choices with probability indpb''' options = makemodel.getoptions() for (param,choices) in options.iteritems(): if np.random.rand() < indpdb: tmp = ind1[param] ind1[param] = ind2[param] ind2[param] = tmp return (ind1,ind2)
def makejson(): '''return dictionary of config options from makemodel''' opts = makemodel.getoptions() d=OrderedDict() for (name,vals) in sorted(opts.items()): paramsize=1 if type(vals) == tuple: options=map(str,vals) paramtype="enum" data=OrderedDict([("name",name), ("type", paramtype), ("size", paramsize),("options",options)]) elif isinstance(vals, makemodel.Range): parammin = vals.min parammax = vals.max paramtype="float" data=OrderedDict([("name",name), ("type", paramtype), ("min", parammin), ("max", parammax), ("size", paramsize)]) else: print "Unknown type" sys.exit(-1) d[name]=data return d
def makejson(): '''return dictionary of config options from makemodel''' opts = makemodel.getoptions() d = OrderedDict() for (name, vals) in sorted(opts.items()): paramsize = 1 if type(vals) == tuple: options = map(str, vals) paramtype = "enum" data = OrderedDict([("name", name), ("type", paramtype), ("size", paramsize), ("options", options)]) elif isinstance(vals, makemodel.Range): parammin = vals.min parammax = vals.max paramtype = "float" data = OrderedDict([("name", name), ("type", paramtype), ("min", parammin), ("max", parammax), ("size", paramsize)]) else: print "Unknown type" sys.exit(-1) d[name] = data return d
#!/usr/bin/env python '''Given a results.csv file and password for db, put the contents into google sql''' import sys, re, MySQLdb import pandas as pd import makemodel import numpy as np conn = MySQLdb.connect(host="35.196.158.205", user="******", passwd=sys.argv[1], db="opt2") cursor = conn.cursor() opts = makemodel.getoptions() params = makemodel.getdefaults() params['id'] = 'REQUESTED' #do 5 variations for split in range(5): params['split'] = split params['seed'] = np.random.randint(0, 100000) data = pd.DataFrame([params]) row = data.iloc[0] insert = 'INSERT INTO params (%s) VALUES (%s)' % (','.join( row.index), ','.join(['%s'] * len(row))) cursor.execute(insert, row) conn.commit()
conn.autocommit(True) cursor = conn.cursor(DictCursor) return cursor parser = argparse.ArgumentParser(description='Generate more configurations if needed') parser.add_argument('--host',type=str,help='Database host',required=True) parser.add_argument('-p','--password',type=str,help='Database password',required=True) parser.add_argument('--db',type=str,help='Database name',default='opt1') parser.add_argument('--pending_threshold',type=int,default=12,help='Number of pending jobs that triggers an update') parser.add_argument('-n','--num_configs',type=int,default=4,help='Number of configs to generate - will add 6X as many jobs') parser.add_argument('-s','--spearmint',type=str,help='Location of spearmint-lite.py',required=True) args = parser.parse_args() opts = makemodel.getoptions() # first see how many id=REQUESTED jobs there are cursor = getcursor() cursor.execute('SELECT COUNT(*) FROM params WHERE id = "REQUESTED"') rows = cursor.fetchone() pending = rows.values()[0] cursor.close() print "Pending jobs:",pending #if more than pending_threshold, quit if pending > args.pending_threshold: sys.exit(0)
default='INCREMENTAL.info') parser.add_argument( '--mingroup', type=int, help='required number of evaluations of a model for it to count', default=5) args = parser.parse_args() # first see how many id=REQUESTED jobs there are cursor = getcursor() cursor.execute('SELECT COUNT(*) FROM params WHERE id = "REQUESTED"') rows = cursor.fetchone() pending = list(rows.values())[0] #get options options = sorted(makemodel.getoptions().items()) #print "Pending jobs:",pending sys.stdout.write('%d ' % pending) sys.stdout.flush() #if more than pending_threshold, quit if pending > args.pending_threshold: sys.exit(0) #create gnina-spearmint directory if it doesn't exist already if not os.path.exists('gnina-spearmint-incremental'): os.makedirs('gnina-spearmint-incremental') #read in prioritized list of parameters params = args.priority.read().rstrip().split()
parser.add_argument('--model_threshold',type=int,default=12,help='Number of unique models to evaluate at a level before giving up and going to the next level') parser.add_argument('--priority',type=file,help='priority order of parameters',required=True) parser.add_argument('--info',type=str,help='incremental information file',default='INCREMENTAL.info') parser.add_argument('--mingroup',type=int,help='required number of evaluations of a model for it to count',default=5) args = parser.parse_args() # first see how many id=REQUESTED jobs there are cursor = getcursor() cursor.execute('SELECT COUNT(*) FROM params WHERE id = "REQUESTED"') rows = cursor.fetchone() pending = rows.values()[0] #get options options = sorted(makemodel.getoptions().items()) #print "Pending jobs:",pending sys.stdout.write('%d '%pending) sys.stdout.flush() #if more than pending_threshold, quit if pending > args.pending_threshold: sys.exit(0) #create gnina-spearmint directory if it doesn't exist already if not os.path.exists('gnina-spearmint-incremental'): os.makedirs('gnina-spearmint-incremental') #read in prioritized list of parameters params = args.priority.read().rstrip().split()