MatOpt is a package for facilitating the design of nanostructured materials via mathematical optimization. We provide features that can be grouped into two main contributions. First, we provide several objects for representing the nanostructured materials design space and for constructing data structures useful in generic optimization. Second, we provide a modeling framework for specifying material optimization problems and casting them as mixed integer linear programming optimization models.

We provide five case studies that can be modeled and solved by MatOpt. In each case, we provide a Jupyter notebook with explanation as well as an equivalent Python script.