BLOM Project

Abstract/Project Description

We have a number of projects related to our under-development Matlab/Simulink toolbox called BLOM (Berkeley Library for Optimization Modeling). For more information about BLOM, please check out the following webpage:

Project 1: Undergrad or Master's level, strong programming skills required
We are currently working on a re-implementation of BLOM to learn from the mistakes of the initial version and create a toolbox that is more efficient, easier to debug, and easier to expand feature wise. 

What you would do is to help us develop this second iteration of BLOM. There's a lot to be done and your responsibility can grow as you become more proficient in understanding the program and adding code to it.

Project 2: Undergrad level
We would like to add an interface between BLOM and several building automation system databases, using measurement data to create simulation inputs for BLOM modeling, optimization, and uncertainty quantification.

This interface would take a description of the measurement signals' locations in one of several database formats, and a mapping from those locations to signal names in a BLOM model.

Project 3: Master's level
BLOM is currently designed for nominal MPC. This project involves extending the capabilities and user interface to handle stochastic MPC with uncertain predictions. This will require algorithm development for uncertainty propagation over nonlinear implicit dynamic models, along with user interface and data format standardization to flag and quantify input uncertainties (with a connection to Project 2).

Project 4: Undergrad level
BLOM can currently use the IPOPT solver, or fmincon or linprog from the Matlab optimization toolbox. This project is to develop drivers for additional optimization solver formats such as AMPL, Yalmip, GAMS, etc. This will allow us to benchmark and compare the performance of different optimization solvers and gradient calculation methods on a standard BLOM optimization problem formulation.


Recommended Coursework: E7 and Math 54 required. It is recommended to have taken E177, ME132. Additional skills in optimization, controls, and/or MPC are recommended for undergrad level projects, required for master's level.

Required Skills: Matlab (all), Simulink (projects 1,2)

Recommended Skills: SVN, C/C++, optimization

Hours per week: 10+

Length of Project: 1 Semester +, can be expanded to be a longer project