-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPowerOperationsModels.jl
More file actions
897 lines (792 loc) · 28.1 KB
/
Copy pathPowerOperationsModels.jl
File metadata and controls
897 lines (792 loc) · 28.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
module PowerOperationsModels
#################################################################################
# Package imports
#################################################################################
import Dates
import InfrastructureSystems
import InfrastructureSystems: @assert_op, TableFormat
import JuMP
import JuMP.Containers: DenseAxisArray, SparseAxisArray
import Logging
import PowerNetworkMatrices
import ProgressMeter
import PowerSystems
import PowerSystems: get_component
import Serialization
import SparseArrays
import TimerOutputs
import InteractiveUtils: methodswith
using DocStringExtensions
using JSON3
#################################################################################
# Embedded submodules (adapted from InfrastructureModels.jl and PowerModels.jl)
#################################################################################
include("InfrastructureModels/InfrastructureModels.jl")
include("PowerModels/PowerModels.jl")
const PM = PowerModels
# Import PM types into module namespace for re-export
using .PowerModels:
DCPPowerModel,
ACPPowerModel,
AbstractDCPModel,
AbstractACPModel,
AbstractActivePowerModel,
NFAPowerModel
@template (FUNCTIONS, METHODS) = """
$(TYPEDSIGNATURES)
$(DOCSTRING)
"""
#################################################################################
# Type Aliases
#################################################################################
const IS = InfrastructureSystems
const ISOPT = InfrastructureSystems.Optimization
const PSY = PowerSystems
const PNM = PowerNetworkMatrices
# Import abstract types from InfrastructureSystems.Optimization
import InfrastructureSystems.Optimization:
VariableType,
ConstraintType,
AuxVariableType,
ParameterType,
ExpressionType,
InitialConditionType,
TimeSeriesParameter,
RightHandSideParameter,
ObjectiveFunctionParameter
# Import formulation abstract types from InfrastructureSystems.Optimization
# Note: AbstractPTDFModel and AbstractSecurityConstrainedPTDFModel are defined
# in this package (network_formulations.jl) as subtypes of AbstractDCPModel.
import InfrastructureSystems.Optimization:
AbstractDeviceFormulation,
AbstractThermalFormulation,
AbstractLoadFormulation,
AbstractRenewableFormulation,
AbstractServiceFormulation,
AbstractReservesFormulation,
AbstractPowerModel,
AbstractHVDCNetworkModel
#################################################################################
# Import InfrastructureOptimizationModels early for base functions
# These are needed before including core files that extend them
#################################################################################
import InfrastructureOptimizationModels
const IOM = InfrastructureOptimizationModels
# Import utility functions that core files will extend with new methods
import InfrastructureOptimizationModels:
should_write_resulting_value,
convert_output_to_natural_units,
# Network model compatibility checks (extended in core/network_formulations.jl)
requires_all_branch_models,
supports_branch_filtering,
ignores_branch_filtering
# Import functions that POM extends with device-specific implementations
import InfrastructureOptimizationModels:
add_variables!,
add_to_expression!,
# Variable property functions (IOM has default stubs, POM adds device-specific methods)
get_variable_binary,
get_variable_lower_bound,
get_variable_upper_bound,
get_variable_warm_start_value,
# Device/formulation attribute defaults (IOM has stubs, POM specializes)
get_default_attributes,
get_default_time_series_names,
# proportional cost
proportional_cost,
is_time_variant_proportional,
add_proportional_cost!,
add_proportional_cost_maybe_time_variant!,
skip_proportional_cost,
# variable cost
add_variable_cost!,
# Network model instantiation (POM extends for concrete network formulations)
instantiate_network_model!,
# Parameter addition (POM provides concrete implementations)
add_parameters!,
# Cost/status functions (IOM has default stubs, POM adds device-specific methods)
get_operation_cost,
get_must_run,
# Build-pipeline extension points (IOM declares stubs, POM extends)
calculate_aux_variable_value!,
is_from_power_flow,
# Functions POM extends with new methods
_onvar_cost,
add_cost_to_expression!,
add_linear_ramp_constraints!,
add_service_variables!,
requires_initialization,
get_min_max_limits,
start_up_cost,
_get_initial_condition_type,
set_ic_quantity!,
update_container_parameter_values!
# Market bid cost: import IOM functions that POM extends with device-specific methods
import InfrastructureOptimizationModels:
_consider_parameter,
validate_occ_component,
_include_min_gen_power_in_constraint,
_include_constant_min_gen_power_in_constraint,
add_variable_cost_to_objective!,
_vom_offer_direction,
add_pwl_constraint_delta!,
add_pwl_term_delta!,
# Internal utilities used by market bid overrides and proportional_cost
is_time_variant,
apply_maybe_across_time_series,
_validate_eltype,
objective_function_multiplier,
get_piecewise_curve_per_system_unit,
add_pwl_block_offer_constraints!,
has_service_model,
IncrementalOffer,
DecrementalOffer,
add_constraint_dual!,
assign_dual_variable!,
_calculate_dual_variable_value!,
add_dual_container!,
variable_cost,
# Extend IOM interface functions so POM methods are added to the same functions
get_device_models,
get_branch_models,
get_service_models,
get_network_model,
get_network_formulation,
get_hvdc_network_model,
get_component_types,
get_model,
set_network_model!,
set_hvdc_network_model!,
set_device_model!,
set_service_model!,
finalize_template!,
make_empty_jump_model_with_settings,
set_model!
using InfrastructureOptimizationModels # TODO: use explicit imports.
# Note: add_feedforward_arguments!, add_feedforward_constraints!,
# get_default_on_variable, get_default_off_variable are defined in POM, not IOM
# Note: ABSOLUTE_TOLERANCE is defined in POM's definitions.jl
# Note: TimeDurationOn and TimeDurationOff are defined in POM, not IOM
#################################################################################
# Include core type definitions
# These define concrete Variable, Expression, Constraint, and Parameter types
# and extend should_write_resulting_value/convert_output_to_natural_units
#################################################################################
include("core/definitions.jl")
include("core/interfaces.jl")
include("core/default_interface_methods.jl")
include("core/physical_constant_definitions.jl")
include("core/variables.jl")
include("core/expressions.jl")
include("core/constraints.jl")
include("core/auxiliary_variables.jl")
include("core/parameters.jl")
include("core/formulations.jl")
include("core/network_formulations.jl")
include("core/problem_template.jl")
include("core/feedforward_interface.jl")
include("core/initial_conditions.jl")
# Common models - expression infrastructure
# Expression container creation (add_expressions!) and helpers
include("common_models/add_expressions.jl")
# Device-specific add_to_expression! implementations
include("common_models/add_to_expression.jl")
# add_param_container.jl: moved into IOM
include("common_models/add_parameters.jl")
include("common_models/make_system_expressions.jl")
include("common_models/reserve_range_constraints.jl")
# Market bid cost plumbing (PSY orchestration moved out of IOM). Must be included
# before device-specific files that reference MBC_TYPES / IEC_TYPES.
include("common_models/market_bid_plumbing.jl")
# Initial Conditions
include("initial_conditions/add_initial_condition.jl")
include("initial_conditions/device_initial_conditions.jl")
include("initial_conditions/update_initial_conditions.jl")
# Device Models - Static Injectors
include("static_injector_models/thermal_generation.jl")
include("static_injector_models/thermalgeneration_constructor.jl")
include("static_injector_models/renewable_generation.jl")
include("static_injector_models/renewablegeneration_constructor.jl")
include("static_injector_models/electric_loads.jl")
include("static_injector_models/load_constructor.jl")
include("static_injector_models/source.jl")
include("static_injector_models/source_constructor.jl")
include("static_injector_models/reactivepower_device.jl")
include("static_injector_models/reactivepowerdevice_constructor.jl")
include("utils/psy_utils.jl")
include("static_injector_models/hydro_generation.jl")
include("static_injector_models/hydrogeneration_constructor.jl")
# Energy Storage Models
include("energy_storage_models/storage_models.jl")
include("energy_storage_models/storage_constructor.jl")
# POM market bid cost overrides (plumbing is included earlier, before device files)
include("common_models/market_bid_overrides.jl")
# AC Transmission Models
include("ac_transmission_models/AC_branches.jl")
include("ac_transmission_models/branch_constructor.jl")
# Network Models
include("network_models/instantiate_network_model.jl")
include("network_models/network_slack_variables.jl")
include("network_models/copperplate_model.jl")
include("network_models/area_balance_model.jl")
include("network_models/powermodels_interface.jl")
include("network_models/pm_translator.jl")
include("network_models/network_constructor.jl")
# Services Models
include("services_models/service_slacks.jl")
include("services_models/reserves.jl")
include("services_models/reserve_group.jl")
# include("services_models/agc.jl") # TODO: needs _get_ace_error
include("services_models/transmission_interface.jl")
include("services_models/services_constructor.jl")
# Hybrid System Models (after services_models since they share reserve infrastructure)
include("hybrid_system_models/hybrid_systems.jl")
include("hybrid_system_models/hybridsystem_constructor.jl")
# Two-Terminal HVDC Models
# NOTE: AC_branches.jl and branch_constructor.jl in twoterminal_hvdc_models/ are
# identical copies of the files in ac_transmission_models/ — do NOT include them.
include("twoterminal_hvdc_models/TwoTerminalDC_branches.jl")
# Multi-Terminal HVDC Models
include("mt_hvdc_models/HVDCsystems.jl")
include("mt_hvdc_models/hvdcsystems_constructor.jl")
# HVDC Network Models
include("network_models/hvdc_networks.jl")
include("network_models/hvdc_network_constructor.jl")
# Area interchange
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")
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!
export add_to_objective_function!
export add_constraints!
export get_variable_multiplier
export get_expression_multiplier
export get_multiplier_value
export add_power_flow_data!
export get_initial_conditions_device_model
export add_reserve_variables!
#################################################################################
# Exports - Base Models
#################################################################################
export DecisionModel
export EmulationModel
export OperationsProblemTemplate
export InitialCondition
export OperationModel
# Network
export NetworkModel
# Model Container Types
export DeviceModel
export ServiceModel
export OptimizationContainer
# Initial Conditions Quantities
export DevicePower
export DeviceStatus
export InitialTimeDurationOn
export InitialTimeDurationOff
export InitialEnergyLevel
# Functions
export build!
export get_initial_conditions
export serialize_outputs
export serialize_optimization_model
export solve!
export run!
export set_device_model!
export set_service_model!
export set_network_model!
export get_network_formulation
export get_hvdc_network_model
export set_hvdc_network_model!
export validate_time_series!
export init_optimization_container!
export get_network_model
export get_value
export get_initial_conditions_data
export get_initial_condition_value
export get_objective_expression
export get_formulation
export TimeDurationOn
export TimeDurationOff
# Alias for InfrastructureSystems.Optimization needed by tests
export ISOPT
# Re-export TableFormat from InfrastructureSystems (via IOM)
export TableFormat
# Outputs interfaces
export get_variable_values
export get_dual_values
export get_parameter_values
export get_aux_variable_values
export get_expression_values
export get_timestamps
export get_system
export read_variable
export read_dual
export read_parameter
export read_aux_variable
export read_expression
export read_variables
export read_duals
export read_parameters
export read_aux_variables
export read_expressions
export get_problem_base_power
export get_objective_value
export read_optimizer_stats
# Utils
export OptimizationProblemOutputs
export OptimizationProblemOutputsExport
export OptimizerStats
export get_all_constraint_index
export get_all_variable_index
export get_constraint_index
export get_variable_index
export list_recorder_events
export jump_value
export ConstraintBounds
export VariableBounds
# Key Types
export VariableKey
export ConstraintKey
export ParameterKey
export ExpressionKey
export AuxVarKey
# Status Enums
export ModelBuildStatus
export RunStatus
export SimulationBuildStatus
# Problem Types
export DefaultDecisionProblem
export DefaultEmulationProblem
# Settings and Data Types
export Settings
export InitialConditionsData
# Constants
export COST_EPSILON
export INITIALIZATION_PROBLEM_HORIZON_COUNT
#################################################################################
# Exports - Variable Types (defined in core/variables.jl)
#################################################################################
# Power Variables
export ActivePowerVariable
export ActivePowerInVariable
export ActivePowerOutVariable
export ReactivePowerVariable
export PowerAboveMinimumVariable
# Status Variables
export OnVariable
export StartVariable
export StopVariable
export HotStartVariable
export WarmStartVariable
export ColdStartVariable
# Energy Variables
export EnergyVariable
# Reserve Variables
export ReservationVariable
export ActivePowerReserveVariable
export ServiceRequirementVariable
# Auxiliary Variables
export LiftVariable
# System Balance Variables
export SteadyStateFrequencyDeviation
export AreaMismatchVariable
export DeltaActivePowerUpVariable
export DeltaActivePowerDownVariable
export AdditionalDeltaActivePowerUpVariable
export AdditionalDeltaActivePowerDownVariable
export SmoothACE
export SystemBalanceSlackUp
export SystemBalanceSlackDown
export ReserveRequirementSlack
# Network Variables
export VoltageMagnitude
export VoltageAngle
export FlowActivePowerVariable
export FlowActivePowerSlackUpperBound
export FlowActivePowerSlackLowerBound
export FlowActivePowerFromToVariable
export FlowActivePowerToFromVariable
export FlowReactivePowerFromToVariable
export FlowReactivePowerToFromVariable
export PhaseShifterAngle
# Feedforward Slack Variables
export UpperBoundFeedForwardSlack
export LowerBoundFeedForwardSlack
export InterfaceFlowSlackUp
export InterfaceFlowSlackDown
# Cost Variables
export PiecewiseLinearCostVariable
# Rate Constraint Slack Variables
export RateofChangeConstraintSlackUp
export RateofChangeConstraintSlackDown
# Contingency Variables
export PostContingencyActivePowerChangeVariable
export PostContingencyActivePowerReserveDeploymentVariable
# HVDC Variables
export DCVoltage
export DCLineCurrent
export ConverterPowerDirection
export ConverterCurrent
export SquaredConverterCurrent
export InterpolationSquaredCurrentVariable
export InterpolationBinarySquaredCurrentVariable
export ConverterPositiveCurrent
export ConverterNegativeCurrent
export SquaredDCVoltage
export InterpolationSquaredVoltageVariable
export InterpolationBinarySquaredVoltageVariable
export AuxBilinearConverterVariable
export AuxBilinearSquaredConverterVariable
export InterpolationSquaredBilinearVariable
export InterpolationBinarySquaredBilinearVariable
export HVDCFlowDirectionVariable
export HVDCLosses
export ConverterDCPower
export ConverterCurrentDirection
# Load Variables
export ShiftUpActivePowerVariable
export ShiftDownActivePowerVariable
######## Hydro Formulations ########
export HydroDispatchRunOfRiver
export HydroDispatchRunOfRiverBudget
export HydroCommitmentRunOfRiver
export HydroWaterFactorModel
export HydroWaterModelReservoir
export HydroTurbineBilinearDispatch
export HydroTurbineWaterLinearDispatch
export HydroEnergyModelReservoir
export HydroTurbineEnergyDispatch
export HydroTurbineEnergyCommitment
export HydroPumpEnergyDispatch
export HydroPumpEnergyCommitment
######## Hydro Variables ########
export WaterSpillageVariable
export HydroEnergyShortageVariable
export HydroEnergySurplusVariable
export HydroWaterShortageVariable
export HydroWaterSurplusVariable
export HydroReservoirHeadVariable
export HydroReservoirVolumeVariable
export HydroTurbineFlowRateVariable
export HydroBalanceShortageVariable
export HydroBalanceSurplusVariable
export ActivePowerPumpVariable
######## Hydro Aux Variables ########
export HydroEnergyOutput
######## Hydro parameters #######
export EnergyTargetTimeSeriesParameter
export EnergyBudgetTimeSeriesParameter
export WaterTargetTimeSeriesParameter
export WaterBudgetTimeSeriesParameter
export InflowTimeSeriesParameter
export OutflowTimeSeriesParameter
export EnergyCapacityTimeSeriesParameter
export ReservoirTargetParameter
export ReservoirLimitParameter
export HydroUsageLimitParameter
export WaterLevelBudgetParameter
######## Hydro Initial Conditions #######
export InitialReservoirVolume
######## Hydro Constraints #######
export EnergyTargetConstraint
export WaterTargetConstraint
export ActivePowerPumpReservationConstraint
export ActivePowerPumpVariableLimitsConstraint
export EnergyCapacityTimeSeriesLimitsConstraint
export EnergyBudgetConstraint
export WaterBudgetConstraint
export ReservoirLevelLimitConstraint
export ReservoirLevelTargetConstraint
export TurbinePowerOutputConstraint
export ReservoirHeadToVolumeConstraint
export ReservoirInventoryConstraint
export FeedForwardWaterLevelBudgetConstraint
####### Hydro Expressions ########
export HydroServedReserveUpExpression
export HydroServedReserveDownExpression
export TotalHydroPowerReservoirIncoming
export TotalHydroPowerReservoirOutgoing
export TotalSpillagePowerReservoirIncoming
export TotalHydroFlowRateReservoirIncoming
export TotalHydroFlowRateReservoirOutgoing
export TotalSpillageFlowRateReservoirIncoming
export TotalHydroFlowRateTurbineOutgoing
######## Storage Formulations ########
export StorageDispatchWithReserves
# variables
export AncillaryServiceVariableDischarge
export AncillaryServiceVariableCharge
export StorageEnergyShortageVariable
export StorageEnergySurplusVariable
export StorageChargeCyclingSlackVariable
export StorageDischargeCyclingSlackVariable
export StorageRegularizationVariableCharge
export StorageRegularizationVariableDischarge
# aux variables
export StorageEnergyOutput
# constraints
export EnergyBalanceConstraint
export StateofChargeLimitsConstraint
export StateofChargeTargetConstraint
export StorageCyclingCharge
export StorageCyclingDischarge
export StorageRegularizationConstraintCharge
export StorageRegularizationConstraintDischarge
export ReserveCoverageConstraint
export ReserveCoverageConstraintEndOfPeriod
export ReserveCompleteCoverageConstraint
export ReserveCompleteCoverageConstraintEndOfPeriod
export StorageTotalReserveConstraint
export ReserveDischargeConstraint
export ReserveChargeConstraint
# expressions
export TotalReserveOffering
export ReserveAssignmentBalanceUpDischarge
export ReserveAssignmentBalanceUpCharge
export ReserveAssignmentBalanceDownDischarge
export ReserveAssignmentBalanceDownCharge
export ReserveDeploymentBalanceUpDischarge
export ReserveDeploymentBalanceUpCharge
export ReserveDeploymentBalanceDownDischarge
export ReserveDeploymentBalanceDownCharge
# parameters
export EnergyLimitParameter
export EnergyTargetParameter
######## Hybrid System Formulations ########
export AbstractHybridFormulation
export AbstractHybridFormulationWithReserves
export HybridDispatchWithReserves
# variables
export HybridChargingReserveVariable
export HybridDischargingReserveVariable
export HybridRenewableActivePower
export HybridRenewableReserveVariable
export HybridReserveVariableIn
export HybridReserveVariableOut
export HybridStorageChargePower
export HybridStorageDischargePower
export HybridStorageReservation
export HybridThermalActivePower
export HybridThermalReserveVariable
# expressions
export HybridServedReserveInDownExpression
export HybridServedReserveInUpExpression
export HybridServedReserveOutDownExpression
export HybridServedReserveOutUpExpression
export HybridTotalReserveInDownExpression
export HybridTotalReserveInUpExpression
export HybridTotalReserveOutDownExpression
export HybridTotalReserveOutUpExpression
# constraints
export HybridEnergyAssetBalanceConstraint
export HybridRenewableActivePowerLimitConstraint
export HybridRenewableReserveLimitConstraint
export HybridReserveAssignmentConstraint
export HybridReserveBalanceConstraint
export HybridStatusInOnConstraint
export HybridStatusOutOnConstraint
export HybridStorageBalanceConstraint
export HybridStorageChargingReservePowerLimitConstraint
export HybridStorageDischargingReservePowerLimitConstraint
export HybridStorageStatusChargeOnConstraint
export HybridStorageStatusDischargeOnConstraint
export HybridThermalOnVariableLbConstraint
export HybridThermalOnVariableUbConstraint
export HybridThermalReserveLimitConstraint
# parameters
export HybridElectricLoadTimeSeriesParameter
export HybridRenewableActivePowerTimeSeriesParameter
#################################################################################
# Exports - Constraint Types (defined in core/constraints.jl)
#################################################################################
export FlowRateConstraint
export FlowRateConstraintFromTo
export FlowRateConstraintToFrom
export FlowLimitConstraint
export FlowLimitFromToConstraint
export FlowLimitToFromConstraint
export ImportExportBudgetConstraint
export ActivePowerVariableLimitsConstraint
export InputActivePowerVariableLimitsConstraint
export ActivePowerVariableTimeSeriesLimitsConstraint
export ActivePowerOutVariableTimeSeriesLimitsConstraint
export ActivePowerInVariableTimeSeriesLimitsConstraint
export PiecewiseLinearBlockIncrementalOfferConstraint
export PiecewiseLinearBlockDecrementalOfferConstraint
export RampConstraint
export RampLimitConstraint
export CopperPlateBalanceConstraint
export ActiveRangeICConstraint
export NodalBalanceActiveConstraint
export RequirementConstraint
export DurationConstraint
export CommitmentConstraint
export StartTypeConstraint
export StartupTimeLimitTemperatureConstraint
export ShiftedActivePowerBalanceConstraint
export ShiftUpActivePowerVariableLimitsConstraint
export ShiftDownActivePowerVariableLimitsConstraint
export RealizedShiftedLoadMinimumBoundConstraint
export NonAnticipativityConstraint
#################################################################################
# Exports - Expression Types (defined in core/expressions.jl)
#################################################################################
export SystemBalanceExpressions
export RangeConstraintLBExpressions
export RangeConstraintUBExpressions
export CostExpressions
export ActivePowerBalance
export ReactivePowerBalance
export EmergencyUp
export EmergencyDown
export RawACE
export ProductionCostExpression
export FuelConsumptionExpression
export ActivePowerRangeExpressionLB
export ActivePowerRangeExpressionUB
export PostContingencyBranchFlow
export PostContingencyActivePowerGeneration
export PostContingencyActivePowerBalance
export NetActivePower
export DCCurrentBalance
export ComponentReserveUpBalanceExpression
export ComponentReserveDownBalanceExpression
export InterfaceTotalFlow
export PTDFBranchFlow
#################################################################################
# Exports - Parameter Types (defined in core/parameters.jl)
#################################################################################
export ActivePowerTimeSeriesParameter
export ActivePowerOutTimeSeriesParameter
export ActivePowerInTimeSeriesParameter
export ReactivePowerTimeSeriesParameter
export RequirementTimeSeriesParameter
export UpperBoundValueParameter
export LowerBoundValueParameter
export OnStatusParameter
# FixValueParameter: moved into IOM, re-exported via `using IOM`
#################################################################################
# Exports - Formulation Types (defined in core/formulations.jl)
#################################################################################
# Device Formulation Abstract Types
export AbstractDeviceFormulation
export AbstractThermalFormulation
export AbstractLoadFormulation
export AbstractRenewableFormulation
export AbstractBranchFormulation
# Thermal Formulations
export ThermalBasicUnitCommitment
export ThermalStandardUnitCommitment
export ThermalBasicDispatch
export ThermalStandardDispatch
export ThermalDispatchNoMin
export ThermalMultiStartUnitCommitment
export ThermalCompactUnitCommitment
export ThermalBasicCompactUnitCommitment
export ThermalCompactDispatch
export ThermalSecurityConstrainedStandardUnitCommitment
# Load Formulations
export StaticPowerLoad
export PowerLoadInterruption
export PowerLoadDispatch
export PowerLoadShift
# Renewable Formulations
export RenewableFullDispatch
export RenewableConstantPowerFactor
export RenewableSecurityConstrainedFullDispatch
# Source Formulations
export ImportExportSourceModel
# SynCons Formulations
export SynchronousCondenserBasicDispatch
# Branch Formulations
export StaticBranch
export StaticBranchBounds
export StaticBranchUnbounded
export PhaseAngleControl
# DC Branch Formulations
export HVDCTwoTerminalUnbounded
export HVDCTwoTerminalLossless
export HVDCTwoTerminalDispatch
export HVDCTwoTerminalPiecewiseLoss
export HVDCTwoTerminalLCC
# Converter Formulations
export LosslessConverter
export LinearLossConverter
export QuadraticLossConverter
# DC Line Formulations
export DCLosslessLine
export DCLossyLine
export LosslessLine
# HVDC Network Model Formulations
export AbstractHVDCNetworkModel
export TransportHVDCNetworkModel
export VoltageDispatchHVDCNetworkModel
# Service Formulations
export AbstractServiceFormulation
export AbstractReservesFormulation
export PIDSmoothACE
export GroupReserve
export RangeReserve
export RangeReserveWithDeliverabilityConstraints
export StepwiseCostReserve
export RampReserve
export NonSpinningReserve
export ConstantMaxInterfaceFlow
export VariableMaxInterfaceFlow
# Regulation Formulations
export ReserveLimitedRegulation
export DeviceLimitedRegulation
#################################################################################
# Exports - Network Formulation Types (defined in core/network_formulations.jl)
#################################################################################
# Power Model Abstract Type (from IS.Optimization)
export AbstractPowerModel
# Concrete Network Formulations
export AbstractPTDFModel
export PTDFPowerModel
export CopperPlatePowerModel
export AreaBalancePowerModel
export AreaPTDFPowerModel
# JuMP utilities
export optimizer_with_attributes
# PowerModels types (from embedded PM submodule)
export DCPPowerModel
export ACPPowerModel
export AbstractDCPModel
export AbstractACPModel
export AbstractActivePowerModel
export NFAPowerModel
# PowerNetworkMatrices
export PTDF
export VirtualPTDF
export LODF
export VirtualLODF
# Other utilities
export get_name
export get_model_base_power
export get_optimizer_stats
export get_resolution
export DynamicBranchRatingTimeSeriesParameter
end