from logs import logDecorator as lD
import json, pprint
config = json.load(open('../config/config.json'))
logBase = config['logging']['logBase'] + '.modules.trainAgents.trainAgents'
from lib.agents import trainAgents as tA
[docs]@lD.log(logBase + '.doSomething')
def doSomething(logger, resultsDict):
'''print a line
This function simply prints a single line
Parameters
----------
logger : {logging.Logger}
The logger used for logging error information
'''
configAgentGym = {
"envName": "CartPole-v1",
"agentType" : "DoubleDQN",
"memorySize": 100005,
"initMemoryIterations": 10000,
"updateMemory": [],
"nIterations": 5000,
"eps0": 1,
"epsDecay": 0.9999,
"minEps": 0.01,
"maxSteps": 10000,
"nSamples": 500,
"Tau": 0.001,
"N": 4,
"inpSize": 4,
"outSize": 2,
"hiddenSizes": [256, 128, 128],
"hiddenActivations": ["tanh", "tanh", "tanh"],
"lr": 0.0001,
"sigma": 0.01,
"loadFolder": None,
"saveFolder": None
}
configAgentGym['saveFolder'] = f'/home/sankha/Documents/mnt/hdd01/models/RLalgos/{configAgentGym["envName"]}/{configAgentGym["agentType"]}'
configAgentGym['loadFolder'] = f'/home/sankha/Documents/mnt/hdd01/models/RLalgos/CartPole-v1/2019-06-02--11-27-13_00024_111'
parameters = ['nIterations',
'initMemoryIterations',
'eps0',
'epsDecay',
'minEps',
'maxSteps',
'nSamples',
'Tau',
"inpSize",
"outSize",
"hiddenSizes",
"hiddenActivations",
'lr']
for p in parameters:
try:
configAgent[p] = resultsDict['dqnAgent'][p]
except Exception as e:
logger.warning(f' epsDecay not set from the input: {e}')
results = tA.trainAgentGymEpsGreedy(configAgentGym)
for r in results:
print(f'-----------[{r.center(40)}]--------------')
print( results[r] )
return
[docs]@lD.log(logBase + '.main')
def main(logger, resultsDict):
'''main function for trainAgents
This function finishes all the tasks for the
main function. This is a way in which a
particular module is going to be executed.
Parameters
----------
logger : {logging.Logger}
The logger used for logging error information
resultsDict: {dict}
A dintionary containing information about the
command line arguments. These can be used for
overwriting command line arguments as needed.
'''
print('='*30)
print('Main function of trainAgents')
print('='*30)
print('We get a copy of the result dictionary over here ...')
pprint.pprint(resultsDict)
doSomething(resultsDict)
print('Getting out of trainAgents')
print('-'*30)
return