From e535ba7d3bf8b14a9a7c383946057a6f3324033c Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 23 Feb 2021 10:27:53 -0700 Subject: [PATCH 01/19] adding sets/params for startup/shutdown curves --- egret/model_library/unit_commitment/params.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index dfd7e420..df90b873 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -524,6 +524,53 @@ def t0_unit_on_rule(m, g): _add_initial_time_periods_on_off_line(model) _verify_must_run_t0_state_consistency(model) + + # For future shutdowns/startups beyond the time-horizon + model.FutureStatus = Param(model.ThermalGenerators, + within=Reals, + mutable=True, + default=0. + initialize=thermal_gen_attrs.get('future_status', dict())) + + def time_periods_since_last_shutdown_rule(m,g): + if value(m.UnitOnT0[g]): + # longer than any time-horizon we'd consider + return 10000 + else: + return int(math.ceil( value(m.FutureStatus[g]) / value(m.TimePeriodLengthHours) )) + model.TimePeriodsSinceShutdown = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, + initialize=time_periods_since_last_shutdown_rule) + + def time_periods_before_startup_rule(m,g): + if value(m.FutureStatus[g]) <= 0: + # longer than any time-horizon we'd consider + return 10000 + else: + return int(math.ceil( value(m.FutureStatus[g]) / value(m.TimePeriodLengthHours) )) + model.TimePeriodsBeforeStartup = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, + initialize=time_periods_before_startup_rule) + + def startup_curve_init_rule(m,g): + startup_curve = thermal_gens[g].get('startup_curve') + ## TODO: check for 'inferred' key or something similar + if startup_curve is None: + return () + min_down_time = value(m.ScaledMinimumDownTime[g]) + if len(startup_curve) > min_down_time: + logger.warn(f"Truncating startup_curve longer than minimum down time {min_down_time} for generator {g}") + return startup_curve[0:min_down_time] + model.StartupCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=startup_curve_init_rule) + + def shutdown_curve_init_rule(m,g): + shutdown_curve = thermal_gens[g].get('shutdown_curve') + ## TODO: check for 'inferred' key or something similar + if shutdown_curve is None: + return () + min_down_time = value(m.ScaledMinimumDownTime[g]) + if len(shutdown_curve) > min_down_time: + logger.warn(f"Truncating shutdown_curve longer than minimum down time {min_down_time} for generator {g}") + return shutdown_curve[0:min_down_time] + model.ShutdownCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=shutdown_curve_init_rule) #################################################################### # generator power output at t=0 (initial condition). units are MW. # From 55d6fd6176566464beda0c4c07d6abfc8895db20 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 23 Feb 2021 11:21:30 -0700 Subject: [PATCH 02/19] adding PowerGeneratedStartupShutdown --- egret/model_library/unit_commitment/params.py | 51 ++++++++++--------- .../unit_commitment/power_balance.py | 4 +- .../unit_commitment/power_vars.py | 43 ++++++++++++++++ .../unit_commitment/security_constraints.py | 2 +- egret/models/unit_commitment.py | 2 +- 5 files changed, 75 insertions(+), 27 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index df90b873..d3d53516 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -549,34 +549,13 @@ def time_periods_before_startup_rule(m,g): return int(math.ceil( value(m.FutureStatus[g]) / value(m.TimePeriodLengthHours) )) model.TimePeriodsBeforeStartup = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, initialize=time_periods_before_startup_rule) - - def startup_curve_init_rule(m,g): - startup_curve = thermal_gens[g].get('startup_curve') - ## TODO: check for 'inferred' key or something similar - if startup_curve is None: - return () - min_down_time = value(m.ScaledMinimumDownTime[g]) - if len(startup_curve) > min_down_time: - logger.warn(f"Truncating startup_curve longer than minimum down time {min_down_time} for generator {g}") - return startup_curve[0:min_down_time] - model.StartupCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=startup_curve_init_rule) - - def shutdown_curve_init_rule(m,g): - shutdown_curve = thermal_gens[g].get('shutdown_curve') - ## TODO: check for 'inferred' key or something similar - if shutdown_curve is None: - return () - min_down_time = value(m.ScaledMinimumDownTime[g]) - if len(shutdown_curve) > min_down_time: - logger.warn(f"Truncating shutdown_curve longer than minimum down time {min_down_time} for generator {g}") - return shutdown_curve[0:min_down_time] - model.ShutdownCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=shutdown_curve_init_rule) #################################################################### # generator power output at t=0 (initial condition). units are MW. # #################################################################### def between_limits_validator(m, v, g): + # TODO: this needs to be relaxed t = m.TimePeriods.first() if value(m.UnitOnT0[g]): @@ -710,7 +689,33 @@ def scale_shutdown_limit_t0(m, g): else: return temp + m.MinimumPowerOutputT0[g] model.ScaledShutdownRampLimitT0 = Param(model.ThermalGenerators, within=NonNegativeReals, initialize=scale_shutdown_limit_t0, mutable=True) - + + ############################################### + # startup/shutdown curves for each generator. # + ############################################### + + def startup_curve_init_rule(m,g): + startup_curve = thermal_gens[g].get('startup_curve') + ## TODO: check for 'inferred' key or something similar + if startup_curve is None: + return () + min_down_time = value(m.ScaledMinimumDownTime[g]) + if len(startup_curve) > min_down_time: + logger.warn(f"Truncating startup_curve longer than scaled minimum down time {min_down_time} for generator {g}") + return startup_curve[0:min_down_time] + model.StartupCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=startup_curve_init_rule) + + def shutdown_curve_init_rule(m,g): + shutdown_curve = thermal_gens[g].get('shutdown_curve') + ## TODO: check for 'inferred' key or something similar + if shutdown_curve is None: + return () + min_down_time = value(m.ScaledMinimumDownTime[g]) + if len(shutdown_curve) > min_down_time: + logger.warn(f"Truncating shutdown_curve longer than scaled minimum down time {min_down_time} for generator {g}") + return shutdown_curve[0:min_down_time] + model.ShutdownCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=shutdown_curve_init_rule) + ############################################### # startup cost parameters for each generator. # ############################################### diff --git a/egret/model_library/unit_commitment/power_balance.py b/egret/model_library/unit_commitment/power_balance.py index 5603f4a4..df08d506 100644 --- a/egret/model_library/unit_commitment/power_balance.py +++ b/egret/model_library/unit_commitment/power_balance.py @@ -572,7 +572,7 @@ def _get_pg_expr_rule(t): def pg_expr_rule(block,b): m = block.parent_block() # bus b, time t (S) - return sum(m.PowerGenerated[g, t] for g in m.ThermalGeneratorsAtBus[b]) \ + return sum(m.PowerGeneratedStartupShutdown[g, t] for g in m.ThermalGeneratorsAtBus[b]) \ + sum(m.PowerOutputStorage[s, t] for s in m.StorageAtBus[b])\ - sum(m.PowerInputStorage[s, t] for s in m.StorageAtBus[b])\ + sum(m.NondispatchablePowerUsed[g, t] for g in m.NondispatchableGeneratorsAtBus[b]) \ @@ -776,7 +776,7 @@ def interface_violation_cost_rule(m,t): # Power balance at each node (S) def power_balance(m, b, t): # bus b, time t (S) - return sum(m.PowerGenerated[g, t] for g in m.ThermalGeneratorsAtBus[b]) \ + return sum(m.PowerGeneratedStartupShutdown[g, t] for g in m.ThermalGeneratorsAtBus[b]) \ + sum(m.PowerOutputStorage[s, t] for s in m.StorageAtBus[b])\ - sum(m.PowerInputStorage[s, t] for s in m.StorageAtBus[b])\ + sum(m.NondispatchablePowerUsed[g, t] for g in m.NondispatchableGeneratorsAtBus[b]) \ diff --git a/egret/model_library/unit_commitment/power_vars.py b/egret/model_library/unit_commitment/power_vars.py index ae65d2f0..c7171ce9 100644 --- a/egret/model_library/unit_commitment/power_vars.py +++ b/egret/model_library/unit_commitment/power_vars.py @@ -20,6 +20,45 @@ def reactive_power_bounds_rule(m,g,t): return (m.MinimumReactivePowerOutput[g,t], m.MaximumReactivePowerOutput[g,t]) model.ReactivePowerGenerated = Var(model.ThermalGenerators, model.TimePeriods, within=Reals, bounds=reactive_power_bounds_rule) +def _add_power_generated_grid(model): + assert model.InitialTime == 1 + + # check the status vars first to print a helpful message + if model.status_vars not in ['garver_3bin_vars', 'garver_3bin_relaxed_stop_vars', 'ALS_state_transition_vars']: + for s in model.StartupCurve.values(): + if len(s) > 0: + raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with startup curves") + for s in model.ShutdownCurve.values(): + if len(s) > 0: + raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with shutdown curves") + + def power_generated_grid_expr_rule(m, g, t): + startup_curve = m.StartupCurve[g] + shutdown_curve = m.ShutdownCurve[g] + time_periods_before_startup = value(m.TimePeriodsBeforeStartup[g]) + time_periods_since_shutdown = value(m.TimePeriodsSinceShutdown[g]) + + future_past_production = 0. + future_startup_power_index = time_periods_before_startup + m.NumTimePeriods - t + if future_startup_power_index <= len(startup_curve): + future_past_production += startup_curve[future_startup_power_index] + + past_shutdown_power_index = time_periods_since_shutdown + t + if past_shutdown_power_index <= len(shutdown_curve): + future_past_production += shutdown_curve[past_shutdown_power_index] + + linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) + for startup_idx in range(1, min( len(startup_curve)+1, m.NumTimePeriods+1-t )): + linear_vars.append(m.UnitStart[g,t+startup_idx]) + linear_coefs.append(startup_curve[startup_idx]) + for shutdown_idx in range(1, min( len(shutdown_curve)+1, t+1 )): + linear_vars.append(m.UnitStop[g,t-shutdown_idx+1]) + linear_coefs.append(shutdown_curve[shutdown_idx]) + + return LinearExpression(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_past_production) + model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, + rule=power_generated_grid_expr_rule) + ## garver/ME power variables (above minimum) @add_model_attr(component_name, requires = {'data_loader': None, 'status_vars': None}) def garver_power_vars(model): @@ -56,6 +95,8 @@ def power_generated_expr_rule(m, g, t): model._get_power_generated_lists = lambda m,g,t : ([m.PowerGeneratedAboveMinimum[g,t], m.UnitOn[g,t]], [1., m.MinimumPowerOutput[g,t]]) model._get_negative_power_generated_lists = lambda m,g,t : ([m.PowerGeneratedAboveMinimum[g,t], m.UnitOn[g,t]], [-1., -m.MinimumPowerOutput[g,t]]) + _add_power_generated_grid(model) + return ## carrion arroyo power variables (above minimum) @@ -83,4 +124,6 @@ def power_generated_expr_rule(m, g, t): model._get_power_generated_above_minimum_lists = lambda m,g,t : ([m.PowerGenerated[g,t], m.UnitOn[g,t]], [1., -m.MinimumPowerOutput[g,t]]) model._get_negative_power_generated_above_minimum_lists = lambda m,g,t : ([m.PowerGenerated[g,t], m.UnitOn[g,t]], [-1., m.MinimumPowerOutput[g,t]]) + _add_power_generated_grid(model) + return diff --git a/egret/model_library/unit_commitment/security_constraints.py b/egret/model_library/unit_commitment/security_constraints.py index fd629a4d..6756571f 100644 --- a/egret/model_library/unit_commitment/security_constraints.py +++ b/egret/model_library/unit_commitment/security_constraints.py @@ -97,7 +97,7 @@ def security_constraint_model(model): raise Exception('Unrecognized generator {} for security constraint {} at time {}'.format(g,s,time_keys[i])) ## TODO: Make LinearExpression? - b.pgSecurityExpression[s] = sum( val*model.PowerGenerated[g,t] for g,val in thermal_gen_coefs.items() ) \ + b.pgSecurityExpression[s] = sum( val*model.PowerGeneratedStartupShutdown[g,t] for g,val in thermal_gen_coefs.items() ) \ + sum( val*model.NondispatchablePowerUsed[g,t] for g,val in renewable_gen_coefs.items() ) \ + sum( val*(model.PowerOutputStorage[s,t]-model.PowerInputStorage[s,t]) for s,val in coefs['storage'].items()) diff --git a/egret/models/unit_commitment.py b/egret/models/unit_commitment.py index adaf7a46..6b462481 100644 --- a/egret/models/unit_commitment.py +++ b/egret/models/unit_commitment.py @@ -1047,7 +1047,7 @@ def _save_uc_results(m, relaxed): for dt, mt in enumerate(m.TimePeriods): - pg_dict[dt] = value(m.PowerGenerated[g,mt]) + pg_dict[dt] = value(m.PowerGeneratedStartupShutdown[g,mt]) if reserve_requirement: rg_dict[dt] = value(m.ReserveProvided[g,mt]) if relaxed: From f9fb2e1bcd476a5e29e3ed3fb1aa42d5eef68719 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 23 Feb 2021 15:49:57 -0700 Subject: [PATCH 03/19] relaxing T0 validator --- egret/model_library/unit_commitment/params.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index d3d53516..0d3e13a3 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -555,7 +555,6 @@ def time_periods_before_startup_rule(m,g): #################################################################### def between_limits_validator(m, v, g): - # TODO: this needs to be relaxed t = m.TimePeriods.first() if value(m.UnitOnT0[g]): @@ -569,6 +568,14 @@ def between_limits_validator(m, v, g): return False return True + elif (len(m.StartupCurve[g]) > 0) or (len(m.ShutdownCurve[g]) > 0): + time_periods_before_startup = value(m.TimePeriodsBeforeStartup[g]) + if time_periods_before_startup <= len(m.StartupCurve[g]): + return True + time_periods_since_shutdown = value(m.TimePeriodsSinceShutdown[g]) + if time_periods_since_shutdown <= len(m.ShutdownCurve[g]): + return True + return v == 0. else: return v == 0. @@ -696,7 +703,6 @@ def scale_shutdown_limit_t0(m, g): def startup_curve_init_rule(m,g): startup_curve = thermal_gens[g].get('startup_curve') - ## TODO: check for 'inferred' key or something similar if startup_curve is None: return () min_down_time = value(m.ScaledMinimumDownTime[g]) @@ -707,7 +713,6 @@ def startup_curve_init_rule(m,g): def shutdown_curve_init_rule(m,g): shutdown_curve = thermal_gens[g].get('shutdown_curve') - ## TODO: check for 'inferred' key or something similar if shutdown_curve is None: return () min_down_time = value(m.ScaledMinimumDownTime[g]) From ec7b4fe56f968fe364d02a03169d6a9728e36f6f Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 23 Feb 2021 17:43:28 -0700 Subject: [PATCH 04/19] cleanup --- egret/model_library/unit_commitment/params.py | 59 ++++++++++--------- .../unit_commitment/power_vars.py | 6 +- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index 0d3e13a3..13c20e9d 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -387,12 +387,12 @@ def warn_about_negative_demand_rule(m, b, t): ## Assert that MUT and MDT are at least 1 in the time units of the model. ## Otherwise, turn on/offs may not be enforced correctly. def scale_min_uptime(m, g): - scaled_up_time = int(round(m.MinimumUpTime[g] / m.TimePeriodLengthHours)) + scaled_up_time = int(math.ceil(m.MinimumUpTime[g] / m.TimePeriodLengthHours)) return min(max(scaled_up_time,1), value(m.NumTimePeriods)) model.ScaledMinimumUpTime = Param(model.ThermalGenerators, within=NonNegativeIntegers, initialize=scale_min_uptime) def scale_min_downtime(m, g): - scaled_down_time = int(round(m.MinimumDownTime[g] / m.TimePeriodLengthHours)) + scaled_down_time = int(math.ceil(m.MinimumDownTime[g] / m.TimePeriodLengthHours)) return min(max(scaled_down_time,1), value(m.NumTimePeriods)) model.ScaledMinimumDownTime = Param(model.ThermalGenerators, within=NonNegativeIntegers, initialize=scale_min_downtime) @@ -529,7 +529,7 @@ def t0_unit_on_rule(m, g): model.FutureStatus = Param(model.ThermalGenerators, within=Reals, mutable=True, - default=0. + default=0., initialize=thermal_gen_attrs.get('future_status', dict())) def time_periods_since_last_shutdown_rule(m,g): @@ -537,9 +537,12 @@ def time_periods_since_last_shutdown_rule(m,g): # longer than any time-horizon we'd consider return 10000 else: - return int(math.ceil( value(m.FutureStatus[g]) / value(m.TimePeriodLengthHours) )) + return int(math.ceil( -value(m.UnitOnT0State[g]) / value(m.TimePeriodLengthHours) )) model.TimePeriodsSinceShutdown = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, initialize=time_periods_since_last_shutdown_rule) + for g in model.ThermalGenerators: + print(f"{g}: time periods since shutdown: {model.TimePeriodsSinceShutdown[g].value}") + print(f"{g}: UnitOnT0State: {model.UnitOnT0State[g].value}") def time_periods_before_startup_rule(m,g): if value(m.FutureStatus[g]) <= 0: @@ -549,6 +552,30 @@ def time_periods_before_startup_rule(m,g): return int(math.ceil( value(m.FutureStatus[g]) / value(m.TimePeriodLengthHours) )) model.TimePeriodsBeforeStartup = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, initialize=time_periods_before_startup_rule) + + ############################################### + # startup/shutdown curves for each generator. # + ############################################### + + def startup_curve_init_rule(m,g): + startup_curve = thermal_gens[g].get('startup_curve') + if startup_curve is None: + return () + min_down_time = int(math.ceil(m.MinimumDownTime[g] / m.TimePeriodLengthHours)) + if len(startup_curve) > min_down_time: + logger.warn(f"Truncating startup_curve longer than scaled minimum down time {min_down_time} for generator {g}") + return startup_curve[0:min_down_time] + model.StartupCurve = Set(model.ThermalGenerators, within=NonNegativeReals, ordered=True, initialize=startup_curve_init_rule) + + def shutdown_curve_init_rule(m,g): + shutdown_curve = thermal_gens[g].get('shutdown_curve') + if shutdown_curve is None: + return () + min_down_time = int(math.ceil(m.MinimumDownTime[g] / m.TimePeriodLengthHours)) + if len(shutdown_curve) > min_down_time: + logger.warn(f"Truncating shutdown_curve longer than scaled minimum down time {min_down_time} for generator {g}") + return shutdown_curve[0:min_down_time] + model.ShutdownCurve = Set(model.ThermalGenerators, within=NonNegativeReals, ordered=True, initialize=shutdown_curve_init_rule) #################################################################### # generator power output at t=0 (initial condition). units are MW. # @@ -697,30 +724,6 @@ def scale_shutdown_limit_t0(m, g): return temp + m.MinimumPowerOutputT0[g] model.ScaledShutdownRampLimitT0 = Param(model.ThermalGenerators, within=NonNegativeReals, initialize=scale_shutdown_limit_t0, mutable=True) - ############################################### - # startup/shutdown curves for each generator. # - ############################################### - - def startup_curve_init_rule(m,g): - startup_curve = thermal_gens[g].get('startup_curve') - if startup_curve is None: - return () - min_down_time = value(m.ScaledMinimumDownTime[g]) - if len(startup_curve) > min_down_time: - logger.warn(f"Truncating startup_curve longer than scaled minimum down time {min_down_time} for generator {g}") - return startup_curve[0:min_down_time] - model.StartupCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=startup_curve_init_rule) - - def shutdown_curve_init_rule(m,g): - shutdown_curve = thermal_gens[g].get('shutdown_curve') - if shutdown_curve is None: - return () - min_down_time = value(m.ScaledMinimumDownTime[g]) - if len(shutdown_curve) > min_down_time: - logger.warn(f"Truncating shutdown_curve longer than scaled minimum down time {min_down_time} for generator {g}") - return shutdown_curve[0:min_down_time] - model.ShutdownCurve = Set(model.ThermalGenerators, within=NonNegativeReals, order=True, initialize=shutdown_curve_init_rule) - ############################################### # startup cost parameters for each generator. # ############################################### diff --git a/egret/model_library/unit_commitment/power_vars.py b/egret/model_library/unit_commitment/power_vars.py index c7171ce9..ebf85793 100644 --- a/egret/model_library/unit_commitment/power_vars.py +++ b/egret/model_library/unit_commitment/power_vars.py @@ -24,7 +24,7 @@ def _add_power_generated_grid(model): assert model.InitialTime == 1 # check the status vars first to print a helpful message - if model.status_vars not in ['garver_3bin_vars', 'garver_3bin_relaxed_stop_vars', 'ALS_state_transition_vars']: + if model.status_vars not in ['garver_2bin_vars', 'garver_3bin_vars', 'garver_3bin_relaxed_stop_vars', 'ALS_state_transition_vars']: for s in model.StartupCurve.values(): if len(s) > 0: raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with startup curves") @@ -54,8 +54,8 @@ def power_generated_grid_expr_rule(m, g, t): for shutdown_idx in range(1, min( len(shutdown_curve)+1, t+1 )): linear_vars.append(m.UnitStop[g,t-shutdown_idx+1]) linear_coefs.append(shutdown_curve[shutdown_idx]) - - return LinearExpression(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_past_production) + linear_expr = get_linear_expr(m.UnitOn, m.UnitStart, m.UnitStop) + return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_past_production) model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, rule=power_generated_grid_expr_rule) From 936f43788f7a2fa9fb487cb3cc0f594ade9c14f0 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Mon, 5 Apr 2021 18:50:32 -0600 Subject: [PATCH 05/19] ignoring PowerGeneratedT0 validator --- egret/model_library/unit_commitment/params.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index 13c20e9d..4fb4c4c1 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -540,9 +540,9 @@ def time_periods_since_last_shutdown_rule(m,g): return int(math.ceil( -value(m.UnitOnT0State[g]) / value(m.TimePeriodLengthHours) )) model.TimePeriodsSinceShutdown = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, initialize=time_periods_since_last_shutdown_rule) - for g in model.ThermalGenerators: - print(f"{g}: time periods since shutdown: {model.TimePeriodsSinceShutdown[g].value}") - print(f"{g}: UnitOnT0State: {model.UnitOnT0State[g].value}") + #for g in model.ThermalGenerators: + # print(f"{g}: time periods since shutdown: {model.TimePeriodsSinceShutdown[g].value}") + # print(f"{g}: UnitOnT0State: {model.UnitOnT0State[g].value}") def time_periods_before_startup_rule(m,g): if value(m.FutureStatus[g]) <= 0: @@ -608,7 +608,7 @@ def between_limits_validator(m, v, g): model.PowerGeneratedT0 = Param(model.ThermalGenerators, within=NonNegativeReals, - validate=between_limits_validator, + #validate=between_limits_validator, mutable=True, initialize=thermal_gen_attrs['initial_p_output']) From d4d5fea7ced26d5c28c5e2527c40fc95a766674d Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 6 Apr 2021 08:45:42 -0600 Subject: [PATCH 06/19] updating power_generated_t0_validator --- egret/model_library/unit_commitment/params.py | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index 4fb4c4c1..017b5a37 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -581,7 +581,7 @@ def shutdown_curve_init_rule(m,g): # generator power output at t=0 (initial condition). units are MW. # #################################################################### - def between_limits_validator(m, v, g): + def power_generated_t0_validator(m, v, g): t = m.TimePeriods.first() if value(m.UnitOnT0[g]): @@ -595,22 +595,17 @@ def between_limits_validator(m, v, g): return False return True - elif (len(m.StartupCurve[g]) > 0) or (len(m.ShutdownCurve[g]) > 0): - time_periods_before_startup = value(m.TimePeriodsBeforeStartup[g]) - if time_periods_before_startup <= len(m.StartupCurve[g]): - return True - time_periods_since_shutdown = value(m.TimePeriodsSinceShutdown[g]) - if time_periods_since_shutdown <= len(m.ShutdownCurve[g]): - return True - return v == 0. else: - return v == 0. + # Generator was off, but could have residual power due to + # start-up/shut-down curve. Therefore, do not be too picky + # as the value doesn't affect any constraints directly + return True model.PowerGeneratedT0 = Param(model.ThermalGenerators, - within=NonNegativeReals, - #validate=between_limits_validator, - mutable=True, - initialize=thermal_gen_attrs['initial_p_output']) + within=NonNegativeReals, + validate=power_generated_t0_validator, + mutable=True, + initialize=thermal_gen_attrs['initial_p_output']) # limits for time periods in which generators are brought on or off-line. # must be no less than the generator minimum output. From 1c959d8c7366c4bdca3c4322b1467f62f54f80fc Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 6 Apr 2021 17:28:53 -0600 Subject: [PATCH 07/19] adding tests for startup/shutdown curve --- egret/models/tests/test_unit_commitment.py | 2 +- egret/models/tests/uc_test_instances/tiny_uc_11.json | 1 + egret/models/tests/uc_test_instances/tiny_uc_11_results.json | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 egret/models/tests/uc_test_instances/tiny_uc_11.json create mode 100644 egret/models/tests/uc_test_instances/tiny_uc_11_results.json diff --git a/egret/models/tests/test_unit_commitment.py b/egret/models/tests/test_unit_commitment.py index 280cb536..26cac861 100644 --- a/egret/models/tests/test_unit_commitment.py +++ b/egret/models/tests/test_unit_commitment.py @@ -156,7 +156,7 @@ def test_super_tight_uc_model(): _test_uc_model(create_super_tight_unit_commitment_model, relax=True, test_objvals=lp_obj_list) def test_uc_runner(): - test_names = ['tiny_uc_{}'.format(i) for i in range(1,10+1)] + test_names = ['tiny_uc_{}'.format(i) for i in range(1,11+1)] for test_name in test_names: input_json_file_name = os.path.join(current_dir, 'uc_test_instances', test_name+'.json') md_in = ModelData(input_json_file_name) diff --git a/egret/models/tests/uc_test_instances/tiny_uc_11.json b/egret/models/tests/uc_test_instances/tiny_uc_11.json new file mode 100644 index 00000000..bfd65165 --- /dev/null +++ b/egret/models/tests/uc_test_instances/tiny_uc_11.json @@ -0,0 +1 @@ +{"elements": {"bus": {"Bus1": {}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "startup_curve": [100, 50, 25], "shutdown_curve": [75, 5]}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25, "p_max": 162, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 25, "shutdown_capacity": 25, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20, 15, 10, 5], "startup_curve": [20, 15, 10, 5], "fixed_commitment": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20, "p_max": 80, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 20, "shutdown_capacity": 20, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37, "1": 22.26, "2": 0.00712}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20, "p_max": 80, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 20, "shutdown_capacity": 20, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37, "1": 23.26, "2": 0.00712}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000001, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}}}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 1.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}}} \ No newline at end of file diff --git a/egret/models/tests/uc_test_instances/tiny_uc_11_results.json b/egret/models/tests/uc_test_instances/tiny_uc_11_results.json new file mode 100644 index 00000000..02ce6514 --- /dev/null +++ b/egret/models/tests/uc_test_instances/tiny_uc_11_results.json @@ -0,0 +1 @@ +{"elements": {"bus": {"Bus1": {"p_balance_violation": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pl": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}, "va": {"data_type": "time_series", "values": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]}}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "pg": {"data_type": "time_series", "values": [455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3]}, "production_cost": {"data_type": "time_series", "values": [5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 17.931185999999997, 8.5517964, 8.275932, 8.0000676, 8.0000676, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 10.896643799999998, 20.413965599999997]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "pg": {"data_type": "time_series", "values": [275.0742184000001, 264.22287600000004, 293.79720480000003, 268.513424, 238.22964319999997, 238.22964319999997, 243.513424, 279.0809856000001, 365.3579992, 417.67304, 299.13501279999997, 302.5, 299.13501279999997, 268.8512320000001, 253.70934160000002, 253.70934160000002, 302.5, 302.5, 302.5, 302.5, 302.5, 302.5, 401.2093416, 392.09756199999987]}, "rg": {"data_type": "time_series", "values": [78.11416665905818, 93.34684160000003, 33.505988, 27.586440000000024, 0.0, 26.66689199999996, 170.12293963636364, 79.42553599999994, 34.8529636363636, 0.0, 0.0, 0.0, 37.70146799999998, 0.0, 0.0, 0.0, 0.0, 41.83943399999998, 41.37966000000006, 0.0, 0.0, 152.5, 8.794807436363186, 49.707093200000145]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3]}, "production_cost": {"data_type": "time_series", "values": [2177.1919345324823, 1988.3004471072002, 2503.1067033945606, 2062.9868742528, 1535.8310451110394, 1535.8310451110394, 1627.8068742527996, 2246.9385325363214, 3757.9821747571204, 4676.299474944001, 2596.0229948121596, 2654.598, 2596.0229948121596, 2068.8671656704014, 1805.2892510995202, 1805.2892510995202, 2654.598, 2654.598, 2654.598, 2654.598, 2654.598, 2654.598, 4387.30229870976, 4227.357764323198]}, "reg_provider": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5544695909090935, 3.3563502, 0.0, 3.7701468, 0.0, 0.0, 18.75, 0.0, 0.0, 0.0, 4.1839433999999995, 4.137966000000002, 18.75, 0.0, 0.0, 3.6322145999999997, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.416166634628744, 2.988531, 5.7011976, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 0.0, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.264429199999999, 0.0, 7.632248400000002, 8.367886799999999, 8.275932, 8.092022400000001, 7.8161580000000015, 0.0, 3.6322145999999473, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 26.310778399999997, 0.0, 0.6667567999999982, 0.0, 0.0, 2.388084009090907, 0.0, 3.678191999999995, 0.0, 22.8967452, 0.0, 0.0, 2.1594656999999984, 0.0, 0.0, 25.103660400000003, 0.0, 0.0, 0.0, 0.0, 0.0, 2.9883620000000093]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 0.0, 8.8276608, 10.069050599999999, 11.034576000000001, 11.3104404, 0.0, 11.3104404, 0.0, 0.0, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 0.0, 0.0, 0.0, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.138101199999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [101.8116149409417, 96.02134940000008, 57.331958799999995, 118.93720960000002, 216.77035680000003, 172.33263480000005, 41.363636363636374, 73.03285042727268, 43.0337001909092, 37.326959999999985, 155.86498720000003, 130.32389639999997, 88.04196240000005, 142.78378079999987, 121.16349330000008, 185.83167150000003, 141.86422380000002, 45.0904338, 21.13620839999993, 87.672204, 112.5, 0.0, 44.995850963636826, 13.195344799999987]}}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.0, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "startup_curve": [100, 50, 25], "shutdown_curve": [75, 5], "pg": {"data_type": "time_series", "values": [150.0, 75.0, 5.0, 0.0, 0.0, 0.0, 25.0, 50.0, 100.0, 150.0, 302.5, 314.27690320000005, 302.5, 302.5, 302.5, 302.5, 314.27690320000005, 435.4120264000002, 420.27013599999987, 389.98635520000016, 344.560684, 329.41879360000075, 150.0, 75.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.7819199999999, 36.322145999999975, 36.322145999999975, 38.1612419999999, 0.0, 0.0, 40.46011199999995, 39.080790000000036, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [2685.9750000000004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3185.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2653.5419375, 2859.576798025941, 2653.5419375, 2653.5419375, 2653.5419375, 2653.5419375, 2859.576798025941, 4978.814579763383, 4713.909857046197, 4184.100411611844, 3389.3862434602997, 3124.4815207431334, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.75, 9.402376800000006, 0.0, 0.0, 18.75, 2.06898300000001, 0.0, 0.0, 0.0, 0.0, 18.75, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.5402936, 0.0, 0.0, 7.264429199999999, 0.0, 0.0, 0.0, 0.0, 0.0, 3.8621016, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.620880800000005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 53.79355799999999, 51.310778400000004, 49.65559200000001, 48.00040559999999, 48.00040559999999, 49.65559200000001, 52.965964799999995, 60.41430359999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.241896800000006]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.8967452, 0.0, 11.034576, 0.0, 0.0, 0.0, 0.0, 0.0, 24.2760672, 11.724237, 11.586304799999999, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 21.793287599999996, 21.793287599999996, 22.8967452, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 72.5, 32.03286119999996, 0.0, 30.83744880000006, 116.17785400000002, 76.17785400000002, 50.147956799999974, 19.587973599999827, 34.729864000000134, 24.553532799999857, 71.35852599999998, 45.581206399999246, 0.0, 0.0]}}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.0, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "pg": {"data_type": "time_series", "values": [178.0575816, 176.954124, 176.4023952, 176.03457600000002, 175.6667568, 175.6667568, 176.03457600000002, 176.77021440000001, 178.4254008, 183.39096, 180.0805872, 180.2644968, 180.08058720000002, 179.71276799999998, 179.5288584, 179.5288584, 180.26449680000002, 181.73577360000002, 181.551864, 181.1840448, 180.632316, 180.4484063999998, 179.52885840000005, 182.011638]}, "rg": {"data_type": "time_series", "values": [0.0, 16.538468399999992, 0.0, 0.0, 26.66689199999997, 0.0, 0.0, 0.0, 38.71053836363638, 10.423474199999987, 1.5869807999999281, 38.16124199999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.105427357601002e-15, 1.7763568394002505e-14, 0.0, 2.5579538487363607e-13, 20.860343999999778, 75.66455980000006]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004]}, "production_cost": {"data_type": "time_series", "values": [516.26721727494, 495.9632939841, 485.81133233868, 479.0433579084, 472.2753834781199, 472.2753834781199, 479.0433579084, 492.57930676896007, 523.03519170522, 614.4028465140002, 553.49107664148, 556.87506385662, 553.4910766414806, 546.7231022112, 543.3391149960601, 543.3391149960601, 556.87506385662, 583.94696157774, 580.5629743625999, 573.79499993232, 563.6430382869, 560.2590510717565, 543.339114996061, 589.02294240045]}, "reg_provider": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 17.931186, 5.7011976, 16.551864, 5.333378400000001, 5.333378400000001, 6.551863999999999, 5.330637609090907, 3.3563502, 7.356384000000007, 3.7701468, 9.080621, 8.850734, 3.678192, 9.633821900000001, 3.6322145999999997, 10.827762199999992, 4.1839433999999995, 10.689829999999997, 4.046011200000001, 13.448474000000001, 3.8621016, 3.6322145999999997, 6.804655199999999]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 7.356384000000004, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 6.804655199999999]}, "spinning_supplied": {"data_type": "time_series", "values": [13.0575816, 0.0, 0.0, 0.0, 0.0, 0.6667567999999982, 0.0, 9.382130390909094, 13.4254008, 11.034575999999992, 15.0805872, 0.0, 0.0, 4.712768, 0.0, 4.528858399999999, 0.0, 7.934130200000009, 0.0, 7.94176493333333, 0.0, 15.4484064, 14.528858399999999, 0.620948399999989]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [16.321976999999997, 26.896778999999995, 15.655389200000002, 24.827796, 14.0002028, 24.0002028, 14.827796, 17.100852009090907, 16.781751, 22.069152000000003, 25.61824440000001, 34.34511780000001, 42.862642399999984, 33.103728, 32.6899314, 18.161073000000002, 34.345117800000004, 37.6554906, 37.241693999999995, 36.4141008, 25.172711, 19.310507999999995, 18.161073000000002, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [19.5863724, 0.0, 8.5517964, 8.275932, 8.0000676, 8.0000676, 16.551864, 8.8276608, 10.069050599999999, 11.034575999999998, 11.3104404, 1.4483726000000008, 11.3104404, 11.034576, 21.793287599999996, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 13.157227466666667, 11.724237, 10.164005933333314, 10.896643799999998, 6.873649466666668]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [83.02111280000001, 0.0, 15.54986980000001, 26.5384684, 4.5612712000000215, 96.99858040000001, 62.83686519999998, 66.41133036363641, 0.0, 0.0, 5.684341886080802e-14, 0.0, 6.456698199999948, 26.98586080000007, 0.0, 48.27627000000001, 37.066617000000036, 2.842170943040401e-14, 0.0, 0.0, 2.842170943040401e-14, 2.842170943040401e-14, 0.0, 0.0]}}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25.0, "p_max": 162.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 25.0, "shutdown_capacity": 25.0, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0.0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45.0, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25.0, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20, 15, 10, 5], "startup_curve": [20, 15, 10, 5], "fixed_commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pg": {"data_type": "time_series", "values": [10.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 8.448136000000002, 8.999864800000001, 8.999864800000001, 8.448136000000002, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5605079999999987, 0.0, 13.609310399999998]}, "supplemental_supplied": {"data_type": "time_series", "values": [25.0, 25.0, 25.0, 16.551864, 16.0001352, 16.0001352, 16.551864, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 24.439492, 25.0, 11.390689600000002]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 22.26, "2": 0.00712}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 60.0, 60.0, 60.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 60.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [502.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 0.0, 0.0, 10.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.000000000000007]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4222988666666847, 0.0, 3.333333333333331]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 33.103221000000005, 30.0, 30.0, 30.0, 0.0, 0.0, 30.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.733103399999948, 0.0, 0.0]}}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 23.26, "2": 0.00712}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 2.5864399999999996, 1.6668920000000007, 1.6668920000000007, 2.5864399999999996, 20.0, 20.0, 20.0, 20.0, 20.0, 0.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 0.0, 20.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 17.41356, 18.333108, 18.333108, 17.41356, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 0.0, 20.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000001, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "dc_branch": {}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 1.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "total_cost": 481071.67308988917}} \ No newline at end of file From 39b96a72c4a01ed26e9d2ba4a6362474bd348979 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 6 Apr 2021 17:36:30 -0600 Subject: [PATCH 08/19] creating rule for 1-bin models --- .../unit_commitment/power_vars.py | 56 +++++++++++-------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/egret/model_library/unit_commitment/power_vars.py b/egret/model_library/unit_commitment/power_vars.py index ebf85793..b5648dd5 100644 --- a/egret/model_library/unit_commitment/power_vars.py +++ b/egret/model_library/unit_commitment/power_vars.py @@ -32,30 +32,38 @@ def _add_power_generated_grid(model): if len(s) > 0: raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with shutdown curves") - def power_generated_grid_expr_rule(m, g, t): - startup_curve = m.StartupCurve[g] - shutdown_curve = m.ShutdownCurve[g] - time_periods_before_startup = value(m.TimePeriodsBeforeStartup[g]) - time_periods_since_shutdown = value(m.TimePeriodsSinceShutdown[g]) - - future_past_production = 0. - future_startup_power_index = time_periods_before_startup + m.NumTimePeriods - t - if future_startup_power_index <= len(startup_curve): - future_past_production += startup_curve[future_startup_power_index] - - past_shutdown_power_index = time_periods_since_shutdown + t - if past_shutdown_power_index <= len(shutdown_curve): - future_past_production += shutdown_curve[past_shutdown_power_index] - - linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) - for startup_idx in range(1, min( len(startup_curve)+1, m.NumTimePeriods+1-t )): - linear_vars.append(m.UnitStart[g,t+startup_idx]) - linear_coefs.append(startup_curve[startup_idx]) - for shutdown_idx in range(1, min( len(shutdown_curve)+1, t+1 )): - linear_vars.append(m.UnitStop[g,t-shutdown_idx+1]) - linear_coefs.append(shutdown_curve[shutdown_idx]) - linear_expr = get_linear_expr(m.UnitOn, m.UnitStart, m.UnitStop) - return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_past_production) + ## if we're here, then we can use these 1-bin models + def power_generated_grid_expr_rule(m, g, t): + linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) + linear_expr = get_linear_expr(m.UnitOn) + return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs) + + else: + def power_generated_grid_expr_rule(m, g, t): + startup_curve = m.StartupCurve[g] + shutdown_curve = m.ShutdownCurve[g] + time_periods_before_startup = value(m.TimePeriodsBeforeStartup[g]) + time_periods_since_shutdown = value(m.TimePeriodsSinceShutdown[g]) + + future_past_production = 0. + future_startup_power_index = time_periods_before_startup + m.NumTimePeriods - t + if future_startup_power_index <= len(startup_curve): + future_past_production += startup_curve[future_startup_power_index] + + past_shutdown_power_index = time_periods_since_shutdown + t + if past_shutdown_power_index <= len(shutdown_curve): + future_past_production += shutdown_curve[past_shutdown_power_index] + + linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) + for startup_idx in range(1, min( len(startup_curve)+1, m.NumTimePeriods+1-t )): + linear_vars.append(m.UnitStart[g,t+startup_idx]) + linear_coefs.append(startup_curve[startup_idx]) + for shutdown_idx in range(1, min( len(shutdown_curve)+1, t+1 )): + linear_vars.append(m.UnitStop[g,t-shutdown_idx+1]) + linear_coefs.append(shutdown_curve[shutdown_idx]) + linear_expr = get_linear_expr(m.UnitOn, m.UnitStart, m.UnitStop) + return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_past_production) + model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, rule=power_generated_grid_expr_rule) From eb810315f639d75ffb0cad167e4190317d89339b Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Tue, 6 Apr 2021 18:04:17 -0600 Subject: [PATCH 09/19] cleanup --- egret/model_library/unit_commitment/params.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index 017b5a37..fc729f3c 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -540,9 +540,6 @@ def time_periods_since_last_shutdown_rule(m,g): return int(math.ceil( -value(m.UnitOnT0State[g]) / value(m.TimePeriodLengthHours) )) model.TimePeriodsSinceShutdown = Param(model.ThermalGenerators, within=PositiveIntegers, mutable=True, initialize=time_periods_since_last_shutdown_rule) - #for g in model.ThermalGenerators: - # print(f"{g}: time periods since shutdown: {model.TimePeriodsSinceShutdown[g].value}") - # print(f"{g}: UnitOnT0State: {model.UnitOnT0State[g].value}") def time_periods_before_startup_rule(m,g): if value(m.FutureStatus[g]) <= 0: From db10babee1cefc7ff56f5d91333139cdbb035207 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Wed, 7 Apr 2021 08:33:22 -0600 Subject: [PATCH 10/19] more cleanup --- egret/model_library/unit_commitment/params.py | 7 +++++++ .../unit_commitment/power_vars.py | 21 ++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/egret/model_library/unit_commitment/params.py b/egret/model_library/unit_commitment/params.py index fc729f3c..0f1eaa39 100644 --- a/egret/model_library/unit_commitment/params.py +++ b/egret/model_library/unit_commitment/params.py @@ -526,6 +526,10 @@ def t0_unit_on_rule(m, g): _verify_must_run_t0_state_consistency(model) # For future shutdowns/startups beyond the time-horizon + # Like UnitOnT0State, a postive quantity means the generator + # *will start* in 'future_status' hours, and a negative quantity + # means the generator *will stop* in -('future_status') hours. + # The default of 0 means we have no information model.FutureStatus = Param(model.ThermalGenerators, within=Reals, mutable=True, @@ -552,6 +556,9 @@ def time_periods_before_startup_rule(m,g): ############################################### # startup/shutdown curves for each generator. # + # These are specified in the same time scales # + # as 'time_period_length_minutes' and other # + # time-vary quantities. # ############################################### def startup_curve_init_rule(m,g): diff --git a/egret/model_library/unit_commitment/power_vars.py b/egret/model_library/unit_commitment/power_vars.py index b5648dd5..b222e06a 100644 --- a/egret/model_library/unit_commitment/power_vars.py +++ b/egret/model_library/unit_commitment/power_vars.py @@ -20,7 +20,7 @@ def reactive_power_bounds_rule(m,g,t): return (m.MinimumReactivePowerOutput[g,t], m.MaximumReactivePowerOutput[g,t]) model.ReactivePowerGenerated = Var(model.ThermalGenerators, model.TimePeriods, within=Reals, bounds=reactive_power_bounds_rule) -def _add_power_generated_grid(model): +def _add_power_generated_startup_shutdown(model): assert model.InitialTime == 1 # check the status vars first to print a helpful message @@ -33,26 +33,27 @@ def _add_power_generated_grid(model): raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with shutdown curves") ## if we're here, then we can use these 1-bin models - def power_generated_grid_expr_rule(m, g, t): + def power_generated_startup_shutdown_expr_rule(m, g, t): linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) linear_expr = get_linear_expr(m.UnitOn) return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs) else: - def power_generated_grid_expr_rule(m, g, t): + + def power_generated_startup_shutdown_expr_rule(m, g, t): startup_curve = m.StartupCurve[g] shutdown_curve = m.ShutdownCurve[g] time_periods_before_startup = value(m.TimePeriodsBeforeStartup[g]) time_periods_since_shutdown = value(m.TimePeriodsSinceShutdown[g]) - future_past_production = 0. + future_startup_past_shutdown_production = 0. future_startup_power_index = time_periods_before_startup + m.NumTimePeriods - t if future_startup_power_index <= len(startup_curve): - future_past_production += startup_curve[future_startup_power_index] + future_startup_past_shutdown_production += startup_curve[future_startup_power_index] past_shutdown_power_index = time_periods_since_shutdown + t if past_shutdown_power_index <= len(shutdown_curve): - future_past_production += shutdown_curve[past_shutdown_power_index] + future_startup_past_shutdown_production += shutdown_curve[past_shutdown_power_index] linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) for startup_idx in range(1, min( len(startup_curve)+1, m.NumTimePeriods+1-t )): @@ -62,10 +63,10 @@ def power_generated_grid_expr_rule(m, g, t): linear_vars.append(m.UnitStop[g,t-shutdown_idx+1]) linear_coefs.append(shutdown_curve[shutdown_idx]) linear_expr = get_linear_expr(m.UnitOn, m.UnitStart, m.UnitStop) - return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_past_production) + return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_startup_past_shutdown_production) model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, - rule=power_generated_grid_expr_rule) + rule=power_generated_startup_shutdown_expr_rule) ## garver/ME power variables (above minimum) @add_model_attr(component_name, requires = {'data_loader': None, 'status_vars': None}) @@ -103,7 +104,7 @@ def power_generated_expr_rule(m, g, t): model._get_power_generated_lists = lambda m,g,t : ([m.PowerGeneratedAboveMinimum[g,t], m.UnitOn[g,t]], [1., m.MinimumPowerOutput[g,t]]) model._get_negative_power_generated_lists = lambda m,g,t : ([m.PowerGeneratedAboveMinimum[g,t], m.UnitOn[g,t]], [-1., -m.MinimumPowerOutput[g,t]]) - _add_power_generated_grid(model) + _add_power_generated_startup_shutdown(model) return @@ -132,6 +133,6 @@ def power_generated_expr_rule(m, g, t): model._get_power_generated_above_minimum_lists = lambda m,g,t : ([m.PowerGenerated[g,t], m.UnitOn[g,t]], [1., -m.MinimumPowerOutput[g,t]]) model._get_negative_power_generated_above_minimum_lists = lambda m,g,t : ([m.PowerGenerated[g,t], m.UnitOn[g,t]], [-1., m.MinimumPowerOutput[g,t]]) - _add_power_generated_grid(model) + _add_power_generated_startup_shutdown(model) return From efb3bcfde8433e1ceb2197256e8aed3adc55e350 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Wed, 7 Apr 2021 08:47:11 -0600 Subject: [PATCH 11/19] scaling by baseMVA --- egret/model_library/transmission/tx_utils.py | 9 ++++++++- egret/models/tests/uc_test_instances/tiny_uc_11.json | 2 +- .../tests/uc_test_instances/tiny_uc_11_results.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index d9773053..4be846cd 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -247,6 +247,8 @@ def load_shed_limit(load, gens, gen_mins): 'q_max', 'startup_capacity', 'shutdown_capacity', + 'startup_curve', + 'shutdown_curve', 'ramp_up_60min', 'ramp_down_60min', 'initial_p_output', @@ -436,7 +438,12 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, _scale_by_baseMVA(normal_op, inverse_op, attr, k, v, baseMVA, attributes) elif attr_name in attributes: op = _get_op(normal_op, inverse_op, attr_name) - element[attr_name] = op( attr , baseMVA ) + if isinstance(attr, list): + element[attr_name] = [ op(a, baseMVA) for a in attr ] + elif isinstance(attr, tuple): + element[attr_name] = tuple( op(a, baseMVA) for a in attr ) + else: + element[attr_name] = op( attr , baseMVA ) else: return diff --git a/egret/models/tests/uc_test_instances/tiny_uc_11.json b/egret/models/tests/uc_test_instances/tiny_uc_11.json index bfd65165..ff713963 100644 --- a/egret/models/tests/uc_test_instances/tiny_uc_11.json +++ b/egret/models/tests/uc_test_instances/tiny_uc_11.json @@ -1 +1 @@ -{"elements": {"bus": {"Bus1": {}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "startup_curve": [100, 50, 25], "shutdown_curve": [75, 5]}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25, "p_max": 162, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 25, "shutdown_capacity": 25, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20, 15, 10, 5], "startup_curve": [20, 15, 10, 5], "fixed_commitment": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20, "p_max": 80, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 20, "shutdown_capacity": 20, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37, "1": 22.26, "2": 0.00712}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20, "p_max": 80, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 20, "shutdown_capacity": 20, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37, "1": 23.26, "2": 0.00712}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000001, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}}}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 1.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}}} \ No newline at end of file +{"elements": {"bus": {"Bus1": {}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "startup_curve": [100, 50, 25], "shutdown_curve": [75, 5]}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150, "p_max": 455, "ramp_up_60min": 225, "ramp_down_60min": 225, "startup_capacity": 150, "shutdown_capacity": 150, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25, "p_max": 162, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 25, "shutdown_capacity": 25, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20, 15, 10, 5], "startup_curve": [20, 15, 10, 5], "fixed_commitment": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20, "p_max": 80, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 20, "shutdown_capacity": 20, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37, "1": 22.26, "2": 0.00712}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20, "p_max": 80, "ramp_up_60min": 60, "ramp_down_60min": 60, "startup_capacity": 20, "shutdown_capacity": 20, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37, "1": 23.26, "2": 0.00712}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000001, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}}}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 100.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}}} \ No newline at end of file diff --git a/egret/models/tests/uc_test_instances/tiny_uc_11_results.json b/egret/models/tests/uc_test_instances/tiny_uc_11_results.json index 02ce6514..0c098f7f 100644 --- a/egret/models/tests/uc_test_instances/tiny_uc_11_results.json +++ b/egret/models/tests/uc_test_instances/tiny_uc_11_results.json @@ -1 +1 @@ -{"elements": {"bus": {"Bus1": {"p_balance_violation": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pl": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}, "va": {"data_type": "time_series", "values": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]}}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.177, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "pg": {"data_type": "time_series", "values": [455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3, 2539.3]}, "production_cost": {"data_type": "time_series", "values": [5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 17.931185999999997, 8.5517964, 8.275932, 8.0000676, 8.0000676, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 10.896643799999998, 20.413965599999997]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "pg": {"data_type": "time_series", "values": [275.0742184000001, 264.22287600000004, 293.79720480000003, 268.513424, 238.22964319999997, 238.22964319999997, 243.513424, 279.0809856000001, 365.3579992, 417.67304, 299.13501279999997, 302.5, 299.13501279999997, 268.8512320000001, 253.70934160000002, 253.70934160000002, 302.5, 302.5, 302.5, 302.5, 302.5, 302.5, 401.2093416, 392.09756199999987]}, "rg": {"data_type": "time_series", "values": [78.11416665905818, 93.34684160000003, 33.505988, 27.586440000000024, 0.0, 26.66689199999996, 170.12293963636364, 79.42553599999994, 34.8529636363636, 0.0, 0.0, 0.0, 37.70146799999998, 0.0, 0.0, 0.0, 0.0, 41.83943399999998, 41.37966000000006, 0.0, 0.0, 152.5, 8.794807436363186, 49.707093200000145]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3, 2689.3]}, "production_cost": {"data_type": "time_series", "values": [2177.1919345324823, 1988.3004471072002, 2503.1067033945606, 2062.9868742528, 1535.8310451110394, 1535.8310451110394, 1627.8068742527996, 2246.9385325363214, 3757.9821747571204, 4676.299474944001, 2596.0229948121596, 2654.598, 2596.0229948121596, 2068.8671656704014, 1805.2892510995202, 1805.2892510995202, 2654.598, 2654.598, 2654.598, 2654.598, 2654.598, 2654.598, 4387.30229870976, 4227.357764323198]}, "reg_provider": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5544695909090935, 3.3563502, 0.0, 3.7701468, 0.0, 0.0, 18.75, 0.0, 0.0, 0.0, 4.1839433999999995, 4.137966000000002, 18.75, 0.0, 0.0, 3.6322145999999997, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.416166634628744, 2.988531, 5.7011976, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 0.0, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.264429199999999, 0.0, 7.632248400000002, 8.367886799999999, 8.275932, 8.092022400000001, 7.8161580000000015, 0.0, 3.6322145999999473, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 26.310778399999997, 0.0, 0.6667567999999982, 0.0, 0.0, 2.388084009090907, 0.0, 3.678191999999995, 0.0, 22.8967452, 0.0, 0.0, 2.1594656999999984, 0.0, 0.0, 25.103660400000003, 0.0, 0.0, 0.0, 0.0, 0.0, 2.9883620000000093]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 0.0, 8.8276608, 10.069050599999999, 11.034576000000001, 11.3104404, 0.0, 11.3104404, 0.0, 0.0, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 0.0, 0.0, 0.0, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.138101199999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [101.8116149409417, 96.02134940000008, 57.331958799999995, 118.93720960000002, 216.77035680000003, 172.33263480000005, 41.363636363636374, 73.03285042727268, 43.0337001909092, 37.326959999999985, 155.86498720000003, 130.32389639999997, 88.04196240000005, 142.78378079999987, 121.16349330000008, 185.83167150000003, 141.86422380000002, 45.0904338, 21.13620839999993, 87.672204, 112.5, 0.0, 44.995850963636826, 13.195344799999987]}}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.0, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "startup_curve": [100, 50, 25], "shutdown_curve": [75, 5], "pg": {"data_type": "time_series", "values": [150.0, 75.0, 5.0, 0.0, 0.0, 0.0, 25.0, 50.0, 100.0, 150.0, 302.5, 314.27690320000005, 302.5, 302.5, 302.5, 302.5, 314.27690320000005, 435.4120264000002, 420.27013599999987, 389.98635520000016, 344.560684, 329.41879360000075, 150.0, 75.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.7819199999999, 36.322145999999975, 36.322145999999975, 38.1612419999999, 0.0, 0.0, 40.46011199999995, 39.080790000000036, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [2685.9750000000004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3185.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2653.5419375, 2859.576798025941, 2653.5419375, 2653.5419375, 2653.5419375, 2653.5419375, 2859.576798025941, 4978.814579763383, 4713.909857046197, 4184.100411611844, 3389.3862434602997, 3124.4815207431334, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.75, 9.402376800000006, 0.0, 0.0, 18.75, 2.06898300000001, 0.0, 0.0, 0.0, 0.0, 18.75, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.5402936, 0.0, 0.0, 7.264429199999999, 0.0, 0.0, 0.0, 0.0, 0.0, 3.8621016, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.620880800000005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 53.79355799999999, 51.310778400000004, 49.65559200000001, 48.00040559999999, 48.00040559999999, 49.65559200000001, 52.965964799999995, 60.41430359999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.241896800000006]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.8967452, 0.0, 11.034576, 0.0, 0.0, 0.0, 0.0, 0.0, 24.2760672, 11.724237, 11.586304799999999, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 21.793287599999996, 21.793287599999996, 22.8967452, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 72.5, 32.03286119999996, 0.0, 30.83744880000006, 116.17785400000002, 76.17785400000002, 50.147956799999974, 19.587973599999827, 34.729864000000134, 24.553532799999857, 71.35852599999998, 45.581206399999246, 0.0, 0.0]}}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.0, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363636, "pg": {"data_type": "time_series", "values": [178.0575816, 176.954124, 176.4023952, 176.03457600000002, 175.6667568, 175.6667568, 176.03457600000002, 176.77021440000001, 178.4254008, 183.39096, 180.0805872, 180.2644968, 180.08058720000002, 179.71276799999998, 179.5288584, 179.5288584, 180.26449680000002, 181.73577360000002, 181.551864, 181.1840448, 180.632316, 180.4484063999998, 179.52885840000005, 182.011638]}, "rg": {"data_type": "time_series", "values": [0.0, 16.538468399999992, 0.0, 0.0, 26.66689199999997, 0.0, 0.0, 0.0, 38.71053836363638, 10.423474199999987, 1.5869807999999281, 38.16124199999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.105427357601002e-15, 1.7763568394002505e-14, 0.0, 2.5579538487363607e-13, 20.860343999999778, 75.66455980000006]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004]}, "production_cost": {"data_type": "time_series", "values": [516.26721727494, 495.9632939841, 485.81133233868, 479.0433579084, 472.2753834781199, 472.2753834781199, 479.0433579084, 492.57930676896007, 523.03519170522, 614.4028465140002, 553.49107664148, 556.87506385662, 553.4910766414806, 546.7231022112, 543.3391149960601, 543.3391149960601, 556.87506385662, 583.94696157774, 580.5629743625999, 573.79499993232, 563.6430382869, 560.2590510717565, 543.339114996061, 589.02294240045]}, "reg_provider": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 17.931186, 5.7011976, 16.551864, 5.333378400000001, 5.333378400000001, 6.551863999999999, 5.330637609090907, 3.3563502, 7.356384000000007, 3.7701468, 9.080621, 8.850734, 3.678192, 9.633821900000001, 3.6322145999999997, 10.827762199999992, 4.1839433999999995, 10.689829999999997, 4.046011200000001, 13.448474000000001, 3.8621016, 3.6322145999999997, 6.804655199999999]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 7.356384000000004, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 6.804655199999999]}, "spinning_supplied": {"data_type": "time_series", "values": [13.0575816, 0.0, 0.0, 0.0, 0.0, 0.6667567999999982, 0.0, 9.382130390909094, 13.4254008, 11.034575999999992, 15.0805872, 0.0, 0.0, 4.712768, 0.0, 4.528858399999999, 0.0, 7.934130200000009, 0.0, 7.94176493333333, 0.0, 15.4484064, 14.528858399999999, 0.620948399999989]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [16.321976999999997, 26.896778999999995, 15.655389200000002, 24.827796, 14.0002028, 24.0002028, 14.827796, 17.100852009090907, 16.781751, 22.069152000000003, 25.61824440000001, 34.34511780000001, 42.862642399999984, 33.103728, 32.6899314, 18.161073000000002, 34.345117800000004, 37.6554906, 37.241693999999995, 36.4141008, 25.172711, 19.310507999999995, 18.161073000000002, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [19.5863724, 0.0, 8.5517964, 8.275932, 8.0000676, 8.0000676, 16.551864, 8.8276608, 10.069050599999999, 11.034575999999998, 11.3104404, 1.4483726000000008, 11.3104404, 11.034576, 21.793287599999996, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 13.157227466666667, 11.724237, 10.164005933333314, 10.896643799999998, 6.873649466666668]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [83.02111280000001, 0.0, 15.54986980000001, 26.5384684, 4.5612712000000215, 96.99858040000001, 62.83686519999998, 66.41133036363641, 0.0, 0.0, 5.684341886080802e-14, 0.0, 6.456698199999948, 26.98586080000007, 0.0, 48.27627000000001, 37.066617000000036, 2.842170943040401e-14, 0.0, 0.0, 2.842170943040401e-14, 2.842170943040401e-14, 0.0, 0.0]}}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25.0, "p_max": 162.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 25.0, "shutdown_capacity": 25.0, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0.0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45.0, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25.0, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20, 15, 10, 5], "startup_curve": [20, 15, 10, 5], "fixed_commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pg": {"data_type": "time_series", "values": [10.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 8.448136000000002, 8.999864800000001, 8.999864800000001, 8.448136000000002, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5605079999999987, 0.0, 13.609310399999998]}, "supplemental_supplied": {"data_type": "time_series", "values": [25.0, 25.0, 25.0, 16.551864, 16.0001352, 16.0001352, 16.551864, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 24.439492, 25.0, 11.390689600000002]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 22.26, "2": 0.00712}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 60.0, 60.0, 60.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 60.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, "commitment_cost": {"data_type": "time_series", "values": [502.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 0.0, 0.0, 10.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.000000000000007]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4222988666666847, 0.0, 3.333333333333331]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 33.103221000000005, 30.0, 30.0, 30.0, 0.0, 0.0, 30.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.733103399999948, 0.0, 0.0]}}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 23.26, "2": 0.00712}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 2.5864399999999996, 1.6668920000000007, 1.6668920000000007, 2.5864399999999996, 20.0, 20.0, 20.0, 20.0, 20.0, 0.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 0.0, 20.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 17.41356, 18.333108, 18.333108, 17.41356, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0, 0.0, 20.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322145999999997, 3.6322145999999997, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322145999999997, 3.4023275999999996]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000001, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "dc_branch": {}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 1.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.528858399999999, 14.528858399999999, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.528858399999999, 13.609310399999998]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644291999999995, 7.2644291999999995, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644291999999995, 6.804655199999999]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000002, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "total_cost": 481071.67308988917}} \ No newline at end of file +{"elements": {"bus": {"Bus1": {"p_balance_violation": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pl": {"data_type": "time_series", "values": [1088.1318, 996.1769999999999, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}, "va": {"data_type": "time_series", "values": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]}}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.1769999999999, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008]}, "production_cost": {"data_type": "time_series", "values": [50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [10.081191052738221, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [275.0742184, 264.222876, 293.79720480000003, 268.513424, 238.22964319999994, 238.22964319999994, 243.513424, 279.08098560000013, 365.3579992000001, 417.67304, 299.13501280000014, 302.5, 299.1350128, 268.85123200000004, 253.7093416, 253.7093416, 302.5, 302.5, 302.5, 302.5, 302.5, 302.5, 401.2093415999999, 392.0975619999997]}, "rg": {"data_type": "time_series", "values": [78.45543918240114, 109.88531000000015, 0.0, 0.0, 26.666892000000075, 0.0, 0.0, 131.6128244363635, 34.85296363636352, 37.32695999999996, 114.5013508363635, 0.0, 37.70146800000012, 36.78192000000004, 0.0, 0.0, 0.0, 41.83943400000017, 0.0, 16.874212800000166, 0.0, 38.6210160000001, 8.794807436363783, 49.29312760000029]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008]}, "production_cost": {"data_type": "time_series", "values": [21.771919345324797, 19.883004471071995, 25.0310670339456, 20.629868742527997, 15.358310451110395, 15.358310451110395, 16.278068742528, 22.469385325363223, 37.57982174757122, 46.76299474944001, 25.96022994812163, 26.545979999999997, 25.9602299481216, 20.688671656704006, 18.052892510995196, 18.052892510995196, 26.545979999999997, 26.545979999999997, 26.545979999999997, 26.545979999999997, 26.545979999999997, 26.545979999999997, 43.87302298709759, 42.27357764323196]}, "reg_provider": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 0.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 0.0, 0.0, 0.0, 0.0, 2.6666892, 0.0, 2.9425536, 3.3563502000000036, 0.0, 0.0, 3.363219999999978, 0.0, 18.75, 18.75, 18.75, 0.0, 0.0, 18.75, 4.046011200000001, 18.75, 12.313163999999988, 3.6322146, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.4023190100186507, 2.988531, 2.8505988, 2.758644, 2.6666892, 5.333378400000001, 2.758644, 2.9425536, 3.3563502000000036, 0.0, 0.0, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 3.8621016, 3.6322146, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 1.0345759999999988, 0.0, 0.0, 2.758643999999999, 0.0, 0.0, 0.0, 0.0, 22.8967452, 22.620880800000002, 0.0, 0.0, 0.0, 0.0, 37.5, 0.0, 0.0, 0.0, 0.0, 0.0, 3.4023276000000116]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 0.0, 10.069050599999999, 0.0, 0.0, 0.0, 11.3104404, 0.0, 0.0, 0.0, 0.0, 12.5518302, 0.0, 0.0, 11.724237, 0.0, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [101.47034241759884, 79.48288099999985, 161.20279519999997, 186.48657599999999, 190.10346479999995, 184.999662, 170.61235599999998, 31.88836036363636, 35.869448163636505, 0.0, 41.36363636363632, 132.7654572000003, 0.0, 38.13921839999992, 15.141890400000069, 0.0, 63.70934159999999, 33.00507539999984, 0.0, 71.34971999999983, 53.051221800000015, 0.0, 21.82357936363637, 13.609310399999952]}}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.00000000000003, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "startup_curve": [100.0, 50.0, 25.0], "shutdown_curve": [75.0, 5.0], "pg": {"data_type": "time_series", "values": [150.0, 75.0, 5.0, 0.0, 0.0, 0.0, 25.0, 50.0, 100.0, 150.0, 302.5, 314.27690319999994, 302.5, 302.5, 302.5, 302.5, 314.27690319999994, 435.41202640000023, 420.2701359999998, 389.98635520000016, 344.5606840000001, 329.4187935999999, 150.0, 75.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.465178400000116, 0.0, 0.0, 36.3221460000001, 36.3221460000001, 38.16124200000011, 0.0, 11.784455000000005, 0.0, 110.4393159999999, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [26.859750000000005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.535419375, 28.595767980259396, 26.535419375, 26.535419375, 26.535419375, 26.535419375, 28.595767980259392, 49.78814579763386, 47.139098570461975, 41.84100411611844, 33.89386243460302, 31.244815207431184, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.5402936, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.7701467999999987, 0.0, 0.0, 0.0, 21.793287600000003, 0.0, 22.8967452, 0.0, 0.0, 24.276067200000004, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 53.793558000000004, 51.310778400000025, 49.655592000000006, 48.000405599999986, 48.000405599999986, 49.655592000000006, 52.965964799999995, 60.4143036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.241896800000006]}, "flex_up_supplied": {"data_type": "time_series", "values": [10.072391795326292, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.3104404, 11.4483726, 0.0, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 0.0, 12.413897999999998, 12.1380336, 0.0, 23.172609599999998, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.25823840000001, 132.2579183999999, 152.5, 152.5, 90.60805979999991, 90.60805979999991, 72.02650139999993, 19.587973599999753, 22.945409000000172, 65.01364479999982, 0.0, 45.58120640000012, 0.0, 0.0]}}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.00000000000003, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [178.0575816, 176.95412399999998, 176.4023952, 176.034576, 175.6667568, 175.6667568, 176.034576, 176.7702144, 178.42540079999998, 183.39096000000004, 180.08058720000005, 180.26449680000002, 180.08058720000005, 179.712768, 179.5288584, 179.5288584, 180.26449680000002, 181.7357736, 181.551864, 181.18404479999998, 180.63231599999997, 180.44840639999998, 179.5288584, 182.011638]}, "rg": {"data_type": "time_series", "values": [112.40067140000001, 0.0, 33.50598800000012, 27.586439999999968, 0.0, 26.666892000000075, 52.58643999999997, 0.0, 85.69944116363651, 0.0, 0.0, 29.69606359999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 29.595205000000036, 0.0, 0.0, 0.0, 31.906390163636388, 69.73014839999983]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005]}, "production_cost": {"data_type": "time_series", "values": [5.1626721727493985, 4.959632939840998, 4.8581133233867995, 4.790433579083998, 4.722753834781199, 4.722753834781199, 4.790433579083998, 4.925793067689599, 5.2303519170521975, 6.144028465140007, 5.534910766414811, 5.5687506385662076, 5.534910766414811, 5.467231022111999, 5.433391149960598, 5.433391149960598, 5.5687506385662, 5.839469615777399, 5.805629743625998, 5.737949999323198, 5.6364303828689994, 5.602590510717598, 5.433391149960598, 5.890229424004498]}, "reg_provider": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 5.977062, 17.1035928, 5.517288, 16.000135200000003, 2.6666892, 10.176049533333334, 2.9425536, 3.356350199999997, 7.356384, 8.850734000000001, 4.269028400000023, 8.756893500000015, 18.75, 8.161073, 3.6322146, 9.725720366666668, 10.919716999999999, 4.137966, 4.046011200000001, 17.59942053333333, 4.931076150000008, 5.322800250000028, 6.804655200000019]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.356350199999997, 7.356384, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 6.8046552]}, "spinning_supplied": {"data_type": "time_series", "values": [13.0575816, 1.9541240000000009, 0.0, 0.0, 0.0, 10.666756800000002, 0.0, 11.7702144, 13.425400800000004, 19.694449100000007, 0.0, 4.81159259999998, 0.09384049999998784, 0.0, 0.0, 4.528858399999999, 0.0, 0.0, 16.551864, 16.184044800000002, 0.0, 4.3794318499999925, 3.0452555499999687, 10.20698279999998]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [16.321976999999997, 14.942654999999997, 25.655389200000005, 14.827796000000001, 24.000202799999997, 13.333445999999997, 24.827796000000003, 24.26510403636357, 0.0, 3.409278899999993, 23.931321199999996, 43.6902356, 23.837480700000008, 33.103728, 22.689931399999992, 18.161072999999995, 34.345117800000004, 27.6554906, 20.689829999999994, 20.230056, 26.896948, 20.37948255000001, 19.85165865000002, 20.41396560000002]}, "flex_up_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 0.0, 0.0, 8.0000676, 0.0, 8.275932, 17.6553216, 0.0, 17.663068999999997, 11.3104404, 11.4483726, 11.3104404, 1.0345759999999995, 2.641270733333348, 10.896643799999998, 11.4483726, 12.5518302, 2.413897999999998, 0.0, 0.0, 9.8620678, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [2.220446049250313e-14, 67.45818539999999, 7.101395799999866, 21.572909200000012, 33.435078400000016, 16.998242399999917, 4.440892098500626e-14, 8.183234763636404, -8.881784197001252e-14, -4.440892098500626e-14, 10.71239619999993, 0.0, 30.853041399999846, 0.0, 0.0, 67.11276340000003, 43.67886799999998, 0.0, 0.0, 37.136343599999975, 0.0, 0.0, 37.294764636363496, 0.0]}}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25.0, "p_max": 162.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 25.0, "shutdown_capacity": 25.0, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0.0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45.0, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25.0, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20.0, 15.0, 10.0, 5.0], "startup_curve": [20.0, 15.0, 10.0, 5.0], "fixed_commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pg": {"data_type": "time_series", "values": [10.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 8.448135999999995, 8.999864799999994, 8.999864799999994, 8.448135999999995, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [25.0, 25.0, 25.0, 16.551864000000005, 16.000135200000006, 16.000135200000006, 16.551864000000005, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 22.26, "2": 0.0071200000000000005}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.14848860000001, 13.011097200000016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.585899200000004, 0.0, 0.0, 0.6209483999999932, 0.0]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [5.020480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 10.0, 0.0, 10.0, 0.0, 0.0, 3.6171704666666664, 0.0, 0.0, 10.0, 10.0, 10.0, 10.0, 0.0, 10.0, 10.0, 10.0, 10.0, 0.0, 0.0, 8.275763000000003, 10.0, 9.793017200000003, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.781750999999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 8.5517964, 8.275932, 0.0, 8.0000676, 0.0, 0.0, 10.069050599999999, 4.406083000000003, 0.0, 0.0, 0.0, 10.0, 8.255373066666651, 0.0, 0.0, 0.0, 10.0, 12.1380336, 11.724237, 1.7242369999999978, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 30.000000000000004, 4.344610800000003, 5.1722040000000025, 30.000000000000004, 35.99979720000001, 49.14848860000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.233880800000046, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 23.26, "2": 0.0071200000000000005}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 2.5864400000000067, 1.6668920000000087, 1.6668920000000087, 2.5864400000000067, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 17.413559999999993, 18.333107999999992, 18.333107999999992, 17.413559999999993, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 3.4023276]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 3.4023276]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000003, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "dc_branch": {}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 100.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000006, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.5288584, 14.5288584, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.5288584, 13.6093104]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.5288584, 14.5288584, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.5288584, 13.6093104]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000006, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "total_cost": 481071.6730898891}} \ No newline at end of file From b80f7bb7b3c8bb02851f8fdb3896a3c38983b581 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Wed, 7 Apr 2021 10:41:20 -0600 Subject: [PATCH 12/19] better pattern in _add_power_generated_startup_shutdown --- .../unit_commitment/power_vars.py | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/egret/model_library/unit_commitment/power_vars.py b/egret/model_library/unit_commitment/power_vars.py index b222e06a..ac2aaa66 100644 --- a/egret/model_library/unit_commitment/power_vars.py +++ b/egret/model_library/unit_commitment/power_vars.py @@ -23,22 +23,24 @@ def reactive_power_bounds_rule(m,g,t): def _add_power_generated_startup_shutdown(model): assert model.InitialTime == 1 - # check the status vars first to print a helpful message - if model.status_vars not in ['garver_2bin_vars', 'garver_3bin_vars', 'garver_3bin_relaxed_stop_vars', 'ALS_state_transition_vars']: - for s in model.StartupCurve.values(): - if len(s) > 0: - raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with startup curves") + # first, discover if we have startup/shutdown + # curves in the model + model_has_startup_shutdown_curves = False + for s in model.StartupCurve.values(): + if len(s) > 0: + model_has_startup_shutdown_curves = True + break + if not model_has_startup_shutdown_curves: for s in model.ShutdownCurve.values(): if len(s) > 0: - raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with shutdown curves") - - ## if we're here, then we can use these 1-bin models - def power_generated_startup_shutdown_expr_rule(m, g, t): - linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) - linear_expr = get_linear_expr(m.UnitOn) - return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs) + model_has_startup_shutdown_curves = True + break - else: + if model_has_startup_shutdown_curves: + # check the status vars to see if we're compatible + # with startup/shutdown curves + if model.status_vars not in ['garver_2bin_vars', 'garver_3bin_vars', 'garver_3bin_relaxed_stop_vars', 'ALS_state_transition_vars']: + raise RuntimeError(f"Status variable formulation {model.status_vars} is not compatible with startup or shutdown curves") def power_generated_startup_shutdown_expr_rule(m, g, t): startup_curve = m.StartupCurve[g] @@ -65,8 +67,18 @@ def power_generated_startup_shutdown_expr_rule(m, g, t): linear_expr = get_linear_expr(m.UnitOn, m.UnitStart, m.UnitStop) return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs, constant=future_startup_past_shutdown_production) - model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, - rule=power_generated_startup_shutdown_expr_rule) + model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, + rule=power_generated_startup_shutdown_expr_rule) + + else: + ## if we're here, then we can use 1-bin models + ## and no need to do the additional work + def power_generated_expr_rule(m, g, t): + linear_vars, linear_coefs = m._get_power_generated_lists(m,g,t) + linear_expr = get_linear_expr(m.UnitOn) + return linear_expr(linear_vars=linear_vars, linear_coefs=linear_coefs) + model.PowerGeneratedStartupShutdown = Expression(model.ThermalGenerators, model.TimePeriods, + rule=power_generated_expr_rule) ## garver/ME power variables (above minimum) @add_model_attr(component_name, requires = {'data_loader': None, 'status_vars': None}) From d2b4cd90a02403d01aedacd70e5d12790edd37f7 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Wed, 7 Apr 2021 11:45:46 -0600 Subject: [PATCH 13/19] attempting to resolve scaling issues --- egret/model_library/transmission/tx_utils.py | 4 ++-- egret/models/tests/uc_test_instances/tiny_uc_11_results.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index 4be846cd..f1b70ef9 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -269,9 +269,9 @@ def load_shed_limit(load, gens, gen_mins): 'headroom', 'reg_up_supplied', 'reg_down_supplied', - 'spin_supplied', 'flex_up_supplied', 'flex_down_supplied', + 'spinning_supplied', 'non_spinning_supplied', 'supplemental_supplied', 'p_cost', @@ -409,7 +409,7 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, if attr is None: return if isinstance(attr, dict): - if 'data_type' in attr and attr['data_type'] == 'time_series': + if 'data_type' in attr and attr['data_type'] == 'time_series' and attr_name in attributes: op = _get_op(normal_op, inverse_op, attr_name) values_list = attr['values'] for time, value in enumerate(values_list): diff --git a/egret/models/tests/uc_test_instances/tiny_uc_11_results.json b/egret/models/tests/uc_test_instances/tiny_uc_11_results.json index 0c098f7f..3fbec48e 100644 --- a/egret/models/tests/uc_test_instances/tiny_uc_11_results.json +++ b/egret/models/tests/uc_test_instances/tiny_uc_11_results.json @@ -1 +1 @@ -{"elements": {"bus": {"Bus1": {"p_balance_violation": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pl": {"data_type": "time_series", "values": [1088.1318, 996.1769999999999, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}, "va": {"data_type": "time_series", "values": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]}}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.1769999999999, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008, 25.393000000000008]}, "production_cost": {"data_type": "time_series", "values": [50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001, 50.26522000000001]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [10.081191052738221, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [275.0742184, 264.222876, 293.79720480000003, 268.513424, 238.22964319999994, 238.22964319999994, 243.513424, 279.08098560000013, 365.3579992000001, 417.67304, 299.13501280000014, 302.5, 299.1350128, 268.85123200000004, 253.7093416, 253.7093416, 302.5, 302.5, 302.5, 302.5, 302.5, 302.5, 401.2093415999999, 392.0975619999997]}, "rg": {"data_type": "time_series", "values": [78.45543918240114, 109.88531000000015, 0.0, 0.0, 26.666892000000075, 0.0, 0.0, 131.6128244363635, 34.85296363636352, 37.32695999999996, 114.5013508363635, 0.0, 37.70146800000012, 36.78192000000004, 0.0, 0.0, 0.0, 41.83943400000017, 0.0, 16.874212800000166, 0.0, 38.6210160000001, 8.794807436363783, 49.29312760000029]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008, 26.893000000000008]}, "production_cost": {"data_type": "time_series", "values": [21.771919345324797, 19.883004471071995, 25.0310670339456, 20.629868742527997, 15.358310451110395, 15.358310451110395, 16.278068742528, 22.469385325363223, 37.57982174757122, 46.76299474944001, 25.96022994812163, 26.545979999999997, 25.9602299481216, 20.688671656704006, 18.052892510995196, 18.052892510995196, 26.545979999999997, 26.545979999999997, 26.545979999999997, 26.545979999999997, 26.545979999999997, 26.545979999999997, 43.87302298709759, 42.27357764323196]}, "reg_provider": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 0.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 0.0, 0.0, 0.0, 0.0, 2.6666892, 0.0, 2.9425536, 3.3563502000000036, 0.0, 0.0, 3.363219999999978, 0.0, 18.75, 18.75, 18.75, 0.0, 0.0, 18.75, 4.046011200000001, 18.75, 12.313163999999988, 3.6322146, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.4023190100186507, 2.988531, 2.8505988, 2.758644, 2.6666892, 5.333378400000001, 2.758644, 2.9425536, 3.3563502000000036, 0.0, 0.0, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 3.8621016, 3.6322146, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 1.0345759999999988, 0.0, 0.0, 2.758643999999999, 0.0, 0.0, 0.0, 0.0, 22.8967452, 22.620880800000002, 0.0, 0.0, 0.0, 0.0, 37.5, 0.0, 0.0, 0.0, 0.0, 0.0, 3.4023276000000116]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 0.0, 10.069050599999999, 0.0, 0.0, 0.0, 11.3104404, 0.0, 0.0, 0.0, 0.0, 12.5518302, 0.0, 0.0, 11.724237, 0.0, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [101.47034241759884, 79.48288099999985, 161.20279519999997, 186.48657599999999, 190.10346479999995, 184.999662, 170.61235599999998, 31.88836036363636, 35.869448163636505, 0.0, 41.36363636363632, 132.7654572000003, 0.0, 38.13921839999992, 15.141890400000069, 0.0, 63.70934159999999, 33.00507539999984, 0.0, 71.34971999999983, 53.051221800000015, 0.0, 21.82357936363637, 13.609310399999952]}}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.00000000000003, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "startup_curve": [100.0, 50.0, 25.0], "shutdown_curve": [75.0, 5.0], "pg": {"data_type": "time_series", "values": [150.0, 75.0, 5.0, 0.0, 0.0, 0.0, 25.0, 50.0, 100.0, 150.0, 302.5, 314.27690319999994, 302.5, 302.5, 302.5, 302.5, 314.27690319999994, 435.41202640000023, 420.2701359999998, 389.98635520000016, 344.5606840000001, 329.4187935999999, 150.0, 75.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.465178400000116, 0.0, 0.0, 36.3221460000001, 36.3221460000001, 38.16124200000011, 0.0, 11.784455000000005, 0.0, 110.4393159999999, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [26.859750000000005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 26.859750000000005, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.535419375, 28.595767980259396, 26.535419375, 26.535419375, 26.535419375, 26.535419375, 28.595767980259392, 49.78814579763386, 47.139098570461975, 41.84100411611844, 33.89386243460302, 31.244815207431184, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.5402936, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.7701467999999987, 0.0, 0.0, 0.0, 21.793287600000003, 0.0, 22.8967452, 0.0, 0.0, 24.276067200000004, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 53.793558000000004, 51.310778400000025, 49.655592000000006, 48.000405599999986, 48.000405599999986, 49.655592000000006, 52.965964799999995, 60.4143036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.241896800000006]}, "flex_up_supplied": {"data_type": "time_series", "values": [10.072391795326292, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.3104404, 11.4483726, 0.0, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 0.0, 12.413897999999998, 12.1380336, 0.0, 23.172609599999998, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.25823840000001, 132.2579183999999, 152.5, 152.5, 90.60805979999991, 90.60805979999991, 72.02650139999993, 19.587973599999753, 22.945409000000172, 65.01364479999982, 0.0, 45.58120640000012, 0.0, 0.0]}}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.00000000000003, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [178.0575816, 176.95412399999998, 176.4023952, 176.034576, 175.6667568, 175.6667568, 176.034576, 176.7702144, 178.42540079999998, 183.39096000000004, 180.08058720000005, 180.26449680000002, 180.08058720000005, 179.712768, 179.5288584, 179.5288584, 180.26449680000002, 181.7357736, 181.551864, 181.18404479999998, 180.63231599999997, 180.44840639999998, 179.5288584, 182.011638]}, "rg": {"data_type": "time_series", "values": [112.40067140000001, 0.0, 33.50598800000012, 27.586439999999968, 0.0, 26.666892000000075, 52.58643999999997, 0.0, 85.69944116363651, 0.0, 0.0, 29.69606359999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 29.595205000000036, 0.0, 0.0, 0.0, 31.906390163636388, 69.73014839999983]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005, 28.359750000000005]}, "production_cost": {"data_type": "time_series", "values": [5.1626721727493985, 4.959632939840998, 4.8581133233867995, 4.790433579083998, 4.722753834781199, 4.722753834781199, 4.790433579083998, 4.925793067689599, 5.2303519170521975, 6.144028465140007, 5.534910766414811, 5.5687506385662076, 5.534910766414811, 5.467231022111999, 5.433391149960598, 5.433391149960598, 5.5687506385662, 5.839469615777399, 5.805629743625998, 5.737949999323198, 5.6364303828689994, 5.602590510717598, 5.433391149960598, 5.890229424004498]}, "reg_provider": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 5.977062, 17.1035928, 5.517288, 16.000135200000003, 2.6666892, 10.176049533333334, 2.9425536, 3.356350199999997, 7.356384, 8.850734000000001, 4.269028400000023, 8.756893500000015, 18.75, 8.161073, 3.6322146, 9.725720366666668, 10.919716999999999, 4.137966, 4.046011200000001, 17.59942053333333, 4.931076150000008, 5.322800250000028, 6.804655200000019]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.356350199999997, 7.356384, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 6.8046552]}, "spinning_supplied": {"data_type": "time_series", "values": [13.0575816, 1.9541240000000009, 0.0, 0.0, 0.0, 10.666756800000002, 0.0, 11.7702144, 13.425400800000004, 19.694449100000007, 0.0, 4.81159259999998, 0.09384049999998784, 0.0, 0.0, 4.528858399999999, 0.0, 0.0, 16.551864, 16.184044800000002, 0.0, 4.3794318499999925, 3.0452555499999687, 10.20698279999998]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [16.321976999999997, 14.942654999999997, 25.655389200000005, 14.827796000000001, 24.000202799999997, 13.333445999999997, 24.827796000000003, 24.26510403636357, 0.0, 3.409278899999993, 23.931321199999996, 43.6902356, 23.837480700000008, 33.103728, 22.689931399999992, 18.161072999999995, 34.345117800000004, 27.6554906, 20.689829999999994, 20.230056, 26.896948, 20.37948255000001, 19.85165865000002, 20.41396560000002]}, "flex_up_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 0.0, 0.0, 8.0000676, 0.0, 8.275932, 17.6553216, 0.0, 17.663068999999997, 11.3104404, 11.4483726, 11.3104404, 1.0345759999999995, 2.641270733333348, 10.896643799999998, 11.4483726, 12.5518302, 2.413897999999998, 0.0, 0.0, 9.8620678, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [2.220446049250313e-14, 67.45818539999999, 7.101395799999866, 21.572909200000012, 33.435078400000016, 16.998242399999917, 4.440892098500626e-14, 8.183234763636404, -8.881784197001252e-14, -4.440892098500626e-14, 10.71239619999993, 0.0, 30.853041399999846, 0.0, 0.0, 67.11276340000003, 43.67886799999998, 0.0, 0.0, 37.136343599999975, 0.0, 0.0, 37.294764636363496, 0.0]}}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25.0, "p_max": 162.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 25.0, "shutdown_capacity": 25.0, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0.0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45.0, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25.0, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20.0, 15.0, 10.0, 5.0], "startup_curve": [20.0, 15.0, 10.0, 5.0], "fixed_commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pg": {"data_type": "time_series", "values": [10.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 8.448135999999995, 8.999864799999994, 8.999864799999994, 8.448135999999995, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [25.0, 25.0, 25.0, 16.551864000000005, 16.000135200000006, 16.000135200000006, 16.551864000000005, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 22.26, "2": 0.0071200000000000005}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.14848860000001, 13.011097200000016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.585899200000004, 0.0, 0.0, 0.6209483999999932, 0.0]}, "commitment": {"data_type": "time_series", "values": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]}, "commitment_cost": {"data_type": "time_series", "values": [5.020480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001, 4.850480000000001]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 10.0, 0.0, 10.0, 0.0, 0.0, 3.6171704666666664, 0.0, 0.0, 10.0, 10.0, 10.0, 10.0, 0.0, 10.0, 10.0, 10.0, 10.0, 0.0, 0.0, 8.275763000000003, 10.0, 9.793017200000003, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.781750999999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 8.5517964, 8.275932, 0.0, 8.0000676, 0.0, 0.0, 10.069050599999999, 4.406083000000003, 0.0, 0.0, 0.0, 10.0, 8.255373066666651, 0.0, 0.0, 0.0, 10.0, 12.1380336, 11.724237, 1.7242369999999978, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 30.000000000000004, 4.344610800000003, 5.1722040000000025, 30.000000000000004, 35.99979720000001, 49.14848860000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.233880800000046, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 23.26, "2": 0.0071200000000000005}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 2.5864400000000067, 1.6668920000000087, 1.6668920000000087, 2.5864400000000067, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 17.413559999999993, 18.333107999999992, 18.333107999999992, 17.413559999999993, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 3.4023276]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 3.4023276]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000003, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "dc_branch": {}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 100.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000006, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.5288584, 14.5288584, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.5288584, 13.6093104]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.5288584, 14.5288584, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.5288584, 13.6093104]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000006, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "total_cost": 481071.6730898891}} \ No newline at end of file +{"elements": {"bus": {"Bus1": {"p_balance_violation": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "pl": {"data_type": "time_series", "values": [1088.1318, 996.1769999999999, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}, "va": {"data_type": "time_series", "values": [-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]}}}, "load": {"Bus1": {"bus": "Bus1", "in_service": true, "p_load": {"data_type": "time_series", "values": [1088.1318, 996.1769999999999, 950.1996, 919.548, 888.8964, 888.8964, 919.548, 980.8512000000001, 1118.7834, 1226.064, 1256.7156, 1272.0414, 1256.7156, 1226.064, 1210.7382, 1210.7382, 1272.0414, 1394.6478000000002, 1379.322, 1348.6704000000002, 1302.693, 1287.3672, 1210.7382, 1134.1091999999999]}}}, "branch": {}, "interface": {}, "zone": {}, "generator": {"GEN1_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 16.19, "2": 0.00048}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0, 455.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, "commitment_cost": {"data_type": "time_series", "values": [2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006, 2539.3000000000006]}, "production_cost": {"data_type": "time_series", "values": [5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001, 5026.522000000001]}, "reg_provider": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [10.081191052738221, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN1_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 455.0, "startup_cost": [[8, 450], [14, 900]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 100.0, "1": 17.19, "2": 0.00048}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [275.0742184, 264.222876, 293.79720480000003, 268.513424, 238.22964319999994, 238.22964319999994, 243.513424, 279.08098560000013, 365.3579992000001, 417.67304, 299.13501280000014, 302.5, 299.1350128, 268.85123200000004, 253.7093416, 253.7093416, 302.5, 302.5, 302.5, 302.5, 302.5, 302.5, 401.2093415999999, 392.0975619999997]}, "rg": {"data_type": "time_series", "values": [78.45543918240114, 109.88531000000015, 0.0, 0.0, 26.666892000000075, 0.0, 0.0, 131.6128244363635, 34.85296363636352, 37.32695999999996, 114.5013508363635, 0.0, 37.70146800000012, 36.78192000000004, 0.0, 0.0, 0.0, 41.83943400000017, 0.0, 16.874212800000166, 0.0, 38.6210160000001, 8.794807436363783, 49.29312760000029]}, "commitment": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, "commitment_cost": {"data_type": "time_series", "values": [2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006, 2689.3000000000006]}, "production_cost": {"data_type": "time_series", "values": [2177.1919345324795, 1988.3004471071995, 2503.10670339456, 2062.9868742527997, 1535.8310451110394, 1535.8310451110394, 1627.8068742527998, 2246.9385325363223, 3757.9821747571223, 4676.299474944001, 2596.022994812163, 2654.5979999999995, 2596.02299481216, 2068.8671656704005, 1805.2892510995196, 1805.2892510995196, 2654.5979999999995, 2654.5979999999995, 2654.5979999999995, 2654.5979999999995, 2654.5979999999995, 2654.5979999999995, 4387.302298709759, 4227.357764323196]}, "reg_provider": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 0.0, 0.0, 0.0, 0.0, 2.6666892, 0.0, 2.9425536, 3.3563502000000036, 0.0, 0.0, 3.363219999999978, 0.0, 18.75, 18.75, 18.75, 0.0, 0.0, 18.75, 4.046011200000001, 18.75, 12.313163999999988, 3.6322146, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.4023190100186507, 2.988531, 2.8505988, 2.758644, 2.6666892, 5.333378400000001, 2.758644, 2.9425536, 3.3563502000000036, 0.0, 0.0, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 3.8621016, 3.6322146, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 1.0345759999999988, 0.0, 0.0, 2.758643999999999, 0.0, 0.0, 0.0, 0.0, 22.8967452, 22.620880800000002, 0.0, 0.0, 0.0, 0.0, 37.5, 0.0, 0.0, 0.0, 0.0, 0.0, 3.4023276000000116]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 0.0, 10.069050599999999, 0.0, 0.0, 0.0, 11.3104404, 0.0, 0.0, 0.0, 0.0, 12.5518302, 0.0, 0.0, 11.724237, 0.0, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [101.47034241759884, 79.48288099999985, 161.20279519999997, 186.48657599999999, 190.10346479999995, 184.999662, 170.61235599999998, 31.88836036363636, 35.869448163636505, 0.0, 41.36363636363632, 132.7654572000003, 0.0, 38.13921839999992, 15.141890400000069, 0.0, 63.70934159999999, 33.00507539999984, 0.0, 71.34971999999983, 53.051221800000015, 0.0, 21.82357936363637, 13.609310399999952]}}, "GEN2_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.00000000000003, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 17.26, "2": 0.00031}}, "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "startup_curve": [100.0, 50.0, 25.0], "shutdown_curve": [75.0, 5.0], "pg": {"data_type": "time_series", "values": [150.0, 75.0, 5.0, 0.0, 0.0, 0.0, 25.0, 50.0, 100.0, 150.0, 302.5, 314.27690319999994, 302.5, 302.5, 302.5, 302.5, 314.27690319999994, 435.41202640000023, 420.2701359999998, 389.98635520000016, 344.5606840000001, 329.4187935999999, 150.0, 75.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.465178400000116, 0.0, 0.0, 36.3221460000001, 36.3221460000001, 38.16124200000011, 0.0, 11.784455000000005, 0.0, 110.4393159999999, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]}, "commitment_cost": {"data_type": "time_series", "values": [2685.9750000000004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3185.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 2685.9750000000004, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2653.5419375, 2859.5767980259398, 2653.5419375, 2653.5419375, 2653.5419375, 2653.5419375, 2859.5767980259393, 4978.814579763386, 4713.909857046197, 4184.100411611844, 3389.386243460302, 3124.4815207431184, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.5402936, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.7701467999999987, 0.0, 0.0, 0.0, 21.793287600000003, 0.0, 22.8967452, 0.0, 0.0, 24.276067200000004, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 53.793558000000004, 51.310778400000025, 49.655592000000006, 48.000405599999986, 48.000405599999986, 49.655592000000006, 52.965964799999995, 60.4143036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 61.241896800000006]}, "flex_up_supplied": {"data_type": "time_series", "values": [10.072391795326292, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.3104404, 11.4483726, 0.0, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 0.0, 12.413897999999998, 12.1380336, 0.0, 23.172609599999998, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.25823840000001, 132.2579183999999, 152.5, 152.5, 90.60805979999991, 90.60805979999991, 72.02650139999993, 19.587973599999753, 22.945409000000172, 65.01364479999982, 0.0, 45.58120640000012, 0.0, 0.0]}}, "GEN2_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 150.0, "p_max": 455.0, "ramp_up_60min": 225.0, "ramp_down_60min": 225.0, "startup_capacity": 150.0, "shutdown_capacity": 150.0, "min_up_time": 8, "min_down_time": 8, "initial_status": 8, "initial_p_output": 245.00000000000003, "startup_cost": [[8, 500], [14, 1000]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 90.0, "1": 18.26, "2": 0.00031}}, "area": "Area1", "agc_capable": true, "ramp_agc": 3.75, "fast_start": false, "supplemental_start": true, "supplemental_non_spinning_capacity": 150.0, "p_min_agc": 165.0, "p_max_agc": 413.6363636363637, "pg": {"data_type": "time_series", "values": [178.0575816, 176.95412399999998, 176.4023952, 176.034576, 175.6667568, 175.6667568, 176.034576, 176.7702144, 178.42540079999998, 183.39096000000004, 180.08058720000005, 180.26449680000002, 180.08058720000005, 179.712768, 179.5288584, 179.5288584, 180.26449680000002, 181.7357736, 181.551864, 181.18404479999998, 180.63231599999997, 180.44840639999998, 179.5288584, 182.011638]}, "rg": {"data_type": "time_series", "values": [112.40067140000001, 0.0, 33.50598800000012, 27.586439999999968, 0.0, 26.666892000000075, 52.58643999999997, 0.0, 85.69944116363651, 0.0, 0.0, 29.69606359999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 29.595205000000036, 0.0, 0.0, 0.0, 31.906390163636388, 69.73014839999983]}, "commitment": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, "commitment_cost": {"data_type": "time_series", "values": [2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004, 2835.9750000000004]}, "production_cost": {"data_type": "time_series", "values": [516.2672172749399, 495.96329398409983, 485.81133233867996, 479.0433579083998, 472.27538347811986, 472.27538347811986, 479.0433579083998, 492.5793067689599, 523.0351917052197, 614.4028465140007, 553.4910766414811, 556.8750638566207, 553.4910766414811, 546.7231022112, 543.3391149960598, 543.3391149960598, 556.8750638566199, 583.9469615777399, 580.5629743625998, 573.7949999323198, 563.6430382868999, 560.2590510717598, 543.3391149960598, 589.0229424004498]}, "reg_provider": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, "reg_up_supplied": {"data_type": "time_series", "values": [3.2643954, 5.977062, 17.1035928, 5.517288, 16.000135200000003, 2.6666892, 10.176049533333334, 2.9425536, 3.356350199999997, 7.356384, 8.850734000000001, 4.269028400000023, 8.756893500000015, 18.75, 8.161073, 3.6322146, 9.725720366666668, 10.919716999999999, 4.137966, 4.046011200000001, 17.59942053333333, 4.931076150000008, 5.322800250000028, 6.804655200000019]}, "reg_down_supplied": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.356350199999997, 7.356384, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 6.8046552]}, "spinning_supplied": {"data_type": "time_series", "values": [13.0575816, 1.9541240000000009, 0.0, 0.0, 0.0, 10.666756800000002, 0.0, 11.7702144, 13.425400800000004, 19.694449100000007, 0.0, 4.81159259999998, 0.09384049999998784, 0.0, 0.0, 4.528858399999999, 0.0, 0.0, 16.551864, 16.184044800000002, 0.0, 4.3794318499999925, 3.0452555499999687, 10.20698279999998]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [16.321976999999997, 14.942654999999997, 25.655389200000005, 14.827796000000001, 24.000202799999997, 13.333445999999997, 24.827796000000003, 24.26510403636357, 0.0, 3.409278899999993, 23.931321199999996, 43.6902356, 23.837480700000008, 33.103728, 22.689931399999992, 18.161072999999995, 34.345117800000004, 27.6554906, 20.689829999999994, 20.230056, 26.896948, 20.37948255000001, 19.85165865000002, 20.41396560000002]}, "flex_up_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 0.0, 0.0, 8.0000676, 0.0, 8.275932, 17.6553216, 0.0, 17.663068999999997, 11.3104404, 11.4483726, 11.3104404, 1.0345759999999995, 2.641270733333348, 10.896643799999998, 11.4483726, 12.5518302, 2.413897999999998, 0.0, 0.0, 9.8620678, 10.896643799999998, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "headroom": {"data_type": "time_series", "values": [2.220446049250313e-14, 67.45818539999999, 7.101395799999866, 21.572909200000012, 33.435078400000016, 16.998242399999917, 4.440892098500626e-14, 8.183234763636404, -8.881784197001252e-14, -4.440892098500626e-14, 10.71239619999993, 0.0, 30.853041399999846, 0.0, 0.0, 67.11276340000003, 43.67886799999998, 0.0, 0.0, 37.136343599999975, 0.0, 0.0, 37.294764636363496, 0.0]}}, "GEN5_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 25.0, "p_max": 162.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 25.0, "shutdown_capacity": 25.0, "min_up_time": 6, "min_down_time": 6, "initial_status": -2, "initial_p_output": 0.0, "startup_cost": [[6, 90], [11, 180]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 45.0, "1": 19.7, "2": 0.00398}}, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 25.0, "non_spinning_capacity": 35.0, "p_min_agc": 27.500000000000004, "p_max_agc": 147.27272727272725, "future_status": 3, "shutdown_curve": [20.0, 15.0, 10.0, 5.0], "startup_curve": [20.0, 15.0, 10.0, 5.0], "fixed_commitment": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "pg": {"data_type": "time_series", "values": [10.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 8.448135999999995, 8.999864799999994, 8.999864799999994, 8.448135999999995, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [25.0, 25.0, 25.0, 16.551864000000005, 16.000135200000006, 16.000135200000006, 16.551864000000005, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_0_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 22.26, "2": 0.0071200000000000005}}, "fixed_commitment": 1, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "area": "Area1", "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 49.14848860000001, 13.011097200000016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.585899200000004, 0.0, 0.0, 0.6209483999999932, 0.0]}, "commitment": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, "commitment_cost": {"data_type": "time_series", "values": [502.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006, 485.04800000000006]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 10.0, 0.0, 10.0, 0.0, 0.0, 3.6171704666666664, 0.0, 0.0, 10.0, 10.0, 10.0, 10.0, 0.0, 10.0, 10.0, 10.0, 10.0, 0.0, 0.0, 8.275763000000003, 10.0, 9.793017200000003, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.781750999999996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 8.5517964, 8.275932, 0.0, 8.0000676, 0.0, 0.0, 10.069050599999999, 4.406083000000003, 0.0, 0.0, 0.0, 10.0, 8.255373066666651, 0.0, 0.0, 0.0, 10.0, 12.1380336, 11.724237, 1.7242369999999978, 0.0, 10.206982799999999]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 30.000000000000004, 4.344610800000003, 5.1722040000000025, 30.000000000000004, 35.99979720000001, 49.14848860000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.233880800000046, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "GEN6_1_t": {"generator_type": "thermal", "bus": "Bus1", "fuel": "G", "in_service": true, "zone": "None", "failure_rate": 0.0, "p_min": 20.0, "p_max": 80.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "startup_capacity": 20.0, "shutdown_capacity": 20.0, "min_up_time": 3, "min_down_time": 3, "initial_status": -3, "initial_p_output": 0.0, "startup_cost": [[3, 17], [8, 34]], "shutdown_cost": 0.0, "p_cost": {"data_type": "cost_curve", "cost_curve_type": "polynomial", "values": {"0": 37.0, "1": 23.26, "2": 0.0071200000000000005}}, "fixed_commitment": null, "agc_capable": true, "ramp_agc": 1.0, "fast_start": true, "supplemental_start": true, "supplemental_non_spinning_capacity": 20.0, "non_spinning_capacity": 30.0, "p_min_agc": 22.0, "p_max_agc": 72.72727272727272, "pg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "rg": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "commitment": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "commitment_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "production_cost": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_provider": {"data_type": "time_series", "values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, "reg_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "reg_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_supplied": {"data_type": "time_series", "values": [20.0, 20.0, 20.0, 2.5864400000000067, 1.6668920000000087, 1.6668920000000087, 2.5864400000000067, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]}, "supplemental_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 17.413559999999993, 18.333107999999992, 18.333107999999992, 17.413559999999993, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_up_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flex_down_supplied": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "headroom": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "storage": {}, "area": {"Area1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "regulation_up_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 3.4023276]}, "regulation_down_requirement": {"data_type": "time_series", "values": [3.2643954, 2.988531, 2.8505988, 2.758644, 2.6666892, 2.6666892, 2.758644, 2.9425536, 3.3563502, 3.678192, 3.7701468, 3.8161242000000004, 3.7701468, 3.678192, 3.6322146, 3.6322146, 3.8161242000000004, 4.1839433999999995, 4.137966, 4.046011200000001, 3.9080790000000003, 3.8621016, 3.6322146, 3.4023276]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [9.7931862, 8.965592999999998, 8.5517964, 8.275932, 8.0000676, 8.0000676, 8.275932, 8.8276608, 10.069050599999999, 11.034576, 11.3104404, 11.4483726, 11.3104404, 11.034576, 10.896643799999998, 10.896643799999998, 11.4483726, 12.5518302, 12.413897999999998, 12.1380336, 11.724237, 11.586304799999999, 10.896643799999998, 10.206982799999999]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [16.321977, 14.942654999999998, 14.252994000000003, 13.793219999999998, 13.333445999999999, 13.333445999999999, 13.793219999999998, 14.712768, 16.781751, 18.39096, 18.850734, 19.080621, 18.850734, 18.39096, 18.161073, 18.161073, 19.080621, 20.919717, 20.689829999999997, 20.230056, 19.540395, 19.310508, 18.161073, 17.011637999999998]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, "dc_branch": {}}, "system": {"time_keys": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], "time_period_length_minutes": 60, "load_mismatch_cost": 1000.0, "reserve_shortfall_cost": 100.0, "baseMVA": 100.0, "reference_bus": "Bus1", "reference_bus_angle": 0.0, "reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000006, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.5288584, 14.5288584, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.5288584, 13.6093104]}, "non_spinning_reserve_requirement": {"data_type": "time_series", "values": [13.0575816, 11.954124, 11.4023952, 11.034576, 10.6667568, 10.6667568, 11.034576, 11.7702144, 13.4254008, 14.712768, 15.0805872, 15.264496800000002, 15.0805872, 14.712768, 14.5288584, 14.5288584, 15.264496800000002, 16.735773599999998, 16.551864, 16.184044800000002, 15.632316000000001, 15.4484064, 14.5288584, 13.6093104]}, "regulation_up_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "regulation_down_requirement": {"data_type": "time_series", "values": [6.5287908, 5.977062, 5.7011976, 5.517288, 5.3333784, 5.3333784, 5.517288, 5.8851072, 6.7127004, 7.356384, 7.5402936, 7.632248400000001, 7.5402936, 7.356384, 7.2644292, 7.2644292, 7.632248400000001, 8.367886799999999, 8.275932, 8.092022400000001, 7.816158000000001, 7.7242032, 7.2644292, 6.8046552]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [19.5863724, 17.931185999999997, 17.1035928, 16.551864, 16.0001352, 16.0001352, 16.551864, 17.6553216, 20.138101199999998, 22.069152, 22.6208808, 22.8967452, 22.6208808, 22.069152, 21.793287599999996, 21.793287599999996, 22.8967452, 25.1036604, 24.827795999999996, 24.2760672, 23.448474, 23.172609599999998, 21.793287599999996, 20.413965599999997]}, "supplemental_reserve_requirement": {"data_type": "time_series", "values": [32.643954, 29.885309999999997, 28.505988000000006, 27.586439999999996, 26.666891999999997, 26.666891999999997, 27.586439999999996, 29.425536, 33.563502, 36.78192, 37.701468, 38.161242, 37.701468, 36.78192, 36.322146, 36.322146, 38.161242, 41.839434, 41.379659999999994, 40.460112, 39.08079, 38.621016, 36.322146, 34.023275999999996]}, "reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "non_spinning_reserve_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "regulation_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_up_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "flexible_ramp_down_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "supplemental_shortfall": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "total_cost": 481071.6730898891}} \ No newline at end of file From 75dc2a51aab4fa572809231b098507569b794ce0 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Wed, 7 Apr 2021 13:24:12 -0600 Subject: [PATCH 14/19] a better implementation of _scale_by_baseMVA --- egret/model_library/transmission/tx_utils.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index f1b70ef9..c26cc914 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -405,16 +405,23 @@ def _get_op(normal_op, inverse_op, attr_name): return inverse_op return normal_op +def _no_op(a,b): + return a + def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, attributes): if attr is None: return if isinstance(attr, dict): - if 'data_type' in attr and attr['data_type'] == 'time_series' and attr_name in attributes: - op = _get_op(normal_op, inverse_op, attr_name) + if 'data_type' in attr and attr['data_type'] == 'time_series': + if attr_name in attributes: + op = _get_op(normal_op, inverse_op, attr_name) + else: + op = _no_op values_list = attr['values'] for time, value in enumerate(values_list): - if isinstance(value, dict): - _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) + if isinstance(value, dict): # recurse deeper + for k,v in value.items(): + _scale_by_baseMVA(normal_op, inverse_op, value, k, v, baseMVA, attributes) else: values_list[time] = op( value , baseMVA ) elif 'data_type' in attr and attr['data_type'] == 'cost_curve': From b6e77e32a3b655f8314e2bfd66ff18a3b370ea2a Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Wed, 7 Apr 2021 14:46:12 -0600 Subject: [PATCH 15/19] more robust handling of time varying elements --- egret/model_library/transmission/tx_utils.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index c26cc914..1fea31a0 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -419,9 +419,16 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, op = _no_op values_list = attr['values'] for time, value in enumerate(values_list): - if isinstance(value, dict): # recurse deeper - for k,v in value.items(): - _scale_by_baseMVA(normal_op, inverse_op, value, k, v, baseMVA, attributes) + if isinstance(value, dict): + if 'data_type' in value: + _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) + else: # recurse deeper + for k,v in value.items(): + _scale_by_baseMVA(normal_op, inverse_op, value, k, v, baseMVA, attributes) + elif isinstance(value, list): + values_list[time] = [ op(v, baseMVA) for v in value ] + elif isinstance(value, tuple): + values_list[time] = tuple( op(v, baseMVA) for v in value ) else: values_list[time] = op( value , baseMVA ) elif 'data_type' in attr and attr['data_type'] == 'cost_curve': From 42a54112c6a05b5c4261c1aff57601173504696d Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Mon, 19 Apr 2021 10:40:48 -0600 Subject: [PATCH 16/19] refinements to scaling transformation implementation; adding tests for the same --- .../tests/test_baseMVA_scaling.py | 121 ++++++++++++++++++ egret/model_library/transmission/tx_utils.py | 59 ++++++--- 2 files changed, 162 insertions(+), 18 deletions(-) create mode 100644 egret/model_library/transmission/tests/test_baseMVA_scaling.py diff --git a/egret/model_library/transmission/tests/test_baseMVA_scaling.py b/egret/model_library/transmission/tests/test_baseMVA_scaling.py new file mode 100644 index 00000000..0868bafa --- /dev/null +++ b/egret/model_library/transmission/tests/test_baseMVA_scaling.py @@ -0,0 +1,121 @@ +# ___________________________________________________________________________ +# +# EGRET: Electrical Grid Research and Engineering Tools +# Copyright 2019 National Technology & Engineering Solutions of Sandia, LLC +# (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. +# Government retains certain rights in this software. +# This software is distributed under the Revised BSD License. +# ___________________________________________________________________________ + +import pytest +import math + +from egret.data.model_data import ModelData +from egret.model_library.transmission.tx_utils import \ + scale_ModelData_to_pu, unscale_ModelData_to_pu +from egret.models.unit_commitment import solve_unit_commitment +from egret.models.tests.test_unit_commitment import test_solver + +def test_scale_unscale(): + md = ModelData.read( + '../../../models/tests/uc_test_instances/' + 'test_scuc_full_enforce_relaxed_sol.json') + + ## do type conversions + original_base_MVA = md.data['system']['baseMVA'] + md.data['system']['baseMVA'] = 1. + + scale_ModelData_to_pu(md, inplace=True) + + md.data['system']['baseMVA'] = original_base_MVA + + md_transformed = scale_ModelData_to_pu(md, inplace=False) + + unscale_ModelData_to_pu(md_transformed, inplace=True) + + assert md.data['system'] == md_transformed.data['system'] + for esn, esd in md.data['elements'].items(): + for en, ed in esd.items(): + assert ed == md_transformed.data['elements'][esn][en] + + for esn, esd in md_transformed.data['elements'].items(): + for en, ed in esd.items(): + assert ed == md.data['elements'][esn][en] + +def test_scaling_spot_check(): + md = ModelData.read( + '../../../models/tests/uc_test_instances/' + 'test_scuc_full_enforce_relaxed_sol.json') + + baseMVA = md.data['system']['baseMVA'] + + md_scaled = scale_ModelData_to_pu(md, inplace=False) + + md_scaled_unscaled = unscale_ModelData_to_pu(md_scaled, inplace=False) + + ## commitment should be unchanged + assert md.data['elements']['generator']['101_STEAM_3_t']['commitment']['values'][10] == \ + md_scaled.data['elements']['generator']['101_STEAM_3_t']['commitment']['values'][10] == \ + md_scaled_unscaled.data['elements']['generator']['101_STEAM_3_t']['commitment']['values'][10] + + ## as should production cost + assert md.data['elements']['generator']['101_STEAM_3_t']['production_cost']['values'][10] == \ + md_scaled.data['elements']['generator']['101_STEAM_3_t']['production_cost']['values'][10] == \ + md_scaled_unscaled.data['elements']['generator']['101_STEAM_3_t']['production_cost']['values'][10] + + ## as should voltage angle + assert md.data['elements']['bus']['Alber']['va']['values'][10] == \ + md_scaled.data['elements']['bus']['Alber']['va']['values'][10] == \ + md_scaled_unscaled.data['elements']['bus']['Alber']['va']['values'][10] + + ## pg should be scaled + assert md.data['elements']['generator']['101_STEAM_3_t']['pg']['values'][10] == \ + md_scaled.data['elements']['generator']['101_STEAM_3_t']['pg']['values'][10]/baseMVA == \ + md_scaled_unscaled.data['elements']['generator']['101_STEAM_3_t']['pg']['values'][10] + + ## load should be scaled + assert md.data['elements']['bus']['Alber']['pl']['values'][10] == \ + md_scaled.data['elements']['bus']['Alber']['pl']['values'][10]/baseMVA == \ + md_scaled_unscaled.data['elements']['bus']['Alber']['pl']['values'][10] + + ## load should be scaled + assert md.data['elements']['load']['Alber']['p_load']['values'][10] == \ + md_scaled.data['elements']['load']['Alber']['p_load']['values'][10]/baseMVA == \ + md_scaled_unscaled.data['elements']['load']['Alber']['p_load']['values'][10] + + ## flows should be scaled + assert md.data['elements']['branch']['A22']['pf']['values'][20] == \ + md_scaled.data['elements']['branch']['A22']['pf']['values'][20]/baseMVA == \ + md_scaled_unscaled.data['elements']['branch']['A22']['pf']['values'][20] + + ## contingency flows should also be scaled + assert md.data['elements']['contingency']['A1']['monitored_branches']['values'][10]['A11']['pf'] == \ + md_scaled.data['elements']['contingency']['A1']['monitored_branches']['values'][10]['A11']['pf']/baseMVA == \ + md_scaled_unscaled.data['elements']['contingency']['A1']['monitored_branches']['values'][10]['A11']['pf'] + + ## lmp should be inversly scaled + assert md.data['elements']['bus']['Alber']['lmp']['values'][10] == \ + md_scaled.data['elements']['bus']['Alber']['lmp']['values'][10]*baseMVA == \ + md_scaled_unscaled.data['elements']['bus']['Alber']['lmp']['values'][10] + + ## reserve prices should be inversly scaled + assert md.data['system']['reserve_price']['values'][18] == \ + md_scaled.data['system']['reserve_price']['values'][18]*baseMVA == \ + md_scaled_unscaled.data['system']['reserve_price']['values'][18] + + ## shortfall price should be inversly scaled + assert md.data['system']['reserve_shortfall_cost'] == \ + md_scaled.data['system']['reserve_shortfall_cost']*baseMVA == \ + md_scaled_unscaled.data['system']['reserve_shortfall_cost'] + +def test_scaling_solve(): + md = ModelData.read( + '../../../models/tests/uc_test_instances/tiny_uc_7.json') + + assert md.data['system']['baseMVA'] == 1. + mdo_unscaled = solve_unit_commitment(md, test_solver, relaxed=True) + + md.data['system']['baseMVA'] = 100. + mdo_scaled = solve_unit_commitment(md, test_solver, relaxed=True) + + assert math.isclose(mdo_scaled.data['system']['total_cost'], mdo_unscaled.data['system']['total_cost']) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index 1fea31a0..96841791 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -408,6 +408,13 @@ def _get_op(normal_op, inverse_op, attr_name): def _no_op(a,b): return a +def _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes): + if 'data_type' in value: + _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) + else: # recurse deeper + for k,v in value.items(): + _scale_by_baseMVA(normal_op, inverse_op, value, k, v, baseMVA, attributes) + def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, attributes): if attr is None: return @@ -420,11 +427,7 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, values_list = attr['values'] for time, value in enumerate(values_list): if isinstance(value, dict): - if 'data_type' in value: - _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) - else: # recurse deeper - for k,v in value.items(): - _scale_by_baseMVA(normal_op, inverse_op, value, k, v, baseMVA, attributes) + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) elif isinstance(value, list): values_list[time] = [ op(v, baseMVA) for v in value ] elif isinstance(value, tuple): @@ -434,22 +437,42 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, elif 'data_type' in attr and attr['data_type'] == 'cost_curve': if attr['cost_curve_type'] == 'polynomial': values_dict = attr['values'] - new_values = { int(power): coeff*(inverse_op(1.,baseMVA)**int(power)) \ - for (power, coeff) in values_dict.items() } - attr['values'] = new_values + if 'data_type' in values_dict: + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values_dict, baseMVA, attributes) + else: + new_values = { int(power): coeff*(inverse_op(1.,baseMVA)**int(power)) \ + for (power, coeff) in values_dict.items() } + attr['values'] = new_values elif attr['cost_curve_type'] == 'piecewise': - values_list_of_tuples = attr['values'] - new_values = [ ( normal_op(point,baseMVA), cost) \ - for (point, cost) in values_list_of_tuples ] - attr['values'] = new_values + values = attr['values'] + if isinstance(values, list): + new_values = [ (normal_op(point,baseMVA), cost) \ + for (point, cost) in values ] + attr['values'] = new_values + elif isinstance(values, tuple): + new_values = tuple( (normal_op(point,baseMVA), cost) \ + for (point, cost) in values ) + attr['values'] = new_values + elif isinstance(values, dict): + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) + else: + raise RuntimeError("Unexpected case converting piecewise cost curve") elif 'data_type' in attr and attr['data_type'] == 'fuel_curve': - values_list_of_tuples = attr['values'] - new_values = [ ( normal_op(point,baseMVA), fuel) \ - for (point, fuel) in values_list_of_tuples ] - attr['values'] = new_values + values = attr['values'] + if isinstance(values, list): + new_values = [ (normal_op(point,baseMVA), fuel) \ + for (point, fuel) in values ] + attr['values'] = new_values + elif isinstance(values, tuple): + new_values = tuple( (normal_op(point,baseMVA), fuel) \ + for (point, fuel) in values ) + attr['values'] = new_values + elif isinstance(values, dict): + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) + else: + raise RuntimeError("Unexpected case converting piecewise fuel curve") else: # recurse deeper - for k,v in attr.items(): - _scale_by_baseMVA(normal_op, inverse_op, attr, k, v, baseMVA, attributes) + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, attr, baseMVA, attributes) elif attr_name in attributes: op = _get_op(normal_op, inverse_op, attr_name) if isinstance(attr, list): From fe3771703edab95de3688d7f63d97e8380268a4c Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Mon, 19 Apr 2021 11:13:11 -0600 Subject: [PATCH 17/19] fixing path issue in baseMVA scaling tests --- .../tests/test_baseMVA_scaling.py | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/egret/model_library/transmission/tests/test_baseMVA_scaling.py b/egret/model_library/transmission/tests/test_baseMVA_scaling.py index 0868bafa..fef28dd9 100644 --- a/egret/model_library/transmission/tests/test_baseMVA_scaling.py +++ b/egret/model_library/transmission/tests/test_baseMVA_scaling.py @@ -7,8 +7,9 @@ # This software is distributed under the Revised BSD License. # ___________________________________________________________________________ -import pytest +import os import math +import pytest from egret.data.model_data import ModelData from egret.model_library.transmission.tx_utils import \ @@ -16,21 +17,27 @@ from egret.models.unit_commitment import solve_unit_commitment from egret.models.tests.test_unit_commitment import test_solver +current_dir = os.path.dirname(os.path.abspath(__file__)) +uc_test_dir = os.path.join(current_dir, '..','..','..','models', + 'tests', 'uc_test_instances') +scuc_fn = os.path.join(uc_test_dir, 'test_scuc_full_enforce_relaxed_sol.json') +tiny_uc_7_fn = os.path.join(uc_test_dir, 'tiny_uc_7.json') + def test_scale_unscale(): - md = ModelData.read( - '../../../models/tests/uc_test_instances/' - 'test_scuc_full_enforce_relaxed_sol.json') + md = ModelData.read(scuc_fn) ## do type conversions original_base_MVA = md.data['system']['baseMVA'] md.data['system']['baseMVA'] = 1. scale_ModelData_to_pu(md, inplace=True) - md.data['system']['baseMVA'] = original_base_MVA md_transformed = scale_ModelData_to_pu(md, inplace=False) + # test inplace flag + assert id(md.data) != id(md_transformed.data) + unscale_ModelData_to_pu(md_transformed, inplace=True) assert md.data['system'] == md_transformed.data['system'] @@ -43,9 +50,7 @@ def test_scale_unscale(): assert ed == md.data['elements'][esn][en] def test_scaling_spot_check(): - md = ModelData.read( - '../../../models/tests/uc_test_instances/' - 'test_scuc_full_enforce_relaxed_sol.json') + md = ModelData.read(scuc_fn) baseMVA = md.data['system']['baseMVA'] @@ -109,8 +114,7 @@ def test_scaling_spot_check(): md_scaled_unscaled.data['system']['reserve_shortfall_cost'] def test_scaling_solve(): - md = ModelData.read( - '../../../models/tests/uc_test_instances/tiny_uc_7.json') + md = ModelData.read(tiny_uc_7_fn) assert md.data['system']['baseMVA'] == 1. mdo_unscaled = solve_unit_commitment(md, test_solver, relaxed=True) From f4ea927055407fb08d86c797fd4733f298a3db73 Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Mon, 19 Apr 2021 11:21:57 -0600 Subject: [PATCH 18/19] resolving recursion issue --- egret/model_library/transmission/tx_utils.py | 109 +++++++++++-------- 1 file changed, 64 insertions(+), 45 deletions(-) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index 96841791..c4a34e3e 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -419,60 +419,79 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, if attr is None: return if isinstance(attr, dict): - if 'data_type' in attr and attr['data_type'] == 'time_series': - if attr_name in attributes: - op = _get_op(normal_op, inverse_op, attr_name) - else: - op = _no_op - values_list = attr['values'] - for time, value in enumerate(values_list): - if isinstance(value, dict): - _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) - elif isinstance(value, list): - values_list[time] = [ op(v, baseMVA) for v in value ] - elif isinstance(value, tuple): - values_list[time] = tuple( op(v, baseMVA) for v in value ) - else: - values_list[time] = op( value , baseMVA ) - elif 'data_type' in attr and attr['data_type'] == 'cost_curve': - if attr['cost_curve_type'] == 'polynomial': - values_dict = attr['values'] - if 'data_type' in values_dict: - _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values_dict, baseMVA, attributes) + if 'data_type' in attr: + if attr['data_type'] == 'time_series': + if attr_name in attributes: + op = _get_op(normal_op, inverse_op, attr_name) else: - new_values = { int(power): coeff*(inverse_op(1.,baseMVA)**int(power)) \ - for (power, coeff) in values_dict.items() } - attr['values'] = new_values - elif attr['cost_curve_type'] == 'piecewise': + op = _no_op + values_list = attr['values'] + for time, value in enumerate(values_list): + if isinstance(value, dict): + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, value, baseMVA, attributes) + elif isinstance(value, list): + values_list[time] = [ op(v, baseMVA) for v in value ] + elif isinstance(value, tuple): + values_list[time] = tuple( op(v, baseMVA) for v in value ) + else: + values_list[time] = op( value , baseMVA ) + elif attr['data_type'] == 'cost_curve': + if attr['cost_curve_type'] == 'polynomial': + values_dict = attr['values'] + if 'data_type' in values_dict: + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values_dict, baseMVA, attributes) + else: + new_values = { int(power): coeff*(inverse_op(1.,baseMVA)**int(power)) \ + for (power, coeff) in values_dict.items() } + attr['values'] = new_values + elif attr['cost_curve_type'] == 'piecewise': + values = attr['values'] + if isinstance(values, list): + new_values = [ (normal_op(point,baseMVA), cost) \ + for (point, cost) in values ] + attr['values'] = new_values + elif isinstance(values, tuple): + new_values = tuple( (normal_op(point,baseMVA), cost) \ + for (point, cost) in values ) + attr['values'] = new_values + elif isinstance(values, dict): + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) + else: + raise RuntimeError("Unexpected case converting piecewise cost curve") + elif attr['data_type'] == 'fuel_curve': values = attr['values'] if isinstance(values, list): - new_values = [ (normal_op(point,baseMVA), cost) \ - for (point, cost) in values ] + new_values = [ (normal_op(point,baseMVA), fuel) \ + for (point, fuel) in values ] attr['values'] = new_values elif isinstance(values, tuple): - new_values = tuple( (normal_op(point,baseMVA), cost) \ - for (point, cost) in values ) + new_values = tuple( (normal_op(point,baseMVA), fuel) \ + for (point, fuel) in values ) attr['values'] = new_values elif isinstance(values, dict): _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) else: - raise RuntimeError("Unexpected case converting piecewise cost curve") - elif 'data_type' in attr and attr['data_type'] == 'fuel_curve': - values = attr['values'] - if isinstance(values, list): - new_values = [ (normal_op(point,baseMVA), fuel) \ - for (point, fuel) in values ] - attr['values'] = new_values - elif isinstance(values, tuple): - new_values = tuple( (normal_op(point,baseMVA), fuel) \ - for (point, fuel) in values ) - attr['values'] = new_values - elif isinstance(values, dict): - _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) - else: - raise RuntimeError("Unexpected case converting piecewise fuel curve") - else: # recurse deeper - _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, attr, baseMVA, attributes) + raise RuntimeError("Unexpected case converting piecewise fuel curve") + else: # recurse deeper on the "values" + if attr_name in attributes: + op = _get_op(normal_op, inverse_op, attr_name) + else: + op = _no_op + values = attr['values'] + if isinstance(values, dict): + _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) + elif isinstance(values, list): + values = [ op(v, baseMVA) for v in values ] + attr['values'] = values + elif isinstance(value, tuple): + values = tuple( op(v, baseMVA) for v in values ) + attr['values'] = values + else: + values = op( values , baseMVA ) + attr['values'] = values + else: # recurse deeper AND we've already checked for data_type + for k,v in attr.items(): + _scale_by_baseMVA(normal_op, inverse_op, attr, k, v, baseMVA, attributes) elif attr_name in attributes: op = _get_op(normal_op, inverse_op, attr_name) if isinstance(attr, list): From 415811288ab40350922800c1132761e488ba200c Mon Sep 17 00:00:00 2001 From: Bernard Knueven Date: Mon, 19 Apr 2021 13:47:50 -0600 Subject: [PATCH 19/19] minor cleanup --- egret/model_library/transmission/tx_utils.py | 26 +++++++------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/egret/model_library/transmission/tx_utils.py b/egret/model_library/transmission/tx_utils.py index c4a34e3e..63954047 100644 --- a/egret/model_library/transmission/tx_utils.py +++ b/egret/model_library/transmission/tx_utils.py @@ -441,19 +441,16 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, if 'data_type' in values_dict: _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values_dict, baseMVA, attributes) else: - new_values = { int(power): coeff*(inverse_op(1.,baseMVA)**int(power)) \ + attr['values'] = { int(power): coeff*(inverse_op(1.,baseMVA)**int(power)) \ for (power, coeff) in values_dict.items() } - attr['values'] = new_values elif attr['cost_curve_type'] == 'piecewise': values = attr['values'] if isinstance(values, list): - new_values = [ (normal_op(point,baseMVA), cost) \ + attr['values'] = [ (normal_op(point,baseMVA), cost) \ for (point, cost) in values ] - attr['values'] = new_values elif isinstance(values, tuple): - new_values = tuple( (normal_op(point,baseMVA), cost) \ + attr['values'] = tuple( (normal_op(point,baseMVA), cost) \ for (point, cost) in values ) - attr['values'] = new_values elif isinstance(values, dict): _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) else: @@ -461,18 +458,16 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, elif attr['data_type'] == 'fuel_curve': values = attr['values'] if isinstance(values, list): - new_values = [ (normal_op(point,baseMVA), fuel) \ + attr['values'] = [ (normal_op(point,baseMVA), fuel) \ for (point, fuel) in values ] - attr['values'] = new_values elif isinstance(values, tuple): - new_values = tuple( (normal_op(point,baseMVA), fuel) \ + attr['values'] = tuple( (normal_op(point,baseMVA), fuel) \ for (point, fuel) in values ) - attr['values'] = new_values elif isinstance(values, dict): _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) else: raise RuntimeError("Unexpected case converting piecewise fuel curve") - else: # recurse deeper on the "values" + else: # potentially recurse deeper on the "values" if attr_name in attributes: op = _get_op(normal_op, inverse_op, attr_name) else: @@ -481,14 +476,11 @@ def _scale_by_baseMVA(normal_op, inverse_op, element, attr_name, attr, baseMVA, if isinstance(values, dict): _recurse_deeper_dict(normal_op, inverse_op, element, attr_name, values, baseMVA, attributes) elif isinstance(values, list): - values = [ op(v, baseMVA) for v in values ] - attr['values'] = values + attr['values'] = [ op(v, baseMVA) for v in values ] elif isinstance(value, tuple): - values = tuple( op(v, baseMVA) for v in values ) - attr['values'] = values + attr['values'] = tuple( op(v, baseMVA) for v in values ) else: - values = op( values , baseMVA ) - attr['values'] = values + attr['values'] = op( values , baseMVA ) else: # recurse deeper AND we've already checked for data_type for k,v in attr.items(): _scale_by_baseMVA(normal_op, inverse_op, attr, k, v, baseMVA, attributes)