Auction Algorithm: Difference between revisions
Andrewgracyk (talk | contribs) No edit summary |
m (Removed protection from "Auction Algorithm") |
||
(62 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
The auction algorithm<ref name="Peyré and Cuturi" /> is an algorithm in optimal transport in which a set of buyers exchange goods for varied prices until an eventual equilibrium is reached. It is an iterative approach. The algorithm pertains to the discrete formulation of optimal transport, as well as provides a connection to the dual problem. The algorithm is useful in the field of economics because of its ability to find an equilibrium. The algorithm was invented by Bertsekas<ref name="Bertsekas" />, but it was eventually updated. | The auction algorithm<ref name="Peyré and Cuturi"/> is an algorithm in optimal transport in which a set of buyers exchange goods for varied prices until an eventual equilibrium is reached. It is an iterative approach. The algorithm pertains to the discrete formulation of optimal transport, as well as provides a connection to the dual problem. The algorithm is useful in the field of economics<ref name="Santambrogio"/> because of its ability to find an equilibrium. The algorithm was invented by Bertsekas<ref name="Bertsekas"/>, but it was eventually updated. | ||
== The Assignment Problem == | == The Assignment Problem == | ||
It is necessary to introduce the assignment problem because it applies a context in which we may apply our algorithm to find such an optimal equilibrium. Suppose we have both <math> N </math> buyers as well as <math> N </math> goods. We introduce <math> a_{ij} </math> to quantify the notion of some sort of utility, benefit, or happiness the buyer receives from their corresponding good. The assignment problem therefore seeks a way to maximize <math> \sum_i a_{i \sigma(i)} </math>, i.e., we hope to maximize the total utility. Note this is different from maximizing the utility of a particular buyer, because we seek to benefit the whole group the most. We use the index <math> i </math> to denote a particular buyer we use the second index <math> j = \sigma(i) </math> to denote the good, where <math> \sigma </math> is some permutation of the goods among all of the buyers. A final thing to note is that the assignment of people to goods is one-to-one, i.e. there is one distinct good for every distinct buyer. | It is necessary to introduce the assignment problem<ref name="Santambrogio"/> because it applies a context in which we may apply our algorithm to find such an optimal equilibrium. Suppose we have both <math> N </math> buyers as well as <math> N </math> goods. We introduce <math> a_{ij} </math> to quantify the notion of some sort of utility, benefit, or happiness the buyer receives from their corresponding good. The assignment problem therefore seeks a way to maximize <math> \sum_i a_{i \sigma(i)} </math>, i.e., we hope to maximize the total utility. Note this is different from maximizing the utility of a particular buyer, because we seek to benefit the whole group the most. We use the index <math> i </math> to denote a particular buyer we use the second index <math> j = \sigma(i) </math> to denote the good, where <math> \sigma </math> is some permutation of the goods among all of the buyers. A final thing to note is that the assignment of people to goods is one-to-one, i.e. there is one distinct good for every distinct buyer. | ||
We've established what the aim of the assignment problem is, but we have yet to establish a sense of equilibrium that the auction algorithm hopes to achieve. First, we must define a price system | We've established what the aim of the assignment problem is, but we have yet to establish a sense of equilibrium that the auction algorithm hopes to achieve. First, we must define a price system. We say that a good <math> j </math> has price <math> p_j </math>, which can be rewritten <math> p = (p_j)_j </math>. Next, we define the equilibrium condition. The equilibrium is that all buyers are content with their purchases if | ||
<math> a_{i\sigma(i)} - p_{\sigma(i)} = \max_{j = 1,...,N} \{ a_{ij} - p_j \} \ \ \ \ \ \ \ \ \ \ (*) </math> | <math display="block"> a_{i\sigma(i)} - p_{\sigma(i)} = \max_{j = 1,...,N} \{ a_{ij} - p_j \} \ \ \ \ \ \ \ \ \ \ (*) </math> | ||
is satisfied. | is satisfied. It is important to note that the absolute value is not taken. If the absolute value is taken, then it is possible for the system to be in equilibrium when each buyer has the worst possible good, and <math> \sum_i a_{i \sigma(i)} </math> fails to be maximized. Now, another common way to say that the system is in equilibrium is that all of the buyers are "happy." Notationally, we say <math> (p, \sigma) </math> is an equilibrium. If this is an equilibrium, then <math> \sigma </math> is an optimal assignment, and <math> p </math> is optimal in the dual problem. | ||
== The Algorithm == | == The Algorithm == | ||
The algorithm starts from an arbitrary arrangement of buyers and goods. It does not matter to the algorithm who begins with what good. Denote this arbitrary arrangement with the prices and good permutation as <math> (p_0, \sigma_0) </math>. The algorithm acts with iterations, and once all buyers satisfy the "happy" condition, our algorithm is done. The algorithm is as follows: | The algorithm<ref name="Santambrogio"/> starts from an arbitrary arrangement of buyers and goods. It does not matter to the algorithm who begins with what good. Denote this arbitrary arrangement with the prices and good permutation as <math> (p_0, \sigma_0) </math>. The algorithm acts with iterations, and once all buyers satisfy the "happy" condition, our algorithm is done. The algorithm is as follows: | ||
*First, find a particular buyer. We will call this buyer <math> i^* </math>. We will only choose a buyer such that <math> (*) </math> does not hold. The buyer then finds the good maximizing the difference their personal utility and the price, i.e. <math> \max_{j = 1,...,N} \{ a_{i^* j} - p_j \} </math>. This buyer exchanges their good with this other buyer that originally held this good. Denote this new good <math> j^* </math>. | *First, find a particular buyer. We will call this buyer <math> i^* </math>. We will only choose a buyer such that <math> (*) </math> does not hold. The buyer then finds the good maximizing the difference between their personal utility and the price, i.e. <math> \max_{j = 1,...,N} \{ a_{i^* j} - p_j \} </math>. This buyer exchanges their good with this other buyer that originally held this other good. Denote this new good <math> j^* </math>. | ||
*This buyer that just purchased the good maximizing their utility is going to increase the price of this new good by some amount <math> \gamma_i </math> until this buyer is indifferent between object <math> j^* </math> and the second best option. Mathematically, we say <math> a_{i^* j^*} - p_{j^*} = \max_{j \neq j^*} \{a_{i^* j} - p_j \} </math>. | |||
Our iterative procedure continues until each buyer satisfies the "happy" condition. | |||
== <math> \epsilon-</math>Complementary Slackness == | |||
One problem with the algorithm is the possibility that it never ends, i.e. it iterates indefinitely. To fix such a problem, we introduce a scalar <math> \epsilon > 0 </math> and we alter our condition <math> (*) </math> so that the buyer is within a tolerance of being content with their purchase. Such names for this are <math> \epsilon-</math>happy or "almost happy." Specifically, we alter <math> (*) </math> by saying | |||
<math display="block"> a_{i\sigma(i)} - p_{\sigma(i)} \geq \max_{j = 1,...,N} \{ a_{ij} - p_j \} - \epsilon. </math> | |||
Another name for the above condition is <math> \epsilon-</math>complementary slackness<ref name="Bertsekas"/>. It may be necessary to modify the value for <math> \epsilon </math> so that convergence of the algorithm is reached at a desirable rate. The algorithm maintains <math> \epsilon-</math>complementary slackness at each iteration<ref name="Peyré and Cuturi"/>. | |||
== Relations with Optimal Transport == | |||
The auction algorithm has applications in optimal transport<ref name="Bertsekas"/>, mostly by extending situations in optimal transport to where the assignment problem applies. Converting optimal transport scenarios to the assignment problem gives us the opportunity to apply the auction algorithm to find a solution. Something to note is that this idea mostly applies to linear optimal transport problems. One area in which this idea can be done is network optimization problems<ref name="Bertsekas"/>. Shortest path and max-flow problems can be converted into assignment problems, giving the auction algorithm a chance to offer a solution. A second area is transportation problems, and another is minimum cost flow problems. A final area is convex separable network optimization problems. | |||
Allow us to provide an example of how the assignment problem and the auction algorithm have applications in optimal transport<ref name="Peyré and Cuturi"/> . Define two discrete measures by | |||
<math display="block"> \alpha = \sum_{i=1}^n (a_i)(\delta_{x_i}), \ \ \ \ \beta = \sum_{i=j}^n (b_i)(\delta_{y_j}) </math> | |||
where <math> a_i </math> and <math> b_j </math> denote two sets of weights and <math> \delta_{x_i} </math> and <math> \delta_{y_j} </math> denote the Dirac function evaluated at certain locations (i.e., infinitely large at such position and trivial elsewhere). We seek a map that translocates the mass <math> \alpha </math> to the mass <math> \beta </math>, where each point associated with the mass <math> \alpha </math> is tied to a point for <math> \beta </math>. From this, we may apply the assignment problem. There exists a permutation <math> \sigma </math> that associates each location for one mass with the other. We must find a permutation such that a cost function is minimized, i.e., | |||
<math display="block"> \min_{T} \bigg\{ \sum_i c(x_i, T(x_i)) : T\# \alpha = \beta \bigg\} </math> | |||
where <math> c(x,y) </math> is a cost function and <math> T\# \alpha = \beta </math> denotes the map transferring the masses spread across locations in <math> \alpha </math> to those in <math> \beta </math>. The reason this map can be interpreted as a permutation is because the masses are constructed from a discrete number of points. Note that this minimization problem is analogous to our utility maximization problem previously discussed. | |||
Line 28: | Line 56: | ||
<ref name="Bertsekas">[https://www.mit.edu/~dimitrib/Auction_Encycl.pdf D.P. Bertsekas, ''Auction Algorithms'', Laboratory for Information and Decision Systems.]</ref> | <ref name="Bertsekas">[https://www.mit.edu/~dimitrib/Auction_Encycl.pdf D.P. Bertsekas, ''Auction Algorithms'', Laboratory for Information and Decision Systems.]</ref> | ||
<ref name="Santambrogio">[https://link-springer-com.proxy.library.ucsb.edu:9443/content/pdf/10.1007%2F978-3-319-20828-2.pdf F. Santambrogio, ''Optimal Transport in Applied Mathematics'', Chapter 1, 6.]</ref> | <ref name="Santambrogio">[https://link-springer-com.proxy.library.ucsb.edu:9443/content/pdf/10.1007%2F978-3-319-20828-2.pdf F. Santambrogio, ''Optimal Transport in Applied Mathematics'', Chapter 1, 6.]</ref> | ||
<ref name="Peyré and Cuturi">[https://arxiv.org/pdf/1803.00567.pdf G. Peyré and M. Cuturi, ''Computational Optimal Transport'', Chapter 3.]</ref> | <ref name="Peyré and Cuturi">[https://arxiv.org/pdf/1803.00567.pdf G. Peyré and M. Cuturi, ''Computational Optimal Transport'', Chapter 2, 3.]</ref> | ||
</references> | </references> |
Latest revision as of 04:37, 28 February 2022
The auction algorithm[1] is an algorithm in optimal transport in which a set of buyers exchange goods for varied prices until an eventual equilibrium is reached. It is an iterative approach. The algorithm pertains to the discrete formulation of optimal transport, as well as provides a connection to the dual problem. The algorithm is useful in the field of economics[2] because of its ability to find an equilibrium. The algorithm was invented by Bertsekas[3], but it was eventually updated.
The Assignment Problem
It is necessary to introduce the assignment problem[2] because it applies a context in which we may apply our algorithm to find such an optimal equilibrium. Suppose we have both buyers as well as goods. We introduce to quantify the notion of some sort of utility, benefit, or happiness the buyer receives from their corresponding good. The assignment problem therefore seeks a way to maximize , i.e., we hope to maximize the total utility. Note this is different from maximizing the utility of a particular buyer, because we seek to benefit the whole group the most. We use the index to denote a particular buyer we use the second index to denote the good, where is some permutation of the goods among all of the buyers. A final thing to note is that the assignment of people to goods is one-to-one, i.e. there is one distinct good for every distinct buyer.
We've established what the aim of the assignment problem is, but we have yet to establish a sense of equilibrium that the auction algorithm hopes to achieve. First, we must define a price system. We say that a good has price , which can be rewritten . Next, we define the equilibrium condition. The equilibrium is that all buyers are content with their purchases if
is satisfied. It is important to note that the absolute value is not taken. If the absolute value is taken, then it is possible for the system to be in equilibrium when each buyer has the worst possible good, and fails to be maximized. Now, another common way to say that the system is in equilibrium is that all of the buyers are "happy." Notationally, we say is an equilibrium. If this is an equilibrium, then is an optimal assignment, and is optimal in the dual problem.
The Algorithm
The algorithm[2] starts from an arbitrary arrangement of buyers and goods. It does not matter to the algorithm who begins with what good. Denote this arbitrary arrangement with the prices and good permutation as . The algorithm acts with iterations, and once all buyers satisfy the "happy" condition, our algorithm is done. The algorithm is as follows:
- First, find a particular buyer. We will call this buyer . We will only choose a buyer such that does not hold. The buyer then finds the good maximizing the difference between their personal utility and the price, i.e. . This buyer exchanges their good with this other buyer that originally held this other good. Denote this new good .
- This buyer that just purchased the good maximizing their utility is going to increase the price of this new good by some amount until this buyer is indifferent between object and the second best option. Mathematically, we say .
Our iterative procedure continues until each buyer satisfies the "happy" condition.
Complementary Slackness
One problem with the algorithm is the possibility that it never ends, i.e. it iterates indefinitely. To fix such a problem, we introduce a scalar and we alter our condition so that the buyer is within a tolerance of being content with their purchase. Such names for this are happy or "almost happy." Specifically, we alter by saying
Relations with Optimal Transport
The auction algorithm has applications in optimal transport[3], mostly by extending situations in optimal transport to where the assignment problem applies. Converting optimal transport scenarios to the assignment problem gives us the opportunity to apply the auction algorithm to find a solution. Something to note is that this idea mostly applies to linear optimal transport problems. One area in which this idea can be done is network optimization problems[3]. Shortest path and max-flow problems can be converted into assignment problems, giving the auction algorithm a chance to offer a solution. A second area is transportation problems, and another is minimum cost flow problems. A final area is convex separable network optimization problems.
Allow us to provide an example of how the assignment problem and the auction algorithm have applications in optimal transport[1] . Define two discrete measures by
where and denote two sets of weights and and denote the Dirac function evaluated at certain locations (i.e., infinitely large at such position and trivial elsewhere). We seek a map that translocates the mass to the mass , where each point associated with the mass is tied to a point for . From this, we may apply the assignment problem. There exists a permutation that associates each location for one mass with the other. We must find a permutation such that a cost function is minimized, i.e.,
where is a cost function and denotes the map transferring the masses spread across locations in to those in . The reason this map can be interpreted as a permutation is because the masses are constructed from a discrete number of points. Note that this minimization problem is analogous to our utility maximization problem previously discussed.