Matlab and Simulink

Our primary computational platform will be Matlab and Simulink together with their toolboxes and blocksets. Namely, we will rely on the availability of the following toolboxes:

They are all included in the university-wide (campus-wide) license.

However, it is especially the optimization domain that abounds with third-party toolboxes, both commercial and free & open source, the former often offering free licenses for educational purpose. We will give tips on such tools in due course but those impatient can install the following toolboxes on their computers:

  • CVX - Matlab software for "disciplined programming" by Michael Grant and Steven Boyd from Stanford University. It allows the user to formulate the optimization problem pretty much in the format of a mathematical text.
  • SOSTOOLS - Matlab software for formulating and solving sum-of-squares type of an optimization problem.
  • Gurobi - a high-performance commercial solver for a wide class of optimization problems (LP, QP, QCQP, mixed, ...), free for academic purposes (upon registration). It is possible to call it from Matlab (and a few other languages).
  • Mosek - another high-performance commercial solver callable from Matlab. Academic version also exists.

Julia

For those who favor free & open source software, there is Julia programming language. If you have never heard of it, give it a try. After some ten years of development (initiated at MIT) it appears mature (in version  1.7.1 as of February 2022) with dozens of well-maintained packages related to our course (matrix computation, optimization, probability & statistics). We may use it in lectures to demonstrate some computational concept but its use by students is optional in the spring 2022 (we might find some more serious role for Julia in this course in future). Note that there is even a brand new course on Julia proposed at the university. Those who are eager to explore new tools should also check out the following additional packages:

  • JuMP - a framework for high-level (=closer to the way we write the problems down in mathematics) encoding/modelling of optimization problems. External numerical solvers are called and their results evaluated within this framework.
  • Convex - another framework for modeling optimization problems, here restricted to convex problems (from the authors of CVX for Matlab)
  • Symbolics - symbolic computation
  • Plots - obvious from the name
  • DifferentiaEquations - certainly by far the most developed tool for differential equations today (across all languages, including Matlab)
  • ControlSystems - sort-of-kind-of mimicking Control System Toolbox for Matlab.

Python

No doubt number one language in the increasingly popular domain of data science and machine learning. Quite some support for optimization exists, both native packages and wrappers for solvers developed in other languages (possibly even closed-source). We will not use Python in this course but if you are a devoted Python programmer, we could perhaps negotiate that you could use Python at least for some problems. Among the various possibilities how to install Python, one particularly suitable for developers focused on numerical computation is to use the Anaconda distribution. Whether or not you go for it, the following packages are necessary if you want to use Python for solving the problems presented in this course:

Naposledy změněno: sobota, 5. února 2022, 22.06