Inspiration

OSESMO was born out of the California Public Commission's SGIP Working Group, which is evaluating options to ensure that behind-the-meter storage and solar-plus-storage systems are reducing GHG emissions. This is a project I've been working on for about three months.

What It Does

OSESMO is an optimal-dispatch storage simulation model that calculates the maximum achievable customer savings possible when performing time-of-use energy charge arbitrage, demand charge management, and solar self-consumption. It is also capable of co-optimizing for GHG emissions reduction.

How We Built It

The prototype version of OSESMO was built in MATLAB prior to SunCode. At SunCode, we focused on translating the code into Python to make it more accessible. Translating it to Python also could make it possible to create a web app interface with Flask or Django.

Challenges We Ran Into

Our group was fairly inexperienced with Python, and the prototype model is several thousand lines of code long. As a result, we were only able to translate about 30% of the model code. We also were not able to make progress on developing a web-app front-end, beyond a simple mockup created with R's Shiny package also developed prior to SunCode.

Accomplishments That We're Proud Of

We successfully translated all of the function scripts associated with importing load profile, PV production, retail rate, and emissions rate datasets, which represent a substantial portion of the codebase. We also researched optimization-package options for solving large, sparse linear programs, and began setting the problem up using the PuLP package.

What We Learned

This project served as a useful refresher on Python and algebraic optimization modeling.

What's Next for OSESMO

We hope to continue working on translating OSESMO to Python, with today's work session serving as a great first step. We are still very interested in creating a web-app interface and hosting it online. Please let us know if you would be interested in assisting with this effort - we would very much appreciate your help.

Built With

Share this project:

Updates