Optimization Software

Engineering Optimization Software is a type of programming that is used to optimize the design of products and services. It helps engineers design products faster, cheaper, and more efficiently.

Optimization software is used to identify and implement the best solution to a given engineering problem out of all potential possibilities. It can be used to optimize the design and manufacturing processes of products, as well as to reduce costs, improve performance, and better meet customer requirements. Engineering Optimization Software can also be used to identify areas of improvement and to develop and test new designs.

Engineering Tools

There are many software tools available to solve optimization problems ranging from free and open-source to proprietary commercial packages. In general, students want to choose a software platform that will be both state-of-the-art and accessible long-term. Solving optimization problems requires some familiarity with a computer programming language. Some of the popular programming languages (see TIOBE index) also include capabilities for scientific computing.

Optimization Software

Information on APMonitor, GEKKO, MATLAB, OptdesX, and Python is listed below. Assignments and projects can be completed with any software platform.


APMonitor

The APMonitor Modeling Language is optimization software for differential and algebraic equations. It is coupled with large-scale nonlinear programming solvers for data reconciliation, real-time optimization, dynamic simulation, and nonlinear predictive control. It is available as a web service through an internet browser or as an add-in package to MATLAB or Python programming languages.


GEKKO (Python)

The GEKKO Optimization Suite is software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP). Modes of operation include data reconciliation, real-time optimization, dynamic simulation, and nonlinear predictive control. GEKKO is an object-oriented python library to facilitate local execution of APMonitor. See 18 Example problems in Python GEKKO.


MATLAB

MATLAB allows mathematical operations, plotting, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, Fortran, and Java. A number of optimization tools are available in the Optimization Toolbox. An additional package, Simulink, adds graphical simulation and design for dynamic systems. MATLAB users come from engineering, science, and economics in both academic research and industrial applications. MATLAB is available through the following methods:

  1. Download MATLAB from software.byu.edu for installation on a personal computer
  2. BYU Citrix logon with a BYU CAEDM account
  3. BYU RGS servers with a BYU CAEDM account

Please note that Citrix and RGS perform computing on shared servers with performance that can be less desirable at times of high loading. The most reliable route is to download MATLAB on a personal computer.


OptdesX

The OptdesX software was developed at BYU. It contains some of the best algorithms still in use for constrained nonlinear optimization, including the algorithms in Excel and Matlab. We use OptdesX as a learning tool and we can get inside the code and see what the algorithms are doing, which we cannot do with other software. We can also look at gradients, which are very useful in understanding scaling and in developing robust designs. OptdesX is available through CAEDM Linux workstations or through remote logon to shared servers.


Python

Python is a high-level and general-purpose programming language and is a top choice for programmers (Google search). Part of the reason that it is a popular choice for scientists and engineers is the language versatility, online community of users, and powerful analysis packages such as Numpy and Scipy. This course uses Python 3. Python is free and open-source and is easy to install with Anaconda (IPython, Jupyter, Spyder), PyCharm, or the Python.org distributions.