Intro to Multicriteria Optimization
blog.sigopt.com
blog.sigopt.com
Eg if I have a complicated function revenue([A,B,C,D])
I can define obj([A,B,C,D]) = -1* revenue([A,B,C,D])
and use:
>>>import numpy as np
>>>from scipy.optimize import minimize
>>>X0 = np.array([1.5, 0.7, 1.2, 100])
>>>options={'xtol': 1e-4, 'disp': True})
>>>X* = minimize(obj, x0, method='nelder-mead', options)
http://docs.scipy.org/doc/scipy/reference/tutorial/optimize....You always have to reduce the problem to a scalar if you want a single answer.
I think the best methods to explore the Pareto frontier are based on the concepts of evolutionary computation like NSGA-II and SPEA-2:
https://en.wikipedia.org/wiki/Multi-objective_optimization#A...
We have a Jupyter notebook showing how SigOpt compares to several scipy.optimize methods as well as standard methods like grid/random on a simple non-convex problem here [1]. These results only get more striking as the dimensionality increases.
[1]: https://github.com/sigopt/sigopt-examples/blob/master/ipytho...
For this particular problem, which has only one input variable, yes the answer can be resolved with a good-old fashioned Plug-In-The-Answer strategy. For problems with more than one input variable, that will almost certainly not be the case.
Really, all I was trying to say there at the end is that converting the multicriteria problem to a constraint based problem has potential benefits over scalarization. Speaking only for myself, I always default to treating multicriteria problems in some sort of norm-scalarized sense: minimize ||g|| for some vector norm. I thought it was valuable to remind myself, and maybe others, that there are other ways to naturally rephrase multicriteria problems as scalar optimization problems. I'm definitely not saying anything about how easy it is to solve, as in general these constrained problems are going to be harder than the non-constrained linear (or norm) scalarization.
[1] http://www2.math.uni-wuppertal.de/~klamroth/publications/gop...
Now that I think about it, all of the methods I've ever seen for matrix-valued time series fits (i.e. multiple measurements at multiple sites per time point) are Bayesian. That's about the most irreducible constrained optimization problem I can think of in this setting.
More info on our research (and examples) can be found at https://sigopt.com/research
We do this in one sense within our company, but it's actually not within the context of a numerical multicriteria optimization problem. We are always trying to optimize around our customer's needs, which is in some ways a multicriteria problem involving balancing: 1) the "best" parameterization of a model subject to some (usually cross-validation) metric, 2) the "cost" (number of samples) required to optimize the model quality, 3) the "robustness" of (degree to which small parameter changes impact) the resulting solution, 4) the "parallel speed" (number of simultaneous suggestions) of the optimization process.
We consult with enterprise customers to understand their needs and expectations regarding these criteria to produce a sort of hierarchical ordering (as you've suggested) which helps inform our optimization procedure (maybe a customer doesn't care as much about speed but definitely cares about robustness). Obviously, it's a relatively restricted problem, and we're not considering it in a rigorous mathematical framework (just how best to serve our customers). Because these factors have no real numerical relationship, the only mechanism we can use to balance the concerns is a relative ordering, which is then manage internally. We spoke about this design at the ICML AutoML workshop this year (A Strategy for Ranking ... at https://sites.google.com/site/automl2016/accepted-papers)
Naive gradient descent is probably the simplest strategy that one can imagine. How do your algorithms compare to Newton methods for minimizing the primal-dual gap (interior point methods)?
[1]: https://github.com/sigopt/sigopt-examples/blob/master/ipytho...
> What are the bread and butter of combinatorial optimization? In other words, the concepts you would first come across, at an undergrad level if possible?
- Polyhedral combinatorics (Books: "Alexander Schrijver - Combinatorial Optimization: Polyhedra and Efficiency" (more focus on polyhedral combinatorics; IMHO the best book, but not the most approachable), "Bernhard Korte, Jens Vygen - Combinatorial Optimization: Theory and Algorithms" (more focus on algorithms; easier to read). This of course includes (mixed-)integer linear programming ((M)ILP).
- Of course learning about (M)ILPs means understanding linear programming (LP). Here I personally prefer "Alexander Schrijver - Theory of Linear and Integer Programming" (this books also covers ILP aspects, but not MILPs).
- Other books for learning about ILPs are "Dimitris Bertsimas, Robert Weismantel - Optimization Over Integers" (main focus is ILP, nevertheless a good book) and "Conforti, Cornuejols, Zambelli - Integer Programming". There are no really good books about MILPs that I know of, but these two books at least will cover some aspects of it.
- Sometimes semidefinite relaxations will occur (most famous example: Goemans-Williamson Algorithm; less famous, but also important: Lovasz-Schrijver hierarchy, Sherali-Adams hierarchy, Lasserre hierarchy)
Also, yeah, the "Alexander Schrijver - Theory of Linear and Integer Programming" reference is solid.
It comes from people from convex optimization trying to additionally apply some integrality conditions (a little bit as second-class citizen). On the other hand classical combinatorial optimization is integrality conditions as first-class citizen. I, coming from (M)ILP, would argue that the MINLP people coming from convex optimization tend to sidestep all the problems that make ILP so hard (and interesting). On the other hand MINLP people would equally vocally argue that the (M)ILP people tend to prefer "academic" problems and don't grasp how many important research questions they miss.
It's up to the reader to decide which side is right. :-)
My personal opinion in this "flamewar" is that if you come from a computer science background (in particular theoretical computer science) you will probably prefer classic MILP culture. On the other hand if you come from engineering you will probably prefer MINLP theory as outlined in Sven Leyffer's survey paper.
It is funny that you call gradient-based convex optimization a "sledgehammer" since people working in combinatorial optimization (opposed to ILP) tend to denote ILP methods (e.g. cutting plane algorithms, branch & bound, branch & cut, relaxation hierarchies, ...) also as a "sledgehammer". :-D They are just jealous. :-)
If I teach an undergrad course, I would model after Michel Goemans's course. http://www-math.mit.edu/~goemans/18433S15/18433.html I will also introduce some submodular functions(and touches submodular flow). It captures half of the things encountered in the course, and general and simple enough to be the first thing to try. For example, the following problem might be difficult if one tries to create an algorithm by modify the standard matching algorithms. However, one can easily show it is polynomial time solvable by proving some submodular property.
http://cstheory.stackexchange.com/questions/20245/subset-of-...
It seems straightforward to order those vectors by first comparing the first component, then the second, then the third. The result is u,v,w. It's as if you wanted to sort a multi-column report in Excel. What am I missing?
let's say you were optimizing something to be pretty A, delicious B, soft C.
you tune the system and evaluate the prettiness, deliciousness and softness.
you tuned it several times and got three products (A, B, C) of (1,2,3), (2,1,3), (3,2,1) - concrete values are correct evaluations. how exactly do you choose the best one, is prettiness more important?
pareto efficiency come to mind - also discussed in the article. [1]
If such an ordering did exist, then we could certainly apply that ordering to sort results from the vector objective function so as to find the "answer" to the multicriteria problem. The Wikipedia article on multiobjective optimization discusses this strategy: https://en.wikipedia.org/wiki/Multi-objective_optimization#A.... On that note, lemme throw a shout out to the wonderful person who took the time to write that Wikipedia article - it is outstanding.
Given that, such an ordering may not be appropriate in all circumstances. Sorting objective vectors from the function suggested in this post would first sort by "time to destination" and then break ties in "time to destination" with "cost of trip". That would mean that (1, 1000) < (1.0000001, 2), but I think most people would be willing to arrive 0.0000001 hours later to save 998 dollars. The flexibility in interpreting the vector objective and making tradeoffs is why the standard lexicographic ordering is not always appropriate.
Does that help?
Unfortunately, if you don't know how your model behaves, you can't tell when you're setting γ whether you're actually going to get a solution that's way past the point of diminishing returns. You may not even be able to tell after the fact. This is one of the reasons for doing sensitivity analysis on γ. (Your ε-constraint scalarization helps with this problem.)
Do you happen to have any references talking about such sensitivity analysis on scalarization parameters? I would love to add them to my reading list. Thanks.
How would you order the complex numbers?
You can use any order that can be defined on R^2. It's just that you can show that this order cannot satisfy the axioms of an ordered field.
https://medium.com/@justchap/using-the-pythagorean-theorem-t...
As is suggested there, though, implementing this no-preference strategy requires some clean rescaling of the component functions in order to yield equal significance for all of them. If you have such a rescaling, that's outstanding; however, as I suggested in the section of the article dealing with the impact of the choice of currency, rescaling a problem may be a difficult proposition. This is especially true for problems that aren't as simple as the toy problem I've proposed here.