Пример #1
0
def run(optimizer, objectivefunc, NumOfRuns, params, export_flags):
    """
    It serves as the main interface of the framework for running the experiments.

    Parameters
    ----------    
    optimizer : list
        The list of optimizers names
    objectivefunc : list
        The list of benchmark functions
    NumOfRuns : int
        The number of independent runs 
    params  : set
        The set of parameters which are: 
        1. Size of population (PopulationSize)
        2. The number of iterations (Iterations)
    export_flags : set
        The set of Boolean flags which are: 
        1. Export (Exporting the results in a file)
        2. Export_details (Exporting the detailed results in files)
        3. Export_convergence (Exporting the covergence plots)
        4. Export_boxplot (Exporting the box plots)
    
    Returns
    -----------
    N/A
    """

    # Select general parameters for all optimizers (population size, number of iterations) ....
    PopulationSize = params['PopulationSize']
    Iterations = params['Iterations']

    #Export results ?
    Export = export_flags['Export_avg']
    Export_details = export_flags['Export_details']
    Export_convergence = export_flags['Export_convergence']
    Export_boxplot = export_flags['Export_boxplot']

    Flag = False
    Flag_details = False

    # CSV Header for for the cinvergence
    CnvgHeader = []

    results_directory = time.strftime("%Y-%m-%d-%H-%M-%S") + '/'
    Path(results_directory).mkdir(parents=True, exist_ok=True)

    for l in range(0, Iterations):
        CnvgHeader.append("Iter" + str(l + 1))

    for i in range(0, len(optimizer)):
        for j in range(0, len(objectivefunc)):
            convergence = [0] * NumOfRuns
            executionTime = [0] * NumOfRuns
            for k in range(0, NumOfRuns):
                func_details = benchmarks.getFunctionDetails(objectivefunc[j])
                x = selector(optimizer[i], func_details, PopulationSize,
                             Iterations)
                convergence[k] = x.convergence
                optimizerName = x.optimizer
                objfname = x.objfname
                if (Export_details == True):
                    ExportToFile = results_directory + "experiment_details.csv"
                    with open(ExportToFile, 'a', newline='\n') as out:
                        writer = csv.writer(out, delimiter=',')
                        if (
                                Flag_details == False
                        ):  # just one time to write the header of the CSV file
                            header = numpy.concatenate(
                                [["Optimizer", "objfname", "ExecutionTime"],
                                 CnvgHeader])
                            writer.writerow(header)
                            Flag_details = True  # at least one experiment
                        executionTime[k] = x.executionTime
                        a = numpy.concatenate(
                            [[x.optimizer, x.objfname, x.executionTime],
                             x.convergence])
                        writer.writerow(a)
                    out.close()

            if (Export == True):
                ExportToFile = results_directory + "experiment.csv"

                with open(ExportToFile, 'a', newline='\n') as out:
                    writer = csv.writer(out, delimiter=',')
                    if (Flag == False
                        ):  # just one time to write the header of the CSV file
                        header = numpy.concatenate(
                            [["Optimizer", "objfname", "ExecutionTime"],
                             CnvgHeader])
                        writer.writerow(header)
                        Flag = True

                    avgExecutionTime = float("%0.2f" %
                                             (sum(executionTime) / NumOfRuns))
                    avgConvergence = numpy.around(numpy.mean(
                        convergence, axis=0, dtype=numpy.float64),
                                                  decimals=2).tolist()
                    a = numpy.concatenate(
                        [[optimizerName, objfname, avgExecutionTime],
                         avgConvergence])
                    writer.writerow(a)
                out.close()

    if Export_convergence == True:
        conv_plot.run(results_directory, optimizer, objectivefunc, Iterations)

    if Export_boxplot == True:
        box_plot.run(results_directory, optimizer, objectivefunc, Iterations)

    if (Flag == False):  # Faild to run at least one experiment
        print(
            "No Optomizer or Cost function is selected. Check lists of available optimizers and cost functions"
        )

    print("Execution completed")
Пример #2
0
Flag = False

# CSV Header for for the cinvergence
CnvgHeader = []

for l in range(0, Iterations):
    CnvgHeader.append("Iter" + str(l + 1))

for i in range(0, len(optimizer)):
    for j in range(0, len(benchmarkfunc)):
        if (
            (optimizer[i] == True) and (benchmarkfunc[j] == True)
        ):  # start experiment if an optimizer and an objective function is selected
            for k in range(0, NumOfRuns):

                func_details = benchmarks.getFunctionDetails(j)
                x = selector(i, func_details, PopulationSize, Iterations)
                if (Export == True):
                    with open(ExportToFile, 'a', newline='\n') as out:
                        writer = csv.writer(out, delimiter=',')
                        if (
                                Flag == False
                        ):  # just one time to write the header of the CSV file
                            header = numpy.concatenate([[
                                "Optimizer", "objfname", "startTime",
                                "EndTime", "ExecutionTime"
                            ], CnvgHeader])
                            writer.writerow(header)
                        a = numpy.concatenate([[
                            x.optimizer, x.objfname, x.startTime, x.endTime,
                            x.executionTime
Пример #3
0
def run(optimizers, objectiveFuncs, NumOfRuns, params, exportFlags):
    """
    It serves as the main interface of the framework for running the experiments.

    Parameters
    ----------
    optimizers : list
        The list of optimizers names
    objectiveFuncs : list
        The list of benchmark functions
    NumOfRuns : int
        The number of independent runs
    params  : set
        The set of parameters which are:
        1. Size of population (populationSize)
        2. The number of iterations (iterations)
    exportFlags : set
        The set of Boolean flags which are:
        1. export (Exporting the results in a file)
        2. exportDetails (Exporting the detailed results in files)
        3. exportConvergence (Exporting the covergence plots)
        4. exportBoxplot (Exporting the box plots)

    Returns
    -----------
    N/A
    """

    # Select general parameters for all optimizers (population size, number of iterations) ....
    populationSize = params["populationSize"]
    iterations = params["iterations"]

    # export results ?
    export = exportFlags["exportAvg"]
    exportDetails = exportFlags["exportDetails"]
    exportConvergence = exportFlags["exportConvergence"]
    exportBoxplot = exportFlags["exportBoxplot"]

    flag = False
    flagDetails = False

    # CSV Header for for the convergence
    cnvgHeader = []

    resultsDirectory = time.strftime("%Y-%m-%d-%H-%M-%S") + "/"
    Path(resultsDirectory).mkdir(parents=True, exist_ok=True)

    for l in range(0, iterations):
        cnvgHeader.append("Iter" + str(l + 1))

    for _, optimizer in enumerate(optimizers):
        for _, objectiveFunc in enumerate(objectiveFuncs):
            convergence = [0] * NumOfRuns
            executionTime = [0] * NumOfRuns
            for k in range(0, NumOfRuns):
                func_details = benchmarks.getFunctionDetails(objectiveFunc)
                x = selector(optimizer, func_details, populationSize,
                             iterations)
                convergence[k] = x.convergence
                optimizerName = x.optimizer
                objfname = x.objfname
                if exportDetails == True:
                    exportToFile = resultsDirectory + "experiment_details.csv"
                    with open(exportToFile, "a", newline="\n") as out:
                        writer = csv.writer(out, delimiter=",")
                        if (
                                flagDetails == False
                        ):  # just one time to write the header of the CSV file
                            header = numpy.concatenate(
                                [["Optimizer", "objfname", "ExecutionTime"],
                                 cnvgHeader])
                            writer.writerow(header)
                            flagDetails = True  # at least one experiment
                        executionTime[k] = x.executionTime
                        a = numpy.concatenate(
                            [[x.optimizer, x.objfname, x.executionTime],
                             x.convergence])
                        writer.writerow(a)
                    out.close()

            if export == True:
                exportToFile = resultsDirectory + "experiment.csv"

                with open(exportToFile, "a", newline="\n") as out:
                    writer = csv.writer(out, delimiter=",")
                    if (flag == False
                        ):  # just one time to write the header of the CSV file
                        header = numpy.concatenate(
                            [["Optimizer", "objfname", "ExecutionTime"],
                             cnvgHeader])
                        writer.writerow(header)
                        flag = True

                    avgExecutionTime = float("%0.2f" %
                                             (sum(executionTime) / NumOfRuns))
                    avgConvergence = numpy.around(numpy.mean(
                        convergence, axis=0, dtype=numpy.float64),
                                                  decimals=2).tolist()
                    a = numpy.concatenate(
                        [[optimizerName, objfname, avgExecutionTime],
                         avgConvergence])
                    writer.writerow(a)
                out.close()

    if exportConvergence == True:
        conv_plot.run(resultsDirectory, optimizers, objectiveFuncs, iterations)

    if exportBoxplot == True:
        box_plot.run(resultsDirectory, optimizers, objectiveFuncs, iterations)

    if flag == False:  # Faild to run at least one experiment
        print(
            "No Optomizer or Cost function is selected. Check lists of available optimizers and cost functions"
        )

    print("Execution completed")
Пример #4
0
# Check if it works at least once
Flag=False

# CSV Header for for the cinvergence 
CnvgHeader=[]

for l in range(0,Iterations):
	CnvgHeader.append("Iter"+str(l+1))


for i in range (0, len(optimizer)):
    for j in range (0, len(benchmarkfunc)):
        if((optimizer[i]==True) and (benchmarkfunc[j]==True)): # start experiment if an optimizer and an objective function is selected
            for k in range (0,NumOfRuns):
                
                func_details=benchmarks.getFunctionDetails(j)
                x=selector(i,func_details,PopulationSize,Iterations)
                if(Export==True):
                    with open(ExportToFile, 'a',newline='\n') as out:
                        writer = csv.writer(out,delimiter=',')
                        if (Flag==False): # just one time to write the header of the CSV file
                            header= numpy.concatenate([["Optimizer","objfname","startTime","EndTime","ExecutionTime"],CnvgHeader])
                            writer.writerow(header)
                        a=numpy.concatenate([[x.optimizer,x.objfname,x.startTime,x.endTime,x.executionTime],x.convergence])
                        writer.writerow(a)
                    out.close()
                Flag=True # at least one experiment
                
if (Flag==False): # Faild to run at least one experiment
    print("No Optomizer or Cost function is selected. Check lists of available optimizers and cost functions") 
        
Пример #5
0
def run(optimizer, objectivefunc, NumOfRuns, params, export_flags):

    PopulationSize = params["PopulationSize"]
    Iterations = params["Iterations"]

    Export = export_flags["Export_avg"]
    Export_details = export_flags["Export_details"]
    Export_convergence = export_flags["Export_convergence"]
    Export_boxplot = export_flags["Export_boxplot"]

    Flag = False
    Flag_details = False

    CnvgHeader = []

    results_directory = time.strftime("%Y-%m-%d |%H:%M:%S") + "/"
    Path(results_directory).mkdir(parents=True, exist_ok=True)

    for l in range(0, Iterations):
        CnvgHeader.append("Iter" + str(l + 1))

    for i in range(0, len(optimizer)):
        for j in range(0, len(objectivefunc)):
            convergence = [0] * NumOfRuns
            executionTime = [0] * NumOfRuns
            for k in range(0, NumOfRuns):
                func_details = benchmarks.getFunctionDetails(objectivefunc[j])
                x = selector(optimizer[i], func_details, PopulationSize,
                             Iterations)
                convergence[k] = x.convergence
                optimizerName = x.optimizer
                objfname = x.objfname
                if Export_details == True:
                    ExportToFile = results_directory + "experiment_details.csv"
                    with open(ExportToFile, "a", newline="\n") as out:
                        writer = csv.writer(out, delimiter=",")
                        if (Flag_details == False):
                            header = numpy.concatenate(
                                [["Optimizer", "objfname", "ExecutionTime"],
                                 CnvgHeader])
                            writer.writerow(header)
                            Flag_details = True
                        executionTime[k] = x.executionTime
                        a = numpy.concatenate(
                            [[x.optimizer, x.objfname, x.executionTime],
                             x.convergence])
                        writer.writerow(a)
                    out.close()

            if Export == True:
                ExportToFile = results_directory + "experiment.csv"

                with open(ExportToFile, "a", newline="\n") as out:
                    writer = csv.writer(out, delimiter=",")
                    if (Flag == False):
                        header = numpy.concatenate(
                            [["Optimizer", "objfname", "ExecutionTime"],
                             CnvgHeader])
                        writer.writerow(header)
                        Flag = True

                    avgExecutionTime = float("%0.2f" %
                                             (sum(executionTime) / NumOfRuns))
                    avgConvergence = numpy.around(numpy.mean(
                        convergence, axis=0, dtype=numpy.float64),
                                                  decimals=2).tolist()
                    a = numpy.concatenate(
                        [[optimizerName, objfname, avgExecutionTime],
                         avgConvergence])
                    writer.writerow(a)
                out.close()

    if Export_convergence == True:
        conv_plot.run(results_directory, optimizer, objectivefunc, Iterations)

    if Export_boxplot == True:
        box_plot.run(results_directory, optimizer, objectivefunc, Iterations)

    if Flag == False:
        print(
            "Selectionez un optimisateur ou une une fonction a fin de demarrer l'aoptimisation"
        )

    print("Execution terminée")