Planning
PyEPlan provides a unified Investment and Operation Planning module (inosys) that addresses both long-term capacity expansion decisions and short-term dispatch optimization in a single optimization framework using mixed-integer linear programming (MILP).
Unified Investment and Operation Planning
The inosys module combines investment and operation planning in a single optimization problem, allowing for comprehensive microgrid analysis that considers both long-term investment decisions and short-term operational constraints simultaneously.
Mathematical Formulation
The unified planning problem is formulated as a mixed-integer linear programming (MILP) model:
Objective Function:
Minimize total system cost = Investment costs + Operation costs + Shedding costs
Where:
Investment costs = Capital costs for generators, storage, and renewables
Operation costs = Fuel costs + Variable O&M costs + Grid exchange costs
Shedding costs = Demand shedding + Renewable curtailment costs
Constraints:
Power Balance: Active and reactive power balance at each bus
Generator Constraints: Capacity limits, ramping constraints for conventional generators
Renewable Constraints: Maximum available power from solar and wind
Storage Constraints: Charge/discharge limits, state of charge constraints
Network Constraints: Line capacity limits, voltage limits
Investment Constraints: Binary variables for technology selection
Operational Constraints: Minimum up/down times, start-up costs
Key Features
Technology Selection: Optimal choice of renewable generators, energy storage, and conventional units
Capacity Sizing: Determination of optimal installed capacity for each technology
Geographic Siting: Optimal placement of generation and storage facilities
Economic Dispatch: Optimal power generation scheduling
Storage Management: Optimal charge/discharge scheduling with state of charge tracking
Demand Management: Load shedding and renewable curtailment optimization
Network Integration: Power flow and voltage constraints
Scenario Analysis: Handling of uncertainty through representative days
Usage Example
from pyeplan import inosys
# Initialize investment and operation planning system
planning_system = inosys(
inp_folder="input_folder",
ref_bus=0,
dshed_cost=1000000, # High cost to discourage load shedding
rshed_cost=500, # Cost for renewable curtailment
phase=3, # Three-phase system
vmin=0.85, # Minimum voltage limit
vmax=1.15, # Maximum voltage limit
sbase=1, # Base apparent power
sc_fa=1 # Scaling factor
)
# Solve the unified optimization problem
planning_system.solve(
solver='glpk', # Optimization solver
neos=False, # Not using NEOS server
invest=True, # Include investment decisions
onlyopr=False, # Not operation-only mode
commit=False, # Not committing to NEOS
solemail='', # Solver email (for NEOS)
verbose=False # Verbose output
)
# Get optimization results
costs = planning_system.resCost()
wind_results = planning_system.resWind()
battery_results = planning_system.resBat()
solar_results = planning_system.resSolar()
conventional_results = planning_system.resConv()
curtailment_results = planning_system.resCurt()
Supported Technologies
Conventional Generators:
Diesel generators
Gas turbines
Combined heat and power (CHP) units
Grid connection (import/export)
Renewable Energy Sources:
Solar photovoltaic (PV) systems
Wind turbines
Hybrid renewable systems
Energy Storage:
Battery energy storage systems (BESS)
Pumped hydro storage
Thermal storage
Network Components:
Distribution lines and cables
Transformers
Switchgear and protection devices
Optimization Modes
Investment and Operation Mode (invest=True, onlyopr=False):
Optimizes both investment decisions and operational dispatch
Determines optimal technology mix and sizing
Provides comprehensive cost analysis
Operation-Only Mode (invest=False, onlyopr=True):
Optimizes only operational dispatch for existing infrastructure
Useful for operational analysis and cost assessment
Faster computation for large systems
Investment-Only Mode (invest=True, onlyopr=False with simplified operational constraints):
Focuses on long-term investment decisions
Uses simplified operational representation
Suitable for strategic planning
Solver Options
PyEPlan supports multiple optimization solvers through Pyomo:
Open-Source Solvers:
GLPK (GNU Linear Programming Kit) - Default
CBC (COIN-OR Branch and Cut)
IPOPT (Interior Point Optimizer)
Commercial Solvers:
Gurobi
CPLEX
MOSEK
Solver Selection Guidelines:
GLPK: Good for small to medium problems
CBC: Better for larger MILP problems
Gurobi/CPLEX: Best performance for large-scale problems
IPOPT: Suitable for continuous optimization problems
Results Analysis
The optimization results provide comprehensive information about:
Cost Analysis:
Total system cost breakdown
Investment costs by technology
Operational costs by component
Levelized cost of energy (LCOE)
Technology Mix:
Optimal installed capacity
Technology selection decisions
Geographic distribution
Operational Performance:
Hourly dispatch schedules
Storage state of charge profiles
Network power flows
Voltage profiles
Reliability Metrics:
Loss of load probability
Energy not served
System adequacy indicators
Integration with Other Modules
The planning module integrates seamlessly with other PyEPlan modules:
Data Processing Integration:
Uses representative days from datsys module
Incorporates renewable generation profiles
Handles load demand scenarios
Network Integration:
Incorporates network topology from rousys module
Considers line parameters and constraints
Optimizes power flow distribution
This integrated approach ensures that all aspects of microgrid planning are considered in a unified optimization framework, leading to more robust and cost-effective solutions.