Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,58 @@ version = "0.1.0"
authors = ["Sienna-Platform"]

[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
DataFramesMeta = "1313f7d8-7da2-5740-9ea0-a2ca25f37964"
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
InfrastructureOptimizationModels = "bed98974-b02a-5e2f-9ee0-a103f5c45069"
InfrastructureSystems = "2cd47ed4-ca9b-11e9-27f2-ab636a7671f1"
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
PowerNetworkMatrices = "bed98974-b02a-5e2f-9fe0-a103f5c450dd"
PowerSystems = "bcd98974-b02a-5e2f-9ee0-a103f5c450dd"
PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
TimeSeries = "9e3dc215-6440-5c97-bce1-76c03772f85e"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"

[weakdeps]
PowerFlows = "94fada2c-0ca5-4b90-a1fb-4bc5b59ccfc7"

[sources]
InfrastructureOptimizationModels = {url = "https://github.com/NREL-Sienna/InfrastructureOptimizationModels.jl", rev = "lk/move-operation-to-pom"}
InfrastructureSystems = {rev = "IS4", url = "https://github.com/NREL-Sienna/InfrastructureSystems.jl"}
PowerSystems = {rev = "psy6", url = "https://github.com/NREL-Sienna/PowerSystems.jl"}

[extensions]
PowerFlowsExt = "PowerFlows"

[sources]
InfrastructureSystems = {url = "https://github.com/NREL-Sienna/InfrastructureSystems.jl", rev = "IS4"}
PowerSystems = {url = "https://github.com/NREL-Sienna/PowerSystems.jl", rev = "psy6"}
InfrastructureOptimizationModels = {url = "https://github.com/NREL-Sienna/InfrastructureOptimizationModels.jl", rev = "lk/pom-test-fixes"}

[compat]
CSV = "0.10.16"
DataFrames = "1.8.2"
DataFramesMeta = "0.15.6"
DataStructures = "0.19.4"
Dates = "1"
DocStringExtensions = "~0.8, ~0.9"
HDF5 = "0.17.3"
InfrastructureOptimizationModels = "0.1"
InfrastructureSystems = "3"
InteractiveUtils = "1.11.0"
JuMP = "^1.28"
MathOptInterface = "1.51.0"
PowerNetworkMatrices = "^0.19"
PowerSystems = "5.3"
PrettyTables = "3.3.2"
ProgressMeter = "1.11.0"
TimeSeries = "0.25.2"
TimerOutputs = "~0.5"
julia = "^1.11"
174 changes: 158 additions & 16 deletions src/PowerOperationsModels.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,38 @@ module PowerOperationsModels
# Package imports
#################################################################################
import Dates
import DataStructures: OrderedDict
# I/O and tabular deps used by files moved from IOM (OPO, model stores).
import CSV
import DataFrames
import DataFrames: DataFrame, DataFrameRow, Not, innerjoin, select
import DataFramesMeta: @chain, @orderby, @rename, @select, @subset, @transform
import HDF5
import MathOptInterface
const MOI = MathOptInterface
const MOIU = MathOptInterface.Utilities
import PrettyTables
import TimeSeries
const TS = TimeSeries
import InfrastructureSystems
import InfrastructureSystems: @assert_op, TableFormat
# Imports for symbols used unqualified by files moved from IOM (operation/ and OPO).
import InfrastructureSystems:
Outputs,
Forecast,
StaticTimeSeries,
InfrastructureSystemsType,
InfrastructureSystemsComponent,
InfrastructureSystemsContainer,
TimeSeriesCacheKey,
InvalidValue,
ConflictingInputsError,
compute_file_hash,
convert_for_path,
strip_module_name,
to_namedtuple,
get_uuid,
configure_logging
import JuMP
import JuMP.Containers: DenseAxisArray, SparseAxisArray
import Logging
Expand Down Expand Up @@ -218,6 +248,121 @@ include("common_models/reserve_range_constraints.jl")
# before device-specific files that reference MBC_TYPES / IEC_TYPES.
include("common_models/market_bid_plumbing.jl")

# Internal IOM symbols used by files moved from IOM (operation/, OPO).
import InfrastructureOptimizationModels:
OptimizationContainerMetadata,
AbstractDataset,
AbstractModelStore,
DatasetContainer,
DecisionModelIndexType,
EmulationModelIndexType,
HDF5Dataset,
InitialConditionKey,
InMemoryDataset,
LOG_GROUP_MODEL_STORE,
ModelInternal,
ModelStoreParams,
SimulationSequence,
SimulationModels,
STORE_CONTAINERS,
STORE_CONTAINER_TYPES,
auto_transform_time_series!,
calculate_parameter_values,
cost_function_unsynch,
deserialize_key,
encode_key,
encode_key_as_string,
encode_keys_as_strings,
get_param_eltype,
get_base_power,
get_expression_values,
get_horizon,
get_model_base_power,
get_parameter_values,
get_resolution,
get_timestamps,
get_column_names,
get_column_names_from_axis_array,
get_current_timestamp,
get_data_field,
get_execution_count,
get_executions,
get_expressions,
get_first_dimension_output_column_name,
get_forecast_horizon,
get_forecast_interval,
get_forecast_intervals,
get_initial_conditions_file,
get_last_recorded_row,
get_last_updated_timestamp,
get_metadata,
get_num_executions,
get_output_dir,
get_parameter_attributes,
get_second_dimension_output_column_name,
get_status,
get_store,
get_store_container_type,
get_store_params,
get_system_uuid,
get_time_series_cache,
get_time_series_counts,
get_time_series_counts_by_type,
get_time_series_resolutions,
get_update_timestamp,
is_built,
is_synchronized,
list_fields,
list_keys,
make_key,
to_outputs_dataframe,
read_duals,
read_expressions,
read_parameters,
serialize_metadata,
to_dataframe,
to_dict,
write_data,
CONTAINER_KEY_EMPTY_META,
_get_ramp_constraint_devices,
LOG_GROUP_OPTIMIZATION_CONTAINER,
set_status!,
set_store_params!,
get_problem_size
import InfrastructureSystems.Optimization:
AbstractOptimizationContainer, OptimizationKeyType
import InfrastructureSystems.Simulation: SimulationInfo, get_run_status, set_run_status!
import InfrastructureSystems:
Deterministic,
DeterministicSingleTimeSeries,
FlattenIteratorWrapper,
SingleTimeSeries,
TIME_SERIES_CACHE_SIZE_BYTES,
check_component,
check_components,
deserialize,
get_available,
get_components,
get_optimizer_stats,
get_parameters,
get_source_data,
get_time_series_array,
get_time_series_values,
get_total_cost,
get_variables,
has_components,
make_time_series_cache,
serialize,
write_outputs

# Operation output containers + model stores (moved from IOM). Must come before
# update_initial_conditions.jl, decision_model.jl, and emulation_model.jl.
include("operation/optimization_problem_outputs_export.jl")
include("operation/optimization_problem_outputs.jl")
include("operation/decision_model_store.jl")
include("operation/emulation_model_store.jl")
include("operation/store_common.jl")

# Initial Conditions
include("initial_conditions/add_initial_condition.jl")
include("initial_conditions/device_initial_conditions.jl")
Expand Down Expand Up @@ -285,28 +430,25 @@ include("area_interchange.jl")
# Operation lifecycle: build/solve/run
include("operation/build_problem.jl")
include("initial_conditions/initialization.jl")
include("operation/template_validation.jl")
include("operation/decision_model.jl")
include("operation/emulation_model.jl")
# template_validation must come after decision_model.jl / emulation_model.jl
# because validate_template now dispatches on Default*Problem types defined there.
include("operation/template_validation.jl")
include("operation/initial_conditions_update_in_memory_store.jl")
include("operation/problem_outputs.jl")
include("operation/time_series_interface.jl")
include("operation/optimization_debugging.jl")
include("operation/model_numerical_analysis_utils.jl")
# Methods extracted from IOM operation_model_interface.jl that compose POM-only
# store/numerical-bounds functions. Must come after the files that define those
# concretes (stores, model_numerical_analysis_utils, optimization_debugging,
# instantiate_network_model) and after decision/emulation_model.jl.
include("operation/operation_model_glue.jl")

include("utils/generate_valid_formulations.jl")
include("utils/print.jl")

# Import private/internal helpers (use import to avoid undeclared warning)
import InfrastructureOptimizationModels: _get_ramp_constraint_devices
import InfrastructureOptimizationModels:
get_param_eltype,
CONTAINER_KEY_EMPTY_META

# Import high-frequency IOM internals used throughout operation lifecycle code.
# Note: BUILD_PROBLEMS_TIMER and RUN_OPERATION_MODEL_TIMER are defined in POM's
# definitions.jl, so they are NOT imported from IOM.
import InfrastructureOptimizationModels:
LOG_GROUP_OPTIMIZATION_CONTAINER,
get_store,
set_status!,
get_problem_size

# Functions defined in POM (core/interfaces.jl)
export construct_device!
export construct_service!
Expand Down
Loading
Loading