def run_scenario(input_file, timesteps, scenario, result_dir, plot_tuples=None, plot_periods=None, report_tuples=None): """ run an urbs model for given input, time steps and scenario Args: input_file: filename to an Excel spreadsheet for urbs.read_excel timesteps: a list of timesteps, e.g. range(0,8761) scenario: a scenario function that modifies the input data dict result_dir: directory name for result spreadsheet and plots plot_tuples: (optional) list of plot tuples (c.f. urbs.result_figures) plot_periods: (optional) dict of plot periods (c.f. urbs.result_figures) report_tuples: (optional) list of (sit, com) tuples (c.f. urbs.report) Returns: the urbs model instance """ # scenario name, read and modify data for scenario sce = scenario.__name__ data = urbs.read_excel(input_file) data = scenario(data) # create model prob = urbs.create_model(data, timesteps) # refresh time stamp string and create filename for logfile now = prob.created log_filename = os.path.join(result_dir, '{}.log').format(sce) # solve model and read results optim = SolverFactory('glpk') # cplex, glpk, gurobi, ... optim = setup_solver(optim, logfile=log_filename) result = optim.solve(prob, tee=True) # copy input file to result directory shutil.copyfile(input_file, os.path.join(result_dir, input_file)) # save problem solution (and input data) to HDF5 file urbs.save(prob, os.path.join(result_dir, '{}.h5'.format(sce))) # write report to spreadsheet urbs.report(prob, os.path.join(result_dir, '{}.xlsx').format(sce), report_tuples=report_tuples) # result plots urbs.result_figures(prob, os.path.join(result_dir, '{}'.format(sce)), plot_title_prefix=sce.replace('_', ' '), plot_tuples=plot_tuples, periods=plot_periods, figure_size=(24, 9)) return prob
def run_scenario(input_file, timesteps, scenario, result_dir, plot_periods={}): """ run an urbs model for given input, time steps and scenario Args: input_file: filename to an Excel spreadsheet for urbs.read_excel timesteps: a list of timesteps, e.g. range(0,8761) scenario: a scenario function that modifies the input data dict result_dir: directory name for result spreadsheet and plots Returns: the urbs model instance """ # scenario name, read and modify data for scenario sce = scenario.__name__ data = urbs.read_excel(input_file) data = scenario(data) # create model prob = urbs.create_model(data, timesteps) if PYOMO3: prob = prob.create() # refresh time stamp string and create filename for logfile now = prob.created log_filename = os.path.join(result_dir, '{}.log').format(sce) # solve model and read results optim = SolverFactory('glpk') # cplex, glpk, gurobi, ... optim = setup_solver(optim, logfile=log_filename) result = optim.solve(prob, tee=True) if PYOMO3: prob.load(result) else: prob.solutions.load_from(result) # copy input file in result directory cdir = os.getcwd() respath = os.path.join(cdir, result_dir) shutil.copy(input_file,respath) # write report to spreadsheet urbs.report( prob, os.path.join(result_dir, '{}.xlsx').format(sce), prob.com_demand, prob.sit) # store optimisation problem for later re-analysis urbs.save( prob, os.path.join(result_dir, '{}.pgz').format(sce)) urbs.result_figures( prob, os.path.join(result_dir, '{}'.format(sce)), plot_title_prefix=sce.replace('_', ' ').title(), periods=plot_periods) return prob
def run_scenario(input_file, timesteps, scenario, result_dir, plot_tuples=None, plot_periods=None, report_tuples=None): """ run an urbs model for given input, time steps and scenario Args: input_file: filename to an Excel spreadsheet for urbs.read_excel timesteps: a list of timesteps, e.g. range(0,8761) scenario: a scenario function that modifies the input data dict result_dir: directory name for result spreadsheet and plots plot_tuples: (optional) list of plot tuples (c.f. urbs.result_figures) plot_periods: (optional) dict of plot periods (c.f. urbs.result_figures) report_tuples: (optional) list of (sit, com) tuples (c.f. urbs.report) Returns: the urbs model instance """ # scenario name, read and modify data for scenario sce = scenario.__name__ data = urbs.read_excel(input_file) data = scenario(data) # create model prob = urbs.create_model(data, timesteps) # refresh time stamp string and create filename for logfile now = prob.created log_filename = os.path.join(result_dir, '{}.log').format(sce) # solve model and read results optim = SolverFactory('glpk') # cplex, glpk, gurobi, ... optim = setup_solver(optim, logfile=log_filename) result = optim.solve(prob, tee=True) # copy input file to result directory shutil.copyfile(input_file, os.path.join(result_dir, input_file)) # save problem solution (and input data) to HDF5 file urbs.save(prob, os.path.join(result_dir, '{}.h5'.format(sce))) # write report to spreadsheet urbs.report( prob, os.path.join(result_dir, '{}.xlsx').format(sce), report_tuples=report_tuples) # result plots urbs.result_figures( prob, os.path.join(result_dir, '{}'.format(sce)), plot_title_prefix=sce.replace('_', ' '), plot_tuples=plot_tuples, periods=plot_periods, figure_size=(24, 9)) return prob
def run_scenario(input_file, timesteps, scenario, result_dir, plot_periods={}): """ run an urbs model for given input, time steps and scenario Args: input_file: filename to an Excel spreadsheet for urbs.read_excel timesteps: a list of timesteps, e.g. range(0,8761) scenario: a scenario function that modifies the input data dict result_dir: directory name for result spreadsheet and plots Returns: the urbs model instance """ # scenario name, read and modify data for scenario sce = scenario.__name__ data = urbs.read_excel(input_file) data = scenario(data) # create model model = urbs.create_model(data, timesteps) prob = model.create() # refresh time stamp string and create filename for logfile now = prob.created log_filename = os.path.join(result_dir, '{}.log').format(sce) # solve model and read results optim = SolverFactory('glpk') # cplex, glpk, gurobi, ... optim = setup_solver(optim, logfile=log_filename) result = optim.solve(prob, tee=True) prob.load(result) # copy input file in result directory cdir = os.getcwd() respath = os.path.join(cdir, result_dir) shutil.copy(input_file, respath) # write report to spreadsheet urbs.report(prob, os.path.join(result_dir, '{}.xlsx').format(sce), prob.com_demand, prob.sit) # store optimisation problem for later re-analysis urbs.save(prob, os.path.join(result_dir, '{}.pgz').format(sce)) urbs.result_figures(prob, os.path.join(result_dir, '{}'.format(sce)), plot_title_prefix=sce.replace('_', ' ').title(), periods=plot_periods) return prob
def run_scenario(input_file, timesteps, scenario, result_dir, plot_periods={}): """ run an urbs model for given input, time steps and scenario Args: input_file: filename to an Excel spreadsheet for urbs.read_excel timesteps: a list of timesteps, e.g. range(0,8761) scenario: a scenario function that modifies the input data dict result_dir: directory name for result spreadsheet and plots Returns: the urbs model instance """ # scenario name, read and modify data for scenario sce = scenario.__name__ data = urbs.read_excel(input_file) data = scenario(data) # create model prob = urbs.create_model(data, timesteps) # refresh time stamp string and create filename for logfile now = prob.created log_filename = os.path.join(result_dir, "{}.log").format(sce) # solve model and read results optim = SolverFactory("glpk") # cplex, glpk, gurobi, ... optim = setup_solver(optim, logfile=log_filename) result = optim.solve(prob, tee=True) # copy input file to result directory shutil.copyfile(input_file, os.path.join(result_dir, input_file)) # write report to spreadsheet urbs.report(prob, os.path.join(result_dir, "{}.xlsx").format(sce), prob.com_demand, prob.sit) urbs.result_figures( prob, os.path.join(result_dir, "{}".format(sce)), plot_title_prefix=sce.replace("_", " ").title(), periods=plot_periods, ) return prob