Julia Workshop at ACC 2017

Julia Language 

Control Engineering in Julia:

Modelling, Control Design and Optimization

When and where?

Tuesday, May 23, 2017, 8:30am - 12:30pm, at the 2017 American Control Conference.

Location: Sheraton Seattle Hotel, Seattle, WA, USA.


Madeleine Udell, Cornell University, USA

Mikael Johansson, KTH Royal Institute of Technology, Sweden

Cristian R. Rojas, KTH Royal Institute of Technology, Sweden


Julia is a recent high-level, high-performance, free and open-source programming language for technical computing. It has a syntax similar to other technical computing environments and possesses a number of very attractive features for the control and optimization communities: its sophisticated compiler results in run-times comparable to C, it has native support for distributed parallel execution, it includes an extensive mathematical function library, and can be executed stand-alone, in a powerful browser-based graphical notebook interface (IJulia) or in a network-based environment which does not require any local installation (JuliaBox). In addition, the Julia developer community is contributing a number of external packages through Julia’s built-in package manager at a rapid pace.

Over the last years, several Julia packages have been developed to complement the work of control engineers. These include several toolboxes for convex and nonconvex optimization, automatic differentiation, simulation of ordinary differential equations and noncausal models, statistics, machine learning, data-driven modeling and control. Many of these tools have reached a good level of maturity, so now is an appropriate time for the broader control community to learn about them, benefit from them, and eventually contribute to their further development.

This workshop is being organized for the purpose of disseminating and promoting the Julia language and several of its control and optimization-related packages to those who work in control theory, education and applications. Many of the talks will be hands-on, in order to provide the audience with a real, interactive Julia experience. Participants from industry and teachers may find Julia to be a powerful and solid alternative to commercial software. Those who do research in control and identification theory will acknowledge that the open platforms developed for these disciplines can provide a attractive means of developing and promoting their own research, by contributing to these packages with their new algorithms.

Target audience

Anybody with an interest in exploring the possibilities of a new, open source programming environment, either for education, use in industry or promotion of new algorithms. In particular, due to the great possibilities of Julia and its package ecosystem, we expect participants from industry, teachers and researchers, who may find these recently developed software tools to be very useful for their daily work.

What do you need for the workshop?

A laptop or tablet with internet connection, and a Google,Linkedin or GitHub account (to access JuliaBox).


Arda Aytekin

Arda Aytekin was born in 1986. He received B.Sc. degrees in Mechanical Engineering (2009) and Control Engineering (2010) from Istanbul Technical University. After obtaining his M.Sc. degree in Mechanical Engineering from Koc University (2013), he joined the Department of Automatic Control, KTH Royal Institute of Technology, Stockholm for his Ph.D. studies. His research interest is in asynchronous parallel algorithms in convex optimization.

Chris Coey

Chris Coey is a second-year PhD student at the Operations Research Center at MIT. Pajarito solver is joint work with his adviser Juan Pablo Vielma and fifth-year ORC student Miles Lubin.

Niklas Everitt

Niklas Everitt was born in 1987. He received the M.Sc. degree in Engineering Physics in 2012 from Lund University. Since 2012 he is pursuing his Ph.D. degree at he Department of Automatic Control, KTH Royal Institute of Technology, Stockholm. His research interest are in the areas of system identification and machine learning.

Mikael Johansson

Mikael Johansson earned the M.Sc. and Ph.D. in Electrical Engineering from Lund University, Sweden, in 1994 and 1999, respectively. He held postdoctoral research positions at Stanford University and UC Berkeley before joining KTH in 2002, where he now serves as a full professor. His research interests are in distributed optimization, wireless networking, and control. He has published several ISI-highly cited papers, has served on the editorial board of Automatica and on the program committee for conferences such as IEEE CDC, IEEE Infocom, ACM SenSys.

Cristian R. Rojas

Cristian R. Rojas was born in 1980. He received the M.S. degree in electronics engineering from the Universidad Técnica Federico Santa María, Valparaíso, Chile, in 2004, and the Ph.D. degree in electrical engineering at The University of Newcastle, NSW, Australia, in 2008. Since October 2008, he has been with the Royal Institute of Technology, Stockholm, Sweden, where he is currently Associate Professor of the Automatic Control Lab, School of Electrical Engineering. His research interests lie in system identification and signal processing. Dr. Rojas is a member of IEEE since 2013, and of the IFAC Technical Committee TC1.1. on Modelling, Identification, and Signal Processing since 2013. He is Associate Editor for the IFAC journal Automatica and for the IEEE Control Systems Letters.

Zachary Sunberg

Zachary Sunberg is a PhD Candidate in the department of Aeronautics and Astronautics at Stanford University, with Bachelor and Masters degrees from the department of Aerospace Engineering at Texas A&M University. His research focuses on solving large decision and control problems and managing safety in the face of uncertainty to enable autonomous vehicle operation. Among the potential applications that he has studied are autonomous emergency helicopter landing, navigation and collision avoidance for unmanned aerial vehicles, space situational awareness, and intention-aware decision making for driverless cars.

Madeleine Udell

Madeleine Udell is Assistant Professor of Operations Research and Information Engineering and Richard and Sybil Smith Sesquicentennial Fellow at Cornell University. She studies optimization and machine learning for large scale data analysis and control, with applications in marketing, demographic modeling, medical informatics, and engineering system design. Her recent work on generalized low rank models (GLRMs) extends principal components analysis (PCA) to embed tabular data sets with heterogeneous (numerical, Boolean, categorical, and ordinal) types into a low dimensional space, providing a coherent framework for compressing, denoising, and imputing missing entries. She has developed a number of open source libraries for modeling and solving optimization problems, including Convex.jl, one of the top ten tools in the new Julia language for technical computing, and is a member of the JuliaOpt organization, which curates high quality optimization software.


Workshop attendees should register on the conference registration site.


8:30-9:30 Tutorial on Julia

9:30-10:30 Control and identification toolboxes

10:30-11:30 Optimization in Julia

11:30-12:30 Research talks

Description of the talks

Tutorial on Julia

Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments such as Python and Matlab. Julia combines the simplicity of Python with a more sophisticated compiler and many small improvements that make the platform easier to use and better suited for numerical computation. Unlike many scientific computing environments, Julia is free and open source with performance that approaches C.

In this tutorial, we will cover some of essential features of the language, with an emphasis on development tools such as Jupyter/IJulia and JuliaBox. Previous experience with technical computing tools such as Matlab, SciLab, Octave, Python or R is preferred, but not required.

Control and identification toolboxes

In this talk, we will introduce newly developed toolboxes for efficient control and identification with the Julia language, called SystemsBase, ControlToolbox and IdentificationToolbox. These toolboxes are free, open source platforms constructed not only for final end users and practitioners, but also so that researchers in the field can easily implement their own control and identification techniques and attach them to the platform, thus facilitating the benchmarking, testing and promotion of reproducible research. The presentation will be in the form of a hands-on tutorial, where participants will go through examples of these tools.

Optimization in Julia

Convex.jl is a convex optimization modeling framework in Julia. Convex.jl makes it easy to describe optimization problems in a natural, mathematical syntax, and to solve those problems using a variety of different (commercial and open-source) solvers, allowing users to experiment with different formulations of an optimization problem. Convex.jl translates problems from a user-friendly functional language into an abstract syntax tree describing the problem. This concise representation of the global structure of the problem allows Convex.jl to infer whether the problem complies with the rules of disciplined convex programming (DCP), and to pass the problem to a suitable solver. We will give an overview of how Convex.jl works, and demonstrate its use in a few advanced applications.

Research talks

Several presentations will be given about ongoing software developments around the Julia environment on topics of interest for the control community. These talks include:

Pajarito Solver for Mixed-Integer Convex Optimization

Pajarito is a mixed-integer convex programming (MICP) solver package written in Julia and integrated with the JuliaOpt ecosystem. MICP problems are convex except for restrictions that some variables take binary or integer values, and as such MICP is a very rich problem class with many applications in engineering and control. Pajarito supports both mixed-integer conic programming, which encodes nonlinearities using a small set of predefined cones, and more traditional convex mixed-integer nonlinear programming, which encodes nonlinearities with smooth functions and uses their derivatives. Computational results support our claim that Pajarito is the fastest open-source mixed-integer convex solver. The algorithm solves MICP problems to provable optimality by constructing sequential lifted polyhedral outer-approximations of the convex feasible set to leverage the power of state-of-the-art MILP solvers. Pajarito currently supports MICPs with any mixture of second-order, exponential, and positive semidefinite cones, and is easily extensible to other types of nonlinearities. Using motivating examples relevant to control, such as mixed-integer sum of squares optimization for trajectory planning, we will cover how to model MICPs using JuMP.jl and Convex.jl, and how to find optimal solutions using Pajarito.

POMDPs.jl: a unified interface for POMDPs

The partially observable Markov decision process (POMDP) is a principled and flexible mathematical formalism for representing sequential decision problems. In a POMDP, a decision-making agent attempts to maximize the reward collected by choosing actions to manipulate the state. The agent cannot directly observe the state, but must instead make decisions based only on observations stochastically generated by the state. Though solving this class of problems is generally very difficult, a variety of approximate solution techniques have been developed. POMDPs.jl leverages the unique features of Julia to provide a rich but simple and unified interface for expressing POMDPs, applying a variety of existing solution techniques, and developing and testing new techniques in a computationally efficient way.


All the material of the workshop (presentation slides and iJulia notebooks) is available on GitHub at https://github.com/JuliaSystems/ACC-2017. You can run the iJulia notebooks either via JuliaBox or by installing Julia on your own computer.

Via JuliaBox:

  • Go to https://www.juliabox.com/ and login in with either a LinkedIn, GitHub or Google account

  • Navigate to the “Sync” tab above

  • Enter “https://github.com/JuliaSystems/ACC-2017.git” in the “Git Clone URL” field

  • Press <TAB> to auto-complete the other fields (“Branch” and “JuliaBox Folder”)

  • Click on + under “Action”

  • Navigate to the “Jupyter” tab, and click on the “ACC-2017” folder to access the workshop notebook files.

In your own computer:

More information on how to use iJulia/Jupyter is available here.