Module ABCPython.Reporter
Expand source code
import os
import numpy as np
from decimal import Decimal
class Reporter:
def __init__(_self, abcList):
_self.abcList = abcList
if(abcList[0].conf.PRINT_PARAMETERS):
_self.print_parameters()
if (abcList[0].conf.RUN_INFO):
_self.run_info()
if (abcList[0].conf.SAVE_RESULTS):
_self.save_results()
if (abcList[0].conf.RUN_INFO_COMMANDLINE):
_self.command_line_print()
def print_parameters(_self):
for i in range(_self.abcList[0].conf.RUN_TIME):
print(_self.abcList[i].experimentID,". run")
for j in range(_self.abcList[0].conf.DIMENSION):
print("Global Param[", j + 1, "] ", _self.abcList[i].globalParams[j])
def run_info(_self):
sum = []
for i in range(_self.abcList[0].conf.RUN_TIME):
print(_self.abcList[i].experimentID + " run: ", _self.abcList[i].globalOpt, " Cycle: ",
_self.abcList[i].cycle, " Time: ",
_self.abcList[i].globalTime)
sum.append(_self.abcList[i].globalOpt)
print("Mean: ",np.mean(sum)," Std: ",np.std(sum)," Median: ",np.median(sum))
def command_line_print(_self):
sum = []
for i in range(_self.abcList[0].conf.RUN_TIME):
sum.append(_self.abcList[i].globalOpt)
print('%1.5E' % Decimal(np.mean(sum)))
def save_results(_self):
if not os.path.exists(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME):
os.makedirs(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME)
header="experimentID ;Number of Population; Maximum Evaluation; Limit; Function, Dimension, Upper Bound; Lower Bound; isMinimize; Result ; Time \n"
csvText = "{} ;{}; {}; {}; {}; {}; {}; {}; {}; {} ; {} \n"
with open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[0].conf.RESULT_REPORT_FILE_NAME, 'a') as saveRes:
if(sum(1 for line in open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[0].conf.RESULT_REPORT_FILE_NAME))<1):
saveRes.write(header)
for i in range(_self.abcList[0].conf.RUN_TIME):
saveRes.write(csvText.format(
_self.abcList[i].experimentID,
_self.abcList[i].conf.NUMBER_OF_POPULATION,
_self.abcList[i].conf.MAXIMUM_EVALUATION,
_self.abcList[i].conf.LIMIT,
_self.abcList[i].conf.OBJECTIVE_FUNCTION.__name__,
_self.abcList[i].conf.DIMENSION,
_self.abcList[i].conf.UPPER_BOUND,
_self.abcList[i].conf.LOWER_BOUND,
_self.abcList[i].conf.MINIMIZE,
_self.abcList[i].globalOpt,
_self.abcList[i].globalTime,
))
header = "experimentID;"
for j in range(_self.abcList[0].conf.DIMENSION):
if (j < _self.abcList[0].conf.DIMENSION - 1):
header = header + "param" + str(j) + ";"
else:
header = header + "param" + str(j) + "\n"
with open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME + "/" + _self.abcList[0].conf.PARAMETER_REPORT_FILE_NAME,
'a') as saveRes:
if (sum(1 for line in open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME + "/" + _self.abcList[
0].conf.PARAMETER_REPORT_FILE_NAME)) < 1):
saveRes.write(header)
for i in range(_self.abcList[0].conf.RUN_TIME):
csvText=str(_self.abcList[i].experimentID)+";"
for j in range(_self.abcList[0].conf.DIMENSION):
if(j<_self.abcList[0].conf.DIMENSION-1):
csvText = csvText+str(_self.abcList[i].globalParams[j])+";"
else:
csvText = csvText + str(_self.abcList[i].globalParams[j]) + "\n"
saveRes.write(csvText)
for i in range(_self.abcList[0].conf.RUN_TIME):
if not os.path.exists(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER):
os.makedirs(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER)
with open(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER+"/"+_self.abcList[i].experimentID+".txt",
'a') as saveRes:
for j in range(_self.abcList[i].cycle):
saveRes.write(str(_self.abcList[i].globalOpts[j])+"\n")
Classes
class Reporter (abcList)
-
Expand source code
class Reporter: def __init__(_self, abcList): _self.abcList = abcList if(abcList[0].conf.PRINT_PARAMETERS): _self.print_parameters() if (abcList[0].conf.RUN_INFO): _self.run_info() if (abcList[0].conf.SAVE_RESULTS): _self.save_results() if (abcList[0].conf.RUN_INFO_COMMANDLINE): _self.command_line_print() def print_parameters(_self): for i in range(_self.abcList[0].conf.RUN_TIME): print(_self.abcList[i].experimentID,". run") for j in range(_self.abcList[0].conf.DIMENSION): print("Global Param[", j + 1, "] ", _self.abcList[i].globalParams[j]) def run_info(_self): sum = [] for i in range(_self.abcList[0].conf.RUN_TIME): print(_self.abcList[i].experimentID + " run: ", _self.abcList[i].globalOpt, " Cycle: ", _self.abcList[i].cycle, " Time: ", _self.abcList[i].globalTime) sum.append(_self.abcList[i].globalOpt) print("Mean: ",np.mean(sum)," Std: ",np.std(sum)," Median: ",np.median(sum)) def command_line_print(_self): sum = [] for i in range(_self.abcList[0].conf.RUN_TIME): sum.append(_self.abcList[i].globalOpt) print('%1.5E' % Decimal(np.mean(sum))) def save_results(_self): if not os.path.exists(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME): os.makedirs(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME) header="experimentID ;Number of Population; Maximum Evaluation; Limit; Function, Dimension, Upper Bound; Lower Bound; isMinimize; Result ; Time \n" csvText = "{} ;{}; {}; {}; {}; {}; {}; {}; {}; {} ; {} \n" with open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[0].conf.RESULT_REPORT_FILE_NAME, 'a') as saveRes: if(sum(1 for line in open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[0].conf.RESULT_REPORT_FILE_NAME))<1): saveRes.write(header) for i in range(_self.abcList[0].conf.RUN_TIME): saveRes.write(csvText.format( _self.abcList[i].experimentID, _self.abcList[i].conf.NUMBER_OF_POPULATION, _self.abcList[i].conf.MAXIMUM_EVALUATION, _self.abcList[i].conf.LIMIT, _self.abcList[i].conf.OBJECTIVE_FUNCTION.__name__, _self.abcList[i].conf.DIMENSION, _self.abcList[i].conf.UPPER_BOUND, _self.abcList[i].conf.LOWER_BOUND, _self.abcList[i].conf.MINIMIZE, _self.abcList[i].globalOpt, _self.abcList[i].globalTime, )) header = "experimentID;" for j in range(_self.abcList[0].conf.DIMENSION): if (j < _self.abcList[0].conf.DIMENSION - 1): header = header + "param" + str(j) + ";" else: header = header + "param" + str(j) + "\n" with open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME + "/" + _self.abcList[0].conf.PARAMETER_REPORT_FILE_NAME, 'a') as saveRes: if (sum(1 for line in open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME + "/" + _self.abcList[ 0].conf.PARAMETER_REPORT_FILE_NAME)) < 1): saveRes.write(header) for i in range(_self.abcList[0].conf.RUN_TIME): csvText=str(_self.abcList[i].experimentID)+";" for j in range(_self.abcList[0].conf.DIMENSION): if(j<_self.abcList[0].conf.DIMENSION-1): csvText = csvText+str(_self.abcList[i].globalParams[j])+";" else: csvText = csvText + str(_self.abcList[i].globalParams[j]) + "\n" saveRes.write(csvText) for i in range(_self.abcList[0].conf.RUN_TIME): if not os.path.exists(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER): os.makedirs(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER) with open(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER+"/"+_self.abcList[i].experimentID+".txt", 'a') as saveRes: for j in range(_self.abcList[i].cycle): saveRes.write(str(_self.abcList[i].globalOpts[j])+"\n")
Methods
def command_line_print(_self)
-
Expand source code
def command_line_print(_self): sum = [] for i in range(_self.abcList[0].conf.RUN_TIME): sum.append(_self.abcList[i].globalOpt) print('%1.5E' % Decimal(np.mean(sum)))
def print_parameters(_self)
-
Expand source code
def print_parameters(_self): for i in range(_self.abcList[0].conf.RUN_TIME): print(_self.abcList[i].experimentID,". run") for j in range(_self.abcList[0].conf.DIMENSION): print("Global Param[", j + 1, "] ", _self.abcList[i].globalParams[j])
def run_info(_self)
-
Expand source code
def run_info(_self): sum = [] for i in range(_self.abcList[0].conf.RUN_TIME): print(_self.abcList[i].experimentID + " run: ", _self.abcList[i].globalOpt, " Cycle: ", _self.abcList[i].cycle, " Time: ", _self.abcList[i].globalTime) sum.append(_self.abcList[i].globalOpt) print("Mean: ",np.mean(sum)," Std: ",np.std(sum)," Median: ",np.median(sum))
def save_results(_self)
-
Expand source code
def save_results(_self): if not os.path.exists(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME): os.makedirs(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME) header="experimentID ;Number of Population; Maximum Evaluation; Limit; Function, Dimension, Upper Bound; Lower Bound; isMinimize; Result ; Time \n" csvText = "{} ;{}; {}; {}; {}; {}; {}; {}; {}; {} ; {} \n" with open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[0].conf.RESULT_REPORT_FILE_NAME, 'a') as saveRes: if(sum(1 for line in open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[0].conf.RESULT_REPORT_FILE_NAME))<1): saveRes.write(header) for i in range(_self.abcList[0].conf.RUN_TIME): saveRes.write(csvText.format( _self.abcList[i].experimentID, _self.abcList[i].conf.NUMBER_OF_POPULATION, _self.abcList[i].conf.MAXIMUM_EVALUATION, _self.abcList[i].conf.LIMIT, _self.abcList[i].conf.OBJECTIVE_FUNCTION.__name__, _self.abcList[i].conf.DIMENSION, _self.abcList[i].conf.UPPER_BOUND, _self.abcList[i].conf.LOWER_BOUND, _self.abcList[i].conf.MINIMIZE, _self.abcList[i].globalOpt, _self.abcList[i].globalTime, )) header = "experimentID;" for j in range(_self.abcList[0].conf.DIMENSION): if (j < _self.abcList[0].conf.DIMENSION - 1): header = header + "param" + str(j) + ";" else: header = header + "param" + str(j) + "\n" with open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME + "/" + _self.abcList[0].conf.PARAMETER_REPORT_FILE_NAME, 'a') as saveRes: if (sum(1 for line in open(_self.abcList[0].conf.OUTPUTS_FOLDER_NAME + "/" + _self.abcList[ 0].conf.PARAMETER_REPORT_FILE_NAME)) < 1): saveRes.write(header) for i in range(_self.abcList[0].conf.RUN_TIME): csvText=str(_self.abcList[i].experimentID)+";" for j in range(_self.abcList[0].conf.DIMENSION): if(j<_self.abcList[0].conf.DIMENSION-1): csvText = csvText+str(_self.abcList[i].globalParams[j])+";" else: csvText = csvText + str(_self.abcList[i].globalParams[j]) + "\n" saveRes.write(csvText) for i in range(_self.abcList[0].conf.RUN_TIME): if not os.path.exists(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER): os.makedirs(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER) with open(_self.abcList[i].conf.OUTPUTS_FOLDER_NAME+"/"+_self.abcList[i].conf.RESULT_BY_CYCLE_FOLDER+"/"+_self.abcList[i].experimentID+".txt", 'a') as saveRes: for j in range(_self.abcList[i].cycle): saveRes.write(str(_self.abcList[i].globalOpts[j])+"\n")