12

I have a convex polytope defined by $Ax \leq b$. I want to know how to find the "analytic center" of my convex polytope, because my goal is to sample from the polytope using Markov chain Monte Carlo (MCMC) methods, and it mixes better if i start from the analytic center.

One way to find the "center" would be to find all the vertices of my convex polytope and then take an average of all the vertices. However, the number of vertices scale combinatorially with the dimension of my polytope, and and in terms of run-time, this is not a feasible approach.

I am wondering if there are any other good definitions of "analytic center" of my convex polytope defined by $Ax \leq b$. I am also looking for algorithms that are computationally feasible.

Andy Yao
  • 508
  • What is your definition of "analytic center"? There are several possible definitions for a "center" of a convex polytope, including the average of the vertices as well as the literal center-of-mass expressed in terms of integrals over the polytope. Furthermore, even with a good definition of "center", it's still possible that your polytope is, in vague terms, "long and thin," in which case standard MCMC will still take a while to mix because you'll keep running into the sides of the polytope. Maybe it doesn't really matter where you start, at least, asymptotically. – user2566092 Jul 28 '15 at 20:44
  • @user2566092 Thanks a lot for your response! I am currently using a Dikin walk, and according to some of the papers I've read, if I begin at an "analytic center" it mixes strongly in polynomial time. Do you perhaps have an idea of which center this could be? Thank you! – Andy Yao Jul 28 '15 at 20:47
  • @AndyYao, does this help: [Kojima1998][1] They talk about finding the analytical centre by minimizing the logarithmic potential function (i.e. -sum_log(Ax-b)). [1]: http://theory.stanford.edu/~megiddo/pdf/kmm4fin.pdf – Mihir Aug 04 '15 at 19:00
  • 1
    Boyd and Vandenberghe's book Convex Optimization defines the analytic center of a set of convex inequalities and linear equalities in Sec. 8.5.3. It is equivalent to the definition in Mihir's comment. Note that two different sets of inequalities that define the same polytope can have different analytic centers. –  Aug 06 '15 at 08:05
  • Do you agree with my edits? – Rodrigo de Azevedo Feb 24 '23 at 10:42

3 Answers3

4

I think your best bet is to formulate your problem as a linear program that finds the Chebyshev center of a polyhedron.

By finding the Chebyshev center of the polyhedron, you try to find the largest hyper-sphere that fits inside the convex hull of the vertices. And, the center of this hyper-sphere can be defined as the center of your polytope.

Take a look at slide 4-19 here:

http://stanford.edu/class/ee364a/lectures/problems.pdf

This problem is surprisingly interesting, because it can be converted to a simple linear program, which can be efficiently solved.

Note that this solution is not necessarily unique, and in particular if the polytope is "thin", then "the center" will be less meaningful. (I.e., you may want to add extra constraints to the optimization program, or change the objective to account for that as well.)

I hope this helps.

user541686
  • 14,298
Alt
  • 2,640
3

The current answer is not addressing the original question. The analytic center of the polytope is defined for a polytope $a_i^T x\leq b_i \,\,\forall i\,$ as the point minimizing the sum of log-barriers of the constraints:

$$\hat{x} = \text{arg}\min_x -\sum_{i} \log \left( b_i - a_i^T x \right)$$

The analytic center is more complex to find than the Chebyshev center (it's a convex nonlinear optimization problem) but it produces more robust results. It has been used in the literature for discrete optimization as the center of reference of the feasible set.

It has a connection to interior point methods, this is the point where the central path starts.

Mathieu B
  • 133
0

This is the simplest solution I can think of; although I admit it is clunky, only provides an approximation, and I have not proved it will work every time, but suspect it should as long as (Ax=b) forms a bounded set; however, this is what I could think of. I would be happy to see a nicer solution. Also for clarity I will define the analytic center the point inside a polygon that maximizes the product of distances to the sides.

First I will assume that you may use an approximate analytic center rather than the exact value. If this is the case then the analytic center can be approximated by using a minimization technique (For example gradient decent or momentum or a better method) to solve for

$$argmin_{c} \ (-f(c))$$

where $c$ and $f(c)$ are defined below.

Let $c = \left(\begin{array}{c} c_{1} \\ c_{2}\\.\\.\\.\\c_{m}\end{array}\right)$ be a guess for current center

(If unknown c must at very least be a location inside of the polygon, otherwise the problem will be unbounded otherwise one of the above optimization techniques will cause the problem to diverge)

Now, you are going to want the maximum possible distances possible, so rather than thinking of $Ax \le b$ I will be using $Ax = b$ (otherwise any feasible point $x_{feasible}$ would have the property that $\prod x_{feasible_{i}} =0$)

$Ax = b \Leftrightarrow \left( \begin{array}{l} a_{11}x_{1}+a_{12}x_{2}+...+a_{1n}x_{n}\\ a_{21}x_{1}+a_{22}x_{2}+...+a_{2n}x_{n}\\ .\\ .\\ .\\ a_{m1}x_{1}+a_{m2}x_{2}+...+a_{mn}x_{n}\\ \end{array}\right) = \left(\begin{array}{c} b_{1}\\ b_{2}\\ .\\ .\\ .\\ b_{m}\\ \end{array}\right)$

which is the same as saying

$\left( \begin{array}{c} a_{11}x_{1}+a_{12}x_{2}+...+a_{1n}x_{n} = b_{1}\\ a_{21}x_{1}+a_{22}x_{2}+...+a_{2n}x_{n} = b_{2}\\ .\\ .\\ .\\ a_{m1}x_{1}+a_{m2}x_{2}+...+a_{mn}x_{n} = b_{m}\\ \end{array}\right)$

which is really just a bunch of plains, so calculating the distance to each plane I can use

$p = \left(\begin{array}{c} (x_{1_{1_{p}}}, x_{2_{1_{p}}}, ..., x_{n_{1_{p}}})\\ (x_{1_{2_{p}}}, x_{2_{2_{p}}}, ..., x_{n_{2_{p}}})\\ .\\ .\\ .\\ (x_{1_{m_{p}}}, x_{2_{m_{p}}}, ..., x_{n_{m_{p}}})\\ \end{array}\right)$ and $\hat{n} = \left( \begin{array}{c} (a_{11}, a_{12}, ..., a_{1n})^{T} (a_{21}, a_{22}, ..., a_{2n})^{T} . . . (a_{m1}, a_{m2}, ..., a_{mn})^{T} \end{array} \right)$

where $p_{i}$ is a point on plain $i$ and $\hat{n}_{i}$ is a perpendicular vector to plain $i$ then the distance from c to each plain is

(using 1 norm for simplicity since the denominator will be a constant in this case)

$\displaystyle d_{i} = \frac{(c-p_{i})\cdot \hat{n}_{i}}{|\hat{n}_{i}|} = \frac{c_{1}\hat{n}_{i_{1}}+c_{2}\hat{n}_{i_{2}}+...+x_{m}\hat{n}_{i_{m}}-d_{i}}{|a_{i1}|+|a_{i2}|+...+|a_{in}|}$

that is

$d = \left( \begin{array}{c} d_{1}\\ d_{2}\\ .\\ .\\ .\\ d_{m}\\ \end{array}\right) = \left( \begin{array}{c} \frac{\displaystyle a_{11}c_{1}+a_{12}c_{2}+...+a_{1n}c_{n}}{\displaystyle |a_{11}|+|a_{12}|+...+|a_{1n}|}\\ \frac{\displaystyle a_{21}c_{1}+a_{22}c_{2}+...+a_{2n}c_{n}}{\displaystyle |a_{21}|+|a_{22}|+...+|a_{2n}|}\\ .\\ .\\ .\\ \frac{\displaystyle a_{m1}c_{1}+a_{m2}c_{2}+...+a_{mn}c_{n}}{\displaystyle |a_{m1}|+|a_{m2}|+...+|a_{mn}|}\\ \end{array}\right)$

Then I can define $\displaystyle f(c) = \prod_{i=1}^{m} d_{i}$

https://www.khanacademy.org/math/linear-algebra/vectors-and-spaces/dot-cross-products/v/point-distance-to-plane

explains how to find the distance between a single plane and a vector.