示例#1
0
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, )
示例#2
0
def randomIndividual():
    ret = dict()
    options = makemodel.getoptions()
    for (param, choices) in options.items():
        ret[param] = randParam(param, choices)

    return cleanparams(ret)
示例#3
0
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,)
示例#4
0
def randomIndividual():
    ret = dict()
    options = makemodel.getoptions()
    for (param,choices) in options.iteritems():
        ret[param] = randParam(param, choices)
    
    return cleanparams(ret)
示例#5
0
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)
示例#6
0
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)   
示例#7
0
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
示例#8
0
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
示例#9
0
#!/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()
示例#10
0
    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)
示例#11
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()
示例#12
0
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()