Exemplo n.º 1
0
def evaluateModel(modelInputs, scenarioInputs, scenarioName, temoa_path, project_path, solver):
    # Unique filename
    model_filename = scenarioName

    # Build Model
    tt.build(modelInputs, scenarioInputs, scenarioName, model_filename, path=project_path)

    # Run Model
    tt.run(model_filename, saveEXCEL=False, temoa_path=temoa_path, debug=True, solver=solver)
Exemplo n.º 2
0
def evaluateModel(modelInputs, scenarioInputs, scenarioName, paths):

    # Unique filename
    model_filename = scenarioName
    
    # Build Model
    tt.build(modelInputs, scenarioInputs, scenarioName, model_filename, path='data')
    
    # Run Model
    saveEXCEL=True
    tt.run(model_filename, paths, saveEXCEL=True, data_path='data', debug=False)
Exemplo n.º 3
0
def evaluateMonteCarlo(modelInputs, scenarioXLSX, scenarioName, temoa_path, project_path, solver, cases, caseNum):
    # Unique filename
    model_filename = scenarioName + '_MC_' + str(caseNum)

    # Prepare monte carlo inputs
    cols = ['type', 'variable', 'tech', caseNum]
    MCinputs = cases.loc[:, cols]
    MCinputs = MCinputs.rename(columns={caseNum: 'value'})

    # Build Model
    tt.build(modelInputs, scenarioXLSX, scenarioName, model_filename, MCinputs=MCinputs, path=project_path,
             mc_type='values')

    # Run Model
    error = tt.run(model_filename, saveEXCEL=False, temoa_path=temoa_path, debug=True, solver=solver)

    # Analyze Model (w/ default monte carlo analysis function)
    if not error:
        folder = os.path.join(project_path, 'databases')
        db = model_filename + '.sqlite'
        results = tt.analyze_db(folder, db, scenario=scenarioName, iteration=caseNum, switch='tech', tod_analysis=True,
                                debug=False)
    else:
        results = pd.Dataframe()

    return results
Exemplo n.º 4
0
def evaluateModelSensitivity(modelInputs, scenarioXLSX, scenarioName, temoa_paths, cases, caseNum):
    # Unique filename
    model_filename = scenarioName + '_Sens_' + str(caseNum)

    # Prepare sensitivity
    sensitivity = cases.loc[caseNum]

    # Build Model
    tt.build(modelInputs, scenarioXLSX, scenarioName, model_filename, sensitivity=sensitivity, path='data')

    # Run Model
    saveEXCEL = False
    tt.run(model_filename, temoa_paths, saveEXCEL=saveEXCEL)

    # Analyze Results
    folder = os.getcwd() + '\\databases'
    db = model_filename + '.sqlite'
    print("db: " + db)
    yearlyCosts, LCOE = tt.getCosts(folder, db)
    yearlyEmissions, avgEmissions = tt.getEmissions(folder, db)

    # Move results to series
    col = yearlyCosts.columns[0]
    yearlyCosts = yearlyCosts[col]
    LCOE = LCOE[col]
    col = yearlyEmissions.columns[0]
    yearlyEmissions = yearlyEmissions[col]
    avgEmissions = avgEmissions[col]

    # Package Outputs
    output = sensitivity.copy()  # Inputs
    output['db'] = db
    output['caseNum'] = caseNum
    output['LCOE'] = LCOE
    output['avgEmissions'] = avgEmissions
    for ind in yearlyCosts.index:
        label = 'cost_' + str(ind)
        output[label] = yearlyCosts[ind]
    for ind in yearlyEmissions.index:
        label = 'emis_' + str(ind)
        output[label] = yearlyEmissions[ind]

    return output
Exemplo n.º 5
0
def evaluateModelSensitivity(modelInputs, scenarioXLSX, scenarioName,
                             temoa_path, project_path, solver, cases, caseNum):
    # Unique filename
    model_filename = scenarioName + '_Sens_' + str(caseNum)

    # Prepare sensitivity
    sensitivity = cases.loc[caseNum]

    # Build Model
    tt.build(modelInputs,
             scenarioXLSX,
             scenarioName,
             model_filename,
             sensitivity=sensitivity,
             path=project_path)

    # Run Model
    error = tt.run(model_filename,
                   temoa_path=temoa_path,
                   saveEXCEL=False,
                   solver=solver)

    # Analyze Results
    folder = os.path.join(project_path, 'databases')
    db = model_filename + '.sqlite'
    if not error:
        yearlyCosts, LCOE = tt.getCosts(folder, db)
        yearlyEmissions, avgEmissions = tt.getEmissions(folder, db)

    # Package Outputs
    output = pd.Series()
    output['type'] = cases.loc[caseNum, 'type']
    output['tech'] = cases.loc[caseNum, 'tech']
    output['variable'] = cases.loc[caseNum, 'variable']
    output['multiplier'] = cases.loc[caseNum, 'multiplier']
    output['db'] = db
    output['caseNum'] = caseNum
    if not error:
        output['LCOE'] = LCOE.loc[0, 'LCOE']
        output['avgEmissions'] = avgEmissions.loc[0, 'avgEmissions']
    else:
        output['LCOE'] = np.nan
        output['avgEmissions'] = np.nan

    return output
def evaluateModel(modelInputs, scenarioInputs, scenarioName, combined_name, temoa_path, project_path, solver):
    # Unique filename
    model_filename = scenarioName + '_' + combined_name

    # Build Model
    tt.build(modelInputs, scenarioInputs, scenarioName, model_filename, path=project_path)

    # Run Model
    error = tt.run(model_filename, saveEXCEL=False, temoa_path=temoa_path, debug=True, solver=solver)

    # Analyze Model (w/ default monte carlo analysis function)
    if not error:
        folder = os.path.join(project_path, 'databases')
        db = model_filename + '.sqlite'
        results = tt.analyze_db(folder, db, scenario=scenarioName, iteration='baseline', switch='tech',
                                tod_analysis=True, debug=False)

        # Save results to a csv
        os.chdir(os.path.join(project_path, 'results'))
        df = pd.DataFrame()
        df = df.append(results, ignore_index=True)
        df.to_csv('BaselineResults_' + model_filename + '.csv')
        os.chdir(project_path)
Exemplo n.º 7
0
def evaluateMonteCarlo(modelInputs, scenarioXLSX, scenarioName, temoa_path,
                       project_path, solver, cases, caseNum):
    # Unique filename
    model_filename = scenarioName + '_MC_' + str(caseNum)

    # Prepare monte carlo inputs
    cols = ['type', 'variable', 'tech', caseNum]
    MCinputs = cases.loc[:, cols]
    MCinputs = MCinputs.rename(columns={caseNum: 'value'})

    # Build Model
    tt.build(modelInputs,
             scenarioXLSX,
             scenarioName,
             model_filename,
             MCinputs=MCinputs,
             path=project_path,
             mc_type='values')

    # Run Model
    error = tt.run(model_filename,
                   saveEXCEL=False,
                   temoa_path=temoa_path,
                   debug=True,
                   solver=solver)

    # series to store results
    folder = os.path.join(project_path, 'databases')
    db = model_filename + '.sqlite'
    output = pd.Series()
    output['db'] = db
    output['caseNum'] = caseNum

    # Analyze Results
    if not error:
        yearlyCosts, LCOE = tt.getCosts(folder, db)
        yearlyCosts = yearlyCosts.drop(columns=['database', 'scenario'])
        yearlyEmissions, avgEmissions = tt.getEmissions(folder, db)
        yearlyEmissions = yearlyEmissions.drop(
            columns=['database', 'scenario'])

        # Capacity and Activity by Fuel By Year
        switch = 'tech'
        capacityByFuel = tt.getCapacity(folder, db, switch=switch)
        capacityByFuel = capacityByFuel.drop(columns=['database', 'scenario'])
        capacityByFuel = capacityByFuel.set_index('fuelOrTech')
        ActivityByYearFuel = tt.getActivity(folder, db, switch=switch)
        ActivityByYearFuel = ActivityByYearFuel.drop(
            columns=['database', 'scenario'])
        ActivityByYearFuel = ActivityByYearFuel.set_index('fuelOrTech')

        # Package Outputs
        output['LCOE'] = LCOE.loc[0, 'LCOE']
        output['avgEmissions'] = avgEmissions.loc[0, 'avgEmissions']
        for col in yearlyCosts.columns:
            label = 'cost-' + str(col)
            output[label] = yearlyCosts.loc[0, col]
        for col in yearlyEmissions.columns:
            label = 'emis-' + str(col)
            output[label] = yearlyEmissions.loc[0, col]
        # CapacityByYearFuel
        for ind in capacityByFuel.index:
            for col in capacityByFuel.columns:
                label = 'cap_' + str(col) + '-' + str(ind)
                output[label] = capacityByFuel.loc[ind, col]
        # ActivityByYearFuel
        for ind in ActivityByYearFuel.index:
            for col in ActivityByYearFuel.columns:
                label = 'act_' + str(col) + '-' + str(ind)
                output[label] = ActivityByYearFuel.loc[ind, col]

    else:  # if errors
        output['LCOE'] = np.nan
        output['avgEmissions'] = np.nan

    return output
import temoatools as tt

model_filename = 'data_A.sqlite'  # Expected to be in "\\databases"
temoa_path = 'C:/temoa/temoa'  # path to temoa directory that contains temoa_model/

tt.run(model_filename,
       temoa_path=temoa_path,
       saveEXCEL=False,
       debug=True,
       solver='cplex')
Exemplo n.º 9
0
    scenarioNames     = ['BATT']
    paths             = 'paths.csv'

    temoa_path = os.path.normcase('C:\\Users\\benne\PycharmProjects\\temoatools\\temoa_stochastic')
    project_path = os.path.normcase('C:\Users\\benne\\PycharmProjects\\temoatools\\projects\uva'')

    #=======================================================
    # Move modelInputs_XLSX to database
    #=======================================================
    modelInputs = tt.move_data_to_db(modelInputs_XLSX, path=project_path)

    # Build Model
    tt.build(modelInputs, scenarioInputs, 'Batt', 'Batt', path=project_path)

    # Run Model
    tt.run('Batt', saveEXCEL=False, temoa_path=temoa_path, debug=True, solver=solver)

    #====================================    
    # Perform Simulations
    option = 2 # 1 - Run single, 2 - Run all
    #====================================
    num_cores = multiprocessing.cpu_count() -1 # Save one core for other processes
    
    if option==1:
        # Perform single simulation
        evaluateModel(modelInputs, scenarioInputs, scenarioNames[0], paths)
    
    elif option == 2:
        # Perform simulations in parallel
        with parallel_backend('multiprocessing', n_jobs=num_cores):
            Parallel(n_jobs=num_cores,verbose=5)(delayed(evaluateModel)(modelInputs, scenarioInputs, scenarioName, paths) for scenarioName in scenarioNames)     
Exemplo n.º 10
0
def evaluateMonteCarlo(modelInputs, scenarioXLSX, scenarioName, temoa_path, cases, caseNum):
    # Unique filename
    model_filename = scenarioName + '_MC_' + str(caseNum)

    # Prepare monte carlo inputs
    cols = ['type', 'variable', 'tech', caseNum]
    MCinputs = cases.ix[:, cols]
    MCinputs = MCinputs.rename(columns={caseNum: 'multiplier'})

    # Build Model
    tt.build(modelInputs, scenarioXLSX, scenarioName, model_filename, MCinputs=MCinputs, path='data')

    # Run Model
    tt.run(model_filename, temoa_path=temoa_path, saveEXCEL=False)

    # Analyze Results
    folder = os.getcwd() + '\\Databases'
    db = model_filename + '.sqlite'
    yearlyCosts, LCOE = tt.getCosts(folder, db)
    yearlyEmissions, avgEmissions = tt.getEmissions(folder, db)

    # Capacity and Activity by Fuel By Year
    createPlots = 'N'  # Create default plots
    saveData = 'N'  # Do not save data as a csv or xls
    sectorName = 'electric'  # Name of sector to be analyzed
    switch = 'fuel'
    capacityByFuel = tt.getCapacity(folder, db, switch=switch)
    key = capacityByFuel.keys()[0]
    cap = capacityByFuel[key]
    ActivityByYearFuel = tt.getActivity(folder, db, switch=switch)
    key = ActivityByYearFuel.keys()[0]
    act = ActivityByYearFuel[key]

    # Move results to series
    col = yearlyCosts.columns[0]
    yearlyCosts = yearlyCosts[col]
    LCOE = LCOE[col]
    col = yearlyEmissions.columns[0]
    yearlyEmissions = yearlyEmissions[col]
    avgEmissions = avgEmissions[col]

    # Package Outputs
    output = pd.Series()
    output['db'] = db
    output['caseNum'] = caseNum
    output['LCOE'] = LCOE
    output['avgEmissions'] = avgEmissions
    for ind in yearlyCosts.index:
        label = 'cost-' + str(ind)
        output[label] = yearlyCosts.loc[ind]
    for ind in yearlyEmissions.index:
        label = 'emis-' + str(ind)
        output[label] = yearlyEmissions.loc[ind]
    # CapacityByYearFuel
    for ind in cap.index:
        for col in cap.columns:
            label = 'cap_' + str(col) + '-' + str(ind)
            output[label] = cap.loc[ind, col]
    # ActivityByYearFuel
    for ind in act.index:
        for col in act.columns:
            label = 'act_' + str(col) + '-' + str(ind)
            output[label] = act.loc[ind, col]
    return output