diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json
index b073fb221..4677e68b2 100644
--- a/dev/.documenter-siteinfo.json
+++ b/dev/.documenter-siteinfo.json
@@ -1 +1 @@
-{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-08T23:19:57","documenter_version":"1.7.0"}}
\ No newline at end of file
+{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-11T12:23:00","documenter_version":"1.7.0"}}
\ No newline at end of file
diff --git a/dev/api/PowerSimulations/index.html b/dev/api/PowerSimulations/index.html
index 78b4b9388..de633bce0 100644
--- a/dev/api/PowerSimulations/index.html
+++ b/dev/api/PowerSimulations/index.html
@@ -8,53 +8,53 @@
duals::Vector{DataType},
services::Vector{ServiceModel}
attributes::Dict{String, Any}
-)
Establishes the model for a particular device specified by type. Uses the keyword argument feedforward to enable passing values between operation model at simulation time
Arguments
::Type{D} where D<:PSY.Device: Power System Device Type
::Type{B} where B<:AbstractDeviceFormulation: Abstract Device Formulation
feedforward::Array{<:AbstractAffectFeedforward} = Vector{AbstractAffectFeedforward}() : use to pass parameters between models
use_slacks::Bool = false : Add slacks to the device model. Implementation is model dependent and not all models feature slacks
duals::Vector{DataType} = Vector{DataType}(): use to pass constraint type to calculate the duals. The DataType needs to be a valid ConstraintType
time_series_names::Dict{Type{<:TimeSeriesParameter}, String} = get_default_time_series_names(D, B) : use to specify time series names associated to the device`
attributes::Dict{String, Any} = get_default_attributes(D, B) : use to specify attributes to the device
Establishes the model for a particular device specified by type. Uses the keyword argument feedforward to enable passing values between operation model at simulation time
Arguments
::Type{D} where D<:PSY.Device: Power System Device Type
::Type{B} where B<:AbstractDeviceFormulation: Abstract Device Formulation
feedforward::Array{<:AbstractAffectFeedforward} = Vector{AbstractAffectFeedforward}() : use to pass parameters between models
use_slacks::Bool = false : Add slacks to the device model. Implementation is model dependent and not all models feature slacks
duals::Vector{DataType} = Vector{DataType}(): use to pass constraint type to calculate the duals. The DataType needs to be a valid ConstraintType
time_series_names::Dict{Type{<:TimeSeriesParameter}, String} = get_default_time_series_names(D, B) : use to specify time series names associated to the device`
attributes::Dict{String, Any} = get_default_attributes(D, B) : use to specify attributes to the device
DecisionModel(
directory::AbstractString,
optimizer::MathOptInterface.OptimizerWithAttributes;
jump_model,
system
) -> Any
-
Construct an DecisionProblem from a serialized file.
Arguments
directory::AbstractString: Directory containing a serialized model
jump_model::Union{Nothing, JuMP.Model} = nothing: The JuMP model does not get serialized. Callers should pass whatever they passed to the original problem.
optimizer::Union{Nothing,MOI.OptimizerWithAttributes} = nothing: The optimizer does not get serialized. Callers should pass whatever they passed to the original problem.
system::Union{Nothing, PSY.System}: Optionally, the system used for the model. If nothing and systofile was set to true when the model was created, the system will be deserialized from a file.
Construct an DecisionProblem from a serialized file.
Arguments
directory::AbstractString: Directory containing a serialized model
jump_model::Union{Nothing, JuMP.Model} = nothing: The JuMP model does not get serialized. Callers should pass whatever they passed to the original problem.
optimizer::Union{Nothing,MOI.OptimizerWithAttributes} = nothing: The optimizer does not get serialized. Callers should pass whatever they passed to the original problem.
system::Union{Nothing, PSY.System}: Optionally, the system used for the model. If nothing and systofile was set to true when the model was created, the system will be deserialized from a file.
DecisionModel{M}(
template::AbstractProblemTemplate,
sys::PSY.System,
jump_model::Union{Nothing, JuMP.Model}=nothing;
kwargs...) where {M<:DecisionProblem}
Build the optimization problem of type M with the specific system and template.
Arguments
::Type{M} where M<:DecisionProblem: The abstract operation model type
template::AbstractProblemTemplate: The model reference made up of transmission, devices, branches, and services.
sys::PSY.System: the system created using Power Systems
jump_model::Union{Nothing, JuMP.Model}: Enables passing a custom JuMP model. Use with care
name = nothing: name of model, string or symbol; defaults to the type of template converted to a symbol.
optimizer::Union{Nothing,MOI.OptimizerWithAttributes} = nothing : The optimizer does not get serialized. Callers should pass whatever they passed to the original problem.
horizon::Dates.Period = UNSET_HORIZON: Manually specify the length of the forecast Horizon
resolution::Dates.Period = UNSET_RESOLUTION: Manually specify the model's resolution
warm_start::Bool = true: True will use the current operation point in the system to initialize variable values. False initializes all variables to zero. Default is true
system_to_file::Bool = true:: True to create a copy of the system used in the model.
initialize_model::Bool = true: Option to decide to initialize the model or not.
initialization_file::String = "": This allows to pass pre-existing initialization values to avoid the solution of an optimization problem to find feasible initial conditions.
deserialize_initial_conditions::Bool = false: Option to deserialize conditions
export_pwl_vars::Bool = false: True to export all the pwl intermediate variables. It can slow down significantly the build and solve time.
allow_fails::Bool = false: True to allow the simulation to continue even if the optimization step fails. Use with care.
optimizer_solve_log_print::Bool = false: Uses JuMP.unset_silent() to print the optimizer's log. By default all solvers are set to MOI.Silent()
detailed_optimizer_stats::Bool = false: True to save detailed optimizer stats log.
calculate_conflict::Bool = false: True to use solver to calculate conflicts for infeasible problems. Only specific solvers are able to calculate conflicts.
direct_mode_optimizer::Bool = false: True to use the solver in direct mode. Creates a JuMP.direct_model.
store_variable_names::Bool = false: to store variable names in optimization model. Decreases the build times.
rebuild_model::Bool = false: It will force the rebuild of the underlying JuMP model with each call to update the model. It increases solution times, use only if the model can't be updated in memory.
initial_time::Dates.DateTime = UNSET_INI_TIME: Initial Time for the model solve.
time_series_cache_size::Int = IS.TIME_SERIES_CACHE_SIZE_BYTES: Size in bytes to cache for each time array. Default is 1 MiB. Set to 0 to disable.
Default solve method for a DecisionModel used inside of a Simulation. Solves problems that conform to the requirements of DecisionModel{<: DecisionProblem}
Arguments
step::Int: Simulation Step
model::OperationModel: operation model
start_time::Dates.DateTime: Initial Time of the simulation step in Simulation time.
store::SimulationStore: Simulation output store
Accepted Key Words
exports: realtime export of output. Use wisely, it can have negative impacts in the simulation times
Default solve method for a DecisionModel used inside of a Simulation. Solves problems that conform to the requirements of DecisionModel{<: DecisionProblem}
Arguments
step::Int: Simulation Step
model::OperationModel: operation model
start_time::Dates.DateTime: Initial Time of the simulation step in Simulation time.
store::SimulationStore: Simulation output store
Accepted Key Words
exports: realtime export of output. Use wisely, it can have negative impacts in the simulation times
EmulationModel{M}(
template::AbstractProblemTemplate,
sys::PSY.System,
jump_model::Union{Nothing, JuMP.Model}=nothing;
kwargs...) where {M<:EmulationProblem}
Build the optimization problem of type M with the specific system and template.
Arguments
::Type{M} where M<:EmulationProblem: The abstract Emulation model type
template::AbstractProblemTemplate: The model reference made up of transmission, devices, branches, and services.
sys::PSY.System: the system created using Power Systems
jump_model::Union{Nothing, JuMP.Model}: Enables passing a custom JuMP model. Use with care
name = nothing: name of model, string or symbol; defaults to the type of template converted to a symbol.
optimizer::Union{Nothing,MOI.OptimizerWithAttributes} = nothing : The optimizer does not get serialized. Callers should pass whatever they passed to the original problem.
warm_start::Bool = true: True will use the current operation point in the system to initialize variable values. False initializes all variables to zero. Default is true
system_to_file::Bool = true:: True to create a copy of the system used in the model.
initialize_model::Bool = true: Option to decide to initialize the model or not.
initialization_file::String = "": This allows to pass pre-existing initialization values to avoid the solution of an optimization problem to find feasible initial conditions.
deserialize_initial_conditions::Bool = false: Option to deserialize conditions
export_pwl_vars::Bool = false: True to export all the pwl intermediate variables. It can slow down significantly the build and solve time.
allow_fails::Bool = false: True to allow the simulation to continue even if the optimization step fails. Use with care.
calculate_conflict::Bool = false: True to use solver to calculate conflicts for infeasible problems. Only specific solvers are able to calculate conflicts.
optimizer_solve_log_print::Bool = false: Uses JuMP.unset_silent() to print the optimizer's log. By default all solvers are set to MOI.Silent()
detailed_optimizer_stats::Bool = false: True to save detailed optimizer stats log.
direct_mode_optimizer::Bool = false: True to use the solver in direct mode. Creates a JuMP.direct_model.
store_variable_names::Bool = false: True to store variable names in optimization model.
rebuild_model::Bool = false: It will force the rebuild of the underlying JuMP model with each call to update the model. It increases solution times, use only if the model can't be updated in memory.
initial_time::Dates.DateTime = UNSET_INI_TIME: Initial Time for the model solve.
time_series_cache_size::Int = IS.TIME_SERIES_CACHE_SIZE_BYTES: Size in bytes to cache for each time array. Default is 1 MiB. Set to 0 to disable.
EmulationModel(
directory::AbstractString,
optimizer::MathOptInterface.OptimizerWithAttributes;
jump_model,
system,
kwargs...
) -> Any
-
Construct an EmulationProblem from a serialized file.
Arguments
directory::AbstractString: Directory containing a serialized model.
optimizer::MOI.OptimizerWithAttributes: The optimizer does not get serialized. Callers should pass whatever they passed to the original problem.
jump_model::Union{Nothing, JuMP.Model} = nothing: The JuMP model does not get serialized. Callers should pass whatever they passed to the original problem.
system::Union{Nothing, PSY.System}: Optionally, the system used for the model. If nothing and systofile was set to true when the model was created, the system will be deserialized from a file.
Construct an EmulationProblem from a serialized file.
Arguments
directory::AbstractString: Directory containing a serialized model.
optimizer::MOI.OptimizerWithAttributes: The optimizer does not get serialized. Callers should pass whatever they passed to the original problem.
jump_model::Union{Nothing, JuMP.Model} = nothing: The JuMP model does not get serialized. Callers should pass whatever they passed to the original problem.
system::Union{Nothing, PSY.System}: Optionally, the system used for the model. If nothing and systofile was set to true when the model was created, the system will be deserialized from a file.
Default solve method for an EmulationModel used inside of a Simulation. Solves problems that conform to the requirements of DecisionModel{<: DecisionProblem}
Arguments
step::Int: Simulation Step
model::OperationModel: operation model
start_time::Dates.DateTime: Initial Time of the simulation step in Simulation time.
store::SimulationStore: Simulation output store
exports = nothing: realtime export of output. Use wisely, it can have negative impacts in the simulation times
Establishes the model for a particular services specified by type. Uses the keyword argument use_service_name to assign the model to a service with the same name as the name in the template. Uses the keyword argument feedforward to enable passing values between operation model at simulation time
Arguments
-::Type{D}: Power System Service Type -::Type{B}: Abstract Service Formulation
Accepted Key Words
feedforward::Array{<:AbstractAffectFeedforward} : use to pass parameters between models
use_service_name::Bool : use the name as the name for the service
Default solve method for an EmulationModel used inside of a Simulation. Solves problems that conform to the requirements of DecisionModel{<: DecisionProblem}
Arguments
step::Int: Simulation Step
model::OperationModel: operation model
start_time::Dates.DateTime: Initial Time of the simulation step in Simulation time.
store::SimulationStore: Simulation output store
exports = nothing: realtime export of output. Use wisely, it can have negative impacts in the simulation times
Establishes the model for a particular services specified by type. Uses the keyword argument use_service_name to assign the model to a service with the same name as the name in the template. Uses the keyword argument feedforward to enable passing values between operation model at simulation time
Arguments
-::Type{D}: Power System Service Type -::Type{B}: Abstract Service Formulation
Accepted Key Words
feedforward::Array{<:AbstractAffectFeedforward} : use to pass parameters between models
use_service_name::Bool : use the name as the name for the service
Stores the OperationProblem definitions to be used in the simulation. When creating the SimulationModels, the order in which the models are created determines the order on which the simulation is executed.
Arguments
decision_models::Vector{<:DecisionModel}: Vector of decision models.
emulation_models::Union{Nothing, EmulationModel}: Optional argument to include
Constructs Simulation from a serialized directory. Callers should pass any kwargs here that they passed to the original Simulation.
Arguments
directory::AbstractString: the directory returned from the call to serialize
model_info::Dict: Two-level dictionary containing model parameters that cannot be serialized. The outer dict should be keyed by the problem name. The inner dict must contain 'optimizer' and may contain 'jump_model'. These should be the same values used for the original simulation.
Constructs Simulation from a serialized directory. Callers should pass any kwargs here that they passed to the original Simulation.
Arguments
directory::AbstractString: the directory returned from the call to serialize
model_info::Dict: Two-level dictionary containing model parameters that cannot be serialized. The outer dict should be keyed by the problem name. The inner dict must contain 'optimizer' and may contain 'jump_model'. These should be the same values used for the original simulation.
Type struct to select an information sharing model between stages that uses results from the most recent stage executed to calculate the initial conditions. This model takes into account solutions from stages defined with finer temporal resolutions
Type struct to select an information sharing model between stages that uses results from the same recent stage to calculate the initial conditions. This model ignores solutions from stages defined with finer temporal resolutions.
Struct to dispatch the creation of active power flow upper bound slack variables. Used when there is not enough flow through the branch in the forward direction.
Struct to dispatch the creation of active power flow lower bound slack variables. Used when there is not enough flow through the branch in the reverse direction.
Struct to create the constraint for starting up ThermalMultiStart units. For more information check ThermalGen Formulations for ThermalMultiStartUnitCommitment.
Type struct to select an information sharing model between stages that uses results from the most recent stage executed to calculate the initial conditions. This model takes into account solutions from stages defined with finer temporal resolutions
Type struct to select an information sharing model between stages that uses results from the same recent stage to calculate the initial conditions. This model ignores solutions from stages defined with finer temporal resolutions.
Struct to dispatch the creation of active power flow upper bound slack variables. Used when there is not enough flow through the branch in the forward direction.
Struct to dispatch the creation of active power flow lower bound slack variables. Used when there is not enough flow through the branch in the reverse direction.
Struct to create the constraint for starting up ThermalMultiStart units. For more information check ThermalGen Formulations for ThermalMultiStartUnitCommitment.
Load the simulation results into memory for repeated reads. This is useful when loading results from remote locations over network connections, when reading the same data very many times, etc. Multiple calls augment the cache according to these rules, where "variable" means "variable, expression, etc.":
Requests for an already cached variable at a lesser count than already cached do not decrease the count of the cached variable
Requests for an already cached variable at a greater count than already cached do increase the count of the cached variable
Requests for new variables are fulfilled without evicting existing variables
Note that count is global across all variables, so increasing the count re-reads already cached variables. For each variable, each element must be the name encoded as a string, like "ActivePowerVariable__ThermalStandard" or a Tuple with its constituent types, like (ActivePowerVariable, ThermalStandard). To clear the cache, use Base.empty!.
Arguments
count::Int: Number of windows to load.
initial_time::Dates.DateTime : Initial time of first window to load. Defaults to first.
aux_variables::Vector{Union{String, Tuple}}: Optional list of aux variables to load.
duals::Vector{Union{String, Tuple}}: Optional list of duals to load.
expressions::Vector{Union{String, Tuple}}: Optional list of expressions to load.
parameters::Vector{Union{String, Tuple}}: Optional list of parameters to load.
variables::Vector{Union{String, Tuple}}: Optional list of variables to load.
Load the simulation results into memory for repeated reads. This is useful when loading results from remote locations over network connections, when reading the same data very many times, etc. Multiple calls augment the cache according to these rules, where "variable" means "variable, expression, etc.":
Requests for an already cached variable at a lesser count than already cached do not decrease the count of the cached variable
Requests for an already cached variable at a greater count than already cached do increase the count of the cached variable
Requests for new variables are fulfilled without evicting existing variables
Note that count is global across all variables, so increasing the count re-reads already cached variables. For each variable, each element must be the name encoded as a string, like "ActivePowerVariable__ThermalStandard" or a Tuple with its constituent types, like (ActivePowerVariable, ThermalStandard). To clear the cache, use Base.empty!.
Arguments
count::Int: Number of windows to load.
initial_time::Dates.DateTime : Initial time of first window to load. Defaults to first.
aux_variables::Vector{Union{String, Tuple}}: Optional list of aux variables to load.
duals::Vector{Union{String, Tuple}}: Optional list of duals to load.
expressions::Vector{Union{String, Tuple}}: Optional list of expressions to load.
parameters::Vector{Union{String, Tuple}}: Optional list of parameters to load.
variables::Vector{Union{String, Tuple}}: Optional list of variables to load.
Load the simulation results into memory for repeated reads. This is useful when loading results from remote locations over network connections.
For each variable/parameter/dual, etc., each element must be the name encoded as a string, like "ActivePowerVariable__ThermalStandard"or a Tuple with its constituent types, like(ActivePowerVariable, ThermalStandard)`.
Arguments
aux_variables::Vector{Union{String, Tuple}}: Optional list of aux variables to load.
duals::Vector{Union{String, Tuple}}: Optional list of duals to load.
expressions::Vector{Union{String, Tuple}}: Optional list of expressions to load.
parameters::Vector{Union{String, Tuple}}: Optional list of parameters to load.
variables::Vector{Union{String, Tuple}}: Optional list of variables to load.
Load the simulation results into memory for repeated reads. This is useful when loading results from remote locations over network connections.
For each variable/parameter/dual, etc., each element must be the name encoded as a string, like "ActivePowerVariable__ThermalStandard"or a Tuple with its constituent types, like(ActivePowerVariable, ThermalStandard)`.
Arguments
aux_variables::Vector{Union{String, Tuple}}: Optional list of aux variables to load.
duals::Vector{Union{String, Tuple}}: Optional list of duals to load.
expressions::Vector{Union{String, Tuple}}: Optional list of expressions to load.
parameters::Vector{Union{String, Tuple}}: Optional list of parameters to load.
variables::Vector{Union{String, Tuple}}: Optional list of variables to load.
Return the system used for the problem. If the system hasn't already been deserialized or set with set_system! then deserialize and store it.
If the simulation was configured to serialize all systems to file then the returned system will include all data. If that was not configured then the returned system will include all data except time series data.
Return the system used for the problem. If the system hasn't already been deserialized or set with set_system! then deserialize and store it.
If the simulation was configured to serialize all systems to file then the returned system will include all data. If that was not configured then the returned system will include all data except time series data.
filter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.
wall_time = false: If true, show the wall_time timestamp.
show_simulation_events(
+) where {T <: IS.AbstractRecorderEvent}
Show the events of type T in a recorder file.
Arguments
::Type{T}: Recorder event type
filename::AbstractString: recorder filename
filter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.
wall_time = false: If true, show the wall_time timestamp.