Skip to content

AO Site Analysis


AO Site Analysis is designed to allow rapid estimates of valuation of utility scale solar, wind and batteries on a given site. It is focused on a single site where there is potentially an onsite load, a grid connection for buying and selling, traditional onsite generators, and existing renewable generators.



Projects represent the current state of a site.

  • Site location
  • Existing generators/renewables
  • Grid connection, TOU rates
  • Financial information


Scenarios represent a form of analysis to run.

Sensitivity Analysis

A primary component of scenarios is sensitivity analysis. This allows you to easily run scenarios for a variety of inputs in multiple scenario runs.

Scenario Runs

Scenario runs are an instatiation of a scenario run on a project.


Creating a Project

Creating a Scenario

Scenarios require advanced configuration to setup properly. Often AO will setup the initial scenarios to fill the primary workflow. These scenarios can then be copied and modified to allow for individual customization by end users.

Running Scenarios

Scenarios can be run on a specific project to create a scenario run. Scenario runs will create a context object that copies all of the details of the project and scenario so that the inputs are fixed and the run repeatable.



AO Site Analysis leverages an open source toolkit PyPSA to model common power system components. We extend this toolkit to include important components such as TOU Demand Charges. PyPSA calls Pyomo under the hood, which is an algebraic modeling language for python. This is used to model the optimization problem, and handle the interaction with an optimization solver, such as Gurobi or CPLEX.

Visit Awesome Power Analysis repository to learn about more tools in power analysis.

Mixed Integer Program

PyPSA helps create a Mixed Integer Program (MIP) that models the site for a given year on an hourly time basis. It is a deterministic model with perfect foresight and will give a best case scenario for operation of energy storage. The model will attempt to find feasible solutions within the constraints given and then minimize the objective function.


Variables are used to model decisions and operation of assets within the site. Binary variables can be used for whether an asset is built or not, or wether it is operating in any given time period. Continuous variables are used to model things such as the output level of a generator.

Objective Function

The objective function includes costs for energy charges, demand charges, capital costs for building, and other related charges.


The constraints ensure energy is conserved, generators and storage operate within their limits, and potentially other constraints such as environmental ones.


Creating a Lookup Table for Energy Storage

  1. Ensure you have a Mine Site project created with at least load data and TOU Rates.

  2. Copy a PyPSA Scenario to create modifications.

    Howto: Copy a scenario

  3. Rename your scenario.

  4. Adjust parameter sensitivities.

    Howto: Parameter sensitivites

  5. Run scenario

    Howto: Run a scenario on a project

  6. View run group

    Howto: Navigate from individual run

    Howto: Filter scenario runs

    Keeping track of your run group is helpful until we improve some user interface aspects.

    You can enter your groupId in the query string to filter the scenario runs.

  7. Graph Data [Optional]

    Howto: Graph data

  8. Export data needed

    Howto: Export data

    Ensure the important data fields are including in export.

    Export data fields

    Export columns Power, duration for battery size information

    Export column Array Capacity, Tracking for solar array capacity

    Export columns Annual Electricity Cost, Annual Demand Charge, Annual Energy Charge

    Export other columns as needed

  9. Load into excel, create lookup table.