# Multiparametric programming

**URL:** https://discourse.julialang.org/t/multiparametric-programming/1316
**Category:** Optimization (Mathematical)
**Created:** [January 5, 2017, 9:51pm UTC](https://discourse.julialang.org/t/multiparametric-programming/1316 "2017-01-05T21:51:19Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)
#### Post date: [January 5, 2017, 9:51pm UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/1 "2017-01-05T21:51:19Z")

</div>

Hi all,

Has there been any work on multiparametric programming in Julia? I’m starting to look into it for my own research, and it would be nice to build on any existing work there might be. Googling around and looking inside JuliaOpt has not turned up anything so far.

Cheers,  
Robin

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [January 7, 2017, 2:31pm UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/2 "2017-01-07T14:31:29Z")

</div>

I am not the guy who is gonna answer your question because I probably don’t have the expertise in your field. But you could add links to what you meant by “multiparametric programming” so that other people can help.

---

<div class="post-metadata">

### Author: ![tkelman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkelman/32/692_2.png) [@tkelman](https://discourse.julialang.org/u/tkelman)
#### Post date: [January 7, 2017, 3:06pm UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/3 "2017-01-07T15:06:40Z")

</div>

See [Parametric programming - Wikipedia](https://en.wikipedia.org/wiki/Parametric_programming) and [https://application.wiley-vch.de/books/sample/3527316914\_c01.pdf](https://application.wiley-vch.de/books/sample/3527316914_c01.pdf). In linear or convex-quadratic constrained optimization problems, if the linear coefficients of the objective function and/or the right-hand-side of the constraints are linear functions of some parameter vector, you can enumerate all the possible optimal active sets and express the optimal solution (w.r.t. the parameter vector) as a piecewise-affine function over polyhedral regions. It’s a really neat application of computational geometry, reducing the solutions to a whole parametric family of optimization problems to a lookup table.

I’m not sure whether there’s any mature Julia package for doing this yet, but many of the pieces that you’d need have been put together in [https://github.com/JuliaPolyhedra](https://github.com/JuliaPolyhedra) (cc @blegat if he’s on discourse, also @joehuchette’s [GitHub - joehuchette/PiecewiseLinearOpt.jl: Solve optimization problems containing piecewise linear functions](https://github.com/joehuchette/PiecewiseLinearOpt.jl) may be related / useful). The standard tool for multiparametric programming is the Matlab toolbox MPT [MPT3 Wiki | Main / HomePage](http://people.ee.ethz.ch/~mpt/3/), but the computationally demanding part is calls into cddlib and related computational geometry operations that there are now Julia wrappers for.

---

<div class="post-metadata">

### Author: ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)
#### Post date: [January 9, 2017, 1:39am UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/4 "2017-01-09T01:39:13Z")

</div>

Thanks @tkelman! I’ll post back here if I end up with anything worth sharing.

---

<div class="post-metadata">

### Author: ![blegat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blegat/32/217090_2.png) [@blegat](https://discourse.julialang.org/u/blegat)
#### Post date: [February 27, 2017, 5:35pm UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/5 "2017-02-27T17:35:06Z")

</div>

@rdeits Anything worth sharing yet ? I am currently looking into Model Predictive Control 😛

---

<div class="post-metadata">

### Author: ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)
#### Post date: [December 14, 2017, 7:35pm UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/6 "2017-12-14T19:35:27Z")

</div>

For the record, I ended up implementing the basic stuff myself in ExplicitQPs.jl. It’s unregistered and undocumented since it’s only used in my current research code, but it at least has some tests that illustrate what’s possible: [https://github.com/rdeits/ExplicitQPs.jl/blob/master/test/runtests.jl](https://github.com/rdeits/ExplicitQPs.jl/blob/master/test/runtests.jl)

---

<div class="post-metadata">

### Author: ![airpmb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/airpmb/32/7826_2.png) [@airpmb](https://discourse.julialang.org/u/airpmb)
#### Post date: [July 23, 2018, 1:53am UTC](https://discourse.julialang.org/t/multiparametric-programming/1316/7 "2018-07-23T01:53:31Z")

</div>

Apologies for the necro-post but hopefully it’s helpful. I created a section for MPT3 in the _Julia for MATLAB Users_ wiki that I’m putting together. I’m watching this thread and will add more resources posted here but it’s a wiki so don’t hesitate to go ahead and edit it yourself! 🙂

[https://en.wikibooks.org/wiki/Julia\_for\_MATLAB\_Users/Index#The\_Multi-Parametric\_Toolbox\_(MPT)](https://en.wikibooks.org/wiki/Julia_for_MATLAB_Users/Index#The_Multi-Parametric_Toolbox_(MPT))
