launch_financial_batch_process_randomized
Description
Enterprise users only.
Launches a collection of financial processes with randomly chosen parameters.
Simple Example
def StartBatchProcesses(api_key,eids,params_template,total_processes,total_running,prefix,netDefOverride,netDefManual=None,codeString=None):
pq = FinancialBatchOptimizer.pq
param_list =[]
netDefLoaded = {}
if not netDefManual == None:
for netdef in netDefManual:
param_list.append(netdef['strategy']['dependencies']['input'])
netDefLoaded = netdef # Populate the default network definition
eids_to_add = eids
for eid in eids_to_add:
arrdl = pq.download_experiment({ 'api_key' : api_key,'experiment_id':eid},remote=False)
netDefLoaded = FinancialBatchOptimizer.getSettings(arrdl)
codeString = FinancialBatchOptimizer.getFinancialCode(arrdl)
#print(netDefLoaded)
param_list.append( netDefLoaded['strategy']['dependencies']['input'] )
import pprint
print('')
print(eid)
pprint.pprint(netDefLoaded['strategy']['dependencies']['input'] )
assert len(netDefLoaded) > 0
assert len(codeString) > 0
factor = 1.0
count_batch_processes = total_processes/len(param_list)
count_batch_running = total_running/len(param_list)
batch_eids = []
for pars_found in param_list:
selected_keys = []
for k in params_template:
selected_keys.append({'key':k,'location':params_template[k]['location']})
params_new = {}
for k in params_template:
dev = params_template[k]['deviation']
val = float(pars_found[k])
if dev > (params_template[k]['max'] - params_template[k]['min'])/2:
dev = (params_template[k]['max']-params_template[k]['min'])/2
if float(dev + val) > params_template[k]['max']:
val = val - (float(dev +val) - params_template[k]['max'])
if val - dev < params_template[k]['min']:
val = val + (params_template[k]['min'] - (val - dev) )
params_new[k] = {'value':val,'deviation':dev,'max':params_template[k]['max'],'min':params_template[k]['min'],}
params = params_new
netDefLoaded.update(netDefOverride)
print('OVERRIDE')
print(netDefOverride)
q = {'api_key' : api_key,
'name_prefix' : prefix,
'process_settings' : {},
'launch_settings' : {},
'experiment_params':params,
'experiment_count':int(count_batch_processes),
'experiment_keys':selected_keys,
'network_def' : netDefLoaded,
'max_running':int(count_batch_running),
'batch_sleep':15,
'code' : codeString}
#import pprint
#pprint.pprint(q)
dat = pq.launch_financial_batch_process_randomized(q,remote=False)
print(dat)
eid = dat['experiment_id']
batch_eids.append(eid)
print(eid)
return [batch_eids,codeString]