Skip to content

[von-neumann] Adjust RST for whitespace in preparation for tomyst #151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Oct 19, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 105 additions & 97 deletions source/rst/von_neumann_model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ formulated an equilibrium model of price and quantity vectors in
balanced growth, this lecture shows how fruitfully to employ the
following important tools:

- a zero-sum two-player game
- a zero-sum two-player game

- linear programming
- linear programming

- the Perron-Frobenius theorem
- the Perron-Frobenius theorem

We'll begin with some imports:

Expand Down Expand Up @@ -353,35 +353,35 @@ Model Ingredients and Assumptions
A pair :math:`(A,B)` of :math:`m\times n` non-negative matrices defines
an economy.

- :math:`m` is the number of *activities* (or sectors)
- :math:`m` is the number of *activities* (or sectors)

- :math:`n` is the number of *goods* (produced and/or consumed).
- :math:`n` is the number of *goods* (produced and/or consumed).

- :math:`A` is called the *input matrix*; :math:`a_{i,j}` denotes the
amount of good :math:`j` consumed by activity :math:`i`
- :math:`A` is called the *input matrix*; :math:`a_{i,j}` denotes the
amount of good :math:`j` consumed by activity :math:`i`

- :math:`B` is called the *output matrix*; :math:`b_{i,j}` represents
the amount of good :math:`j` produced by activity :math:`i`
- :math:`B` is called the *output matrix*; :math:`b_{i,j}` represents
the amount of good :math:`j` produced by activity :math:`i`

Two key assumptions restrict economy :math:`(A,B)`:

- **Assumption I:** (every good that is consumed is also produced)

.. math:: b_{.,j} > \mathbf{0}\hspace{5mm}\forall j=1,2,\dots,n
.. math:: b_{.,j} > \mathbf{0}\hspace{5mm}\forall j=1,2,\dots,n

- **Assumption II:** (no free lunch)

.. math:: a_{i,.} > \mathbf{0}\hspace{5mm}\forall i=1,2,\dots,m
.. math:: a_{i,.} > \mathbf{0}\hspace{5mm}\forall i=1,2,\dots,m

A semi-positive *intensity* :math:`m`-vector :math:`x` denotes levels at which
activities are operated.

Therefore,

- vector :math:`x^TA` gives the total amount of *goods used in
production*
- vector :math:`x^TA` gives the total amount of *goods used in
production*

- vector :math:`x^TB` gives *total outputs*
- vector :math:`x^TB` gives *total outputs*

An economy :math:`(A,B)` is said to be *productive*, if there exists a
non-negative intensity vector :math:`x \geq 0` such
Expand All @@ -392,9 +392,9 @@ the :math:`n` goods.

The :math:`p` vector implies *cost* and *revenue* vectors

- the vector :math:`Ap` tells *costs* of the vector of activities
- the vector :math:`Ap` tells *costs* of the vector of activities

- the vector :math:`Bp` tells *revenues* from the vector of activities
- the vector :math:`Bp` tells *revenues* from the vector of activities

Satisfaction or a property of an input-output pair :math:`(A,B)` called *irreducibility*
(or indecomposability) determines whether an economy can be decomposed
Expand Down Expand Up @@ -477,9 +477,9 @@ These timing conventions imply the following feasibility condition:

.. math::

\begin{aligned}
x^T_{t}B \geq x^T_{t+1} A \hspace{1cm}\forall t\geq 1
\end{aligned}
\begin{aligned}
x^T_{t}B \geq x^T_{t+1} A \hspace{1cm}\forall t\geq 1
\end{aligned}

which asserts that no more goods can be used today than were produced
yesterday.
Expand Down Expand Up @@ -537,10 +537,11 @@ the economy:
and a number :math:`\alpha\in\mathbb{R}` that satisfy

.. math::
\begin{aligned}
&\max_{\alpha} \hspace{2mm} \alpha\\
&\text{s.t. }\hspace{2mm}x^T B \geq \alpha x^T A
\end{aligned}

\begin{aligned}
&\max_{\alpha} \hspace{2mm} \alpha\\
&\text{s.t. }\hspace{2mm}x^T B \geq \alpha x^T A
\end{aligned}

Theorem 9.3 of David Gale’s book :cite:`gale1989theory` asserts that if Assumptions I and II are
both satisfied, then a maximum value of :math:`\alpha` exists and that it is
Expand All @@ -555,10 +556,11 @@ by :math:`\alpha_0`. The associated intensity vector :math:`x_0` is the
and a number :math:`\beta\in\mathbb{R}` that satisfy

.. math::
\begin{aligned}
&\min_{\beta} \hspace{2mm} \beta\\
&\text{s.t. }\hspace{2mm}Bp \leq \beta Ap
\end{aligned}

\begin{aligned}
&\min_{\beta} \hspace{2mm} \beta\\
&\text{s.t. }\hspace{2mm}Bp \leq \beta Ap
\end{aligned}

Assumptions I and II imply existence of a minimum value
:math:`\beta_0>0` called the *economic expansion rate*.
Expand Down Expand Up @@ -591,11 +593,11 @@ following arbitrage true

.. math::

\begin{aligned}
x_0^T B &\geq \gamma^{* } x_0^T A \\
Bp_0 &\leq \gamma^{* } Ap_0 \\
x_0^T\left(B-\gamma^{* } A\right)p_0 &= 0
\end{aligned}
\begin{aligned}
x_0^T B &\geq \gamma^{* } x_0^T A \\
Bp_0 &\leq \gamma^{* } Ap_0 \\
x_0^T\left(B-\gamma^{* } A\right)p_0 &= 0
\end{aligned}

..

Expand Down Expand Up @@ -659,18 +661,19 @@ with the entries representing payoffs from the **minimizing** column
player to the **maximizing** row player and assume that the players can
use mixed strategies. Thus,

* the row player chooses the :math:`m`-vector :math:`x > \mathbf{0}` subject to :math:`\iota_m^T x = 1`
* the column player chooses the :math:`n`-vector :math:`p > \mathbf{0}` subject to :math:`\iota_n^T p = 1`.
* the row player chooses the :math:`m`-vector :math:`x > \mathbf{0}` subject to :math:`\iota_m^T x = 1`

* the column player chooses the :math:`n`-vector :math:`p > \mathbf{0}` subject to :math:`\iota_n^T p = 1`.

**Definition:** The :math:`m\times n` matrix game :math:`C` has the
*solution* :math:`(x^*, p^*, V(C))` in mixed strategies if

.. math::
\begin{aligned}
(x^* )^T C e^j \geq V(C)\quad \forall j\in\{1, \dots, n\}\quad \quad
\text{and}\quad\quad (e^i)^T C p^* \leq V(C)\quad \forall i\in\{1, \dots, m\}
\end{aligned}

\begin{aligned}
(x^* )^T C e^j \geq V(C)\quad \forall j\in\{1, \dots, n\}\quad \quad
\text{and}\quad\quad (e^i)^T C p^* \leq V(C)\quad \forall i\in\{1, \dots, m\}
\end{aligned}

The number :math:`V(C)` is called the *value* of the game.

Expand All @@ -693,7 +696,8 @@ zero-sum game.
Moreover, von Neumann’s Minmax Theorem :cite:`neumann1928theorie` implies that

.. math::
V(C) = \max_x \min_p \hspace{2mm} x^T C p = \min_p \max_x \hspace{2mm} x^T C p = (x^*)^T C p^*

V(C) = \max_x \min_p \hspace{2mm} x^T C p = \min_p \max_x \hspace{2mm} x^T C p = (x^*)^T C p^*



Expand All @@ -703,33 +707,35 @@ Connection with Linear Programming (LP)
Nash equilibria of a finite two-player zero-sum game solve a linear programming problem.

To see this, we introduce
the following notation
* For a fixed :math:`x`, let :math:`v` be the value of the minimization problem: :math:`v \equiv \min_p x^T C p = \min_j x^T C e^j`
* For a fixed :math:`p`, let :math:`u` be the value of the maximization problem: :math:`u \equiv \max_x x^T C p = \max_i (e^i)^T C p`
the following notation

* For a fixed :math:`x`, let :math:`v` be the value of the minimization problem: :math:`v \equiv \min_p x^T C p = \min_j x^T C e^j`

* For a fixed :math:`p`, let :math:`u` be the value of the maximization problem: :math:`u \equiv \max_x x^T C p = \max_i (e^i)^T C p`

Then the *max-min problem* (the game from the maximizing player’s point
of view) can be written as the *primal* LP

.. math::
\begin{aligned}
V(C) = & \max \hspace{2mm} v \\
\text{s.t. } \hspace{2mm} v \iota_n^T &\leq x^T C \\
x &\geq \mathbf{0} \\
\iota_n^T x & = 1
\end{aligned}

\begin{aligned}
V(C) = & \max \hspace{2mm} v \\
\text{s.t. } \hspace{2mm} v \iota_n^T &\leq x^T C \\
x &\geq \mathbf{0} \\
\iota_n^T x & = 1
\end{aligned}

while the *min-max problem* (the game from the minimizing player’s point
of view) is the *dual* LP

.. math::
\begin{aligned}
V(C) = &\min \hspace{2mm} u \\
\text{s.t. } \hspace{2mm}u \iota_m &\geq Cp \\
p &\geq \mathbf{0} \\
\iota_m^T p & = 1
\end{aligned}

\begin{aligned}
V(C) = &\min \hspace{2mm} u \\
\text{s.t. } \hspace{2mm}u \iota_m &\geq Cp \\
p &\geq \mathbf{0} \\
\iota_m^T p & = 1
\end{aligned}


Hamburger, Thompson and Weil :cite:`hamburger1967computation` view the input-output pair of the
Expand Down Expand Up @@ -761,21 +767,22 @@ zero-sum game, we define a matrix for :math:`\gamma\in\mathbb{R}`
For fixed :math:`\gamma`, treating :math:`M(\gamma)` as a matrix game,
calculating the solution of the game implies

- If :math:`\gamma > \alpha_0`, then for all :math:`x>0`, there
:math:`\exists j\in\{1, \dots, n\}`, s.t.
:math:`[x^T M(\gamma)]_j < 0` implying
that :math:`V(M(\gamma)) < 0`.
- If :math:`\gamma < \beta_0`, then for all :math:`p>0`, there
:math:`\exists i\in\{1, \dots, m\}`, s.t.
:math:`[M(\gamma)p]_i > 0` implying that :math:`V(M(\gamma)) > 0`.
- If :math:`\gamma \in \{\beta_0, \alpha_0\}`, then (by Theorem I) the
optimal intensity and price vectors :math:`x_0` and :math:`p_0`
satisfy
- If :math:`\gamma > \alpha_0`, then for all :math:`x>0`, there
:math:`\exists j\in\{1, \dots, n\}`, s.t.
:math:`[x^T M(\gamma)]_j < 0` implying
that :math:`V(M(\gamma)) < 0`.
- If :math:`\gamma < \beta_0`, then for all :math:`p>0`, there
:math:`\exists i\in\{1, \dots, m\}`, s.t.
:math:`[M(\gamma)p]_i > 0` implying that :math:`V(M(\gamma)) > 0`.
- If :math:`\gamma \in \{\beta_0, \alpha_0\}`, then (by Theorem I) the
optimal intensity and price vectors :math:`x_0` and :math:`p_0`
satisfy

.. math::
\begin{aligned}
x_0^T M(\gamma) \geq \mathbf{0}^T \quad \quad \text{and}\quad\quad M(\gamma) p_0 \leq \mathbf{0}
\end{aligned}

\begin{aligned}
x_0^T M(\gamma) \geq \mathbf{0}^T \quad \quad \text{and}\quad\quad M(\gamma) p_0 \leq \mathbf{0}
\end{aligned}

That is, :math:`(x_0, p_0, 0)` is a solution of the game
:math:`M(\gamma)` so
Expand Down Expand Up @@ -854,30 +861,29 @@ Step 2

Compute :math:`\alpha_0` and :math:`\beta_0`

- Finding :math:`\alpha_0`

1. Fix :math:`\gamma = \frac{UB + LB}{2}` and compute the solution
of the two-player zero-sum game associated
with :math:`M(\gamma)`. We can use either the primal or the dual
LP problem.
2. If :math:`V(M(\gamma)) \geq 0`, then set :math:`LB = \gamma`,
otherwise let :math:`UB = \gamma`.
3. Iterate on 1. and 2. until :math:`|UB - LB| < \epsilon`.
- Finding :math:`\alpha_0`

- Finding :math:`\beta_0`
1. Fix :math:`\gamma = \frac{UB + LB}{2}` and compute the solution
of the two-player zero-sum game associated
with :math:`M(\gamma)`. We can use either the primal or the dual
LP problem.
2. If :math:`V(M(\gamma)) \geq 0`, then set :math:`LB = \gamma`,
otherwise let :math:`UB = \gamma`.
3. Iterate on 1. and 2. until :math:`|UB - LB| < \epsilon`.

1. Fix :math:`\gamma = \frac{UB + LB}{2}` and compute the solution
of the two-player zero-sum game associated.
with :math:`M(\gamma)`. We can use either the primal or the dual
LP problem.
2. If :math:`V(M(\gamma)) > 0`, then set :math:`LB = \gamma`,
otherwise let :math:`UB = \gamma`.
3. Iterate on 1. and 2. until :math:`|UB - LB| < \epsilon`.
- Finding :math:`\beta_0`

1. Fix :math:`\gamma = \frac{UB + LB}{2}` and compute the solution
of the two-player zero-sum game associated.
with :math:`M(\gamma)`. We can use either the primal or the dual
LP problem.
2. If :math:`V(M(\gamma)) > 0`, then set :math:`LB = \gamma`,
otherwise let :math:`UB = \gamma`.
3. Iterate on 1. and 2. until :math:`|UB - LB| < \epsilon`.

*Existence*: Since :math:`V(M(LB))>0` and :math:`V(M(UB))<0` and
:math:`V(M(\cdot))` is a continuous, nonincreasing function, there is
at least one :math:`\gamma\in[LB, UB]`, s.t. :math:`V(M(\gamma))=0`.
*Existence*: Since :math:`V(M(LB))>0` and :math:`V(M(UB))<0` and
:math:`V(M(\cdot))` is a continuous, nonincreasing function, there is
at least one :math:`\gamma\in[LB, UB]`, s.t. :math:`V(M(\gamma))=0`.

The *zerosum* method calculates the value and optimal strategies
associated with a given :math:`\gamma`.
Expand Down Expand Up @@ -997,11 +1003,11 @@ for non-negative matrices.

**Definition:** We call an economy *simple* if it satisfies

* :math:`n=m`
* Each activity produces exactly one good
* :math:`n=m`

* Each activity produces exactly one good

* Each good is produced by one and only one activity.
* Each good is produced by one and only one activity.

These assumptions imply that :math:`B=I_n`, i.e., that :math:`B` can be
written as an identity matrix (possibly after reshuffling its rows and
Expand All @@ -1011,8 +1017,9 @@ The simple model has the following special property (Theorem 9.11. in Gale :cite
with :math:`(A,I_n)`, then

.. math::
x_0^T = \alpha_0 x_0^T A\hspace{1cm}\Leftrightarrow\hspace{1cm}x_0^T
A=\left(\frac{1}{\alpha_0}\right)x_0^T

x_0^T = \alpha_0 x_0^T A\hspace{1cm}\Leftrightarrow\hspace{1cm}x_0^T
A=\left(\frac{1}{\alpha_0}\right)x_0^T

The latter shows that :math:`1/\alpha_0` is a positive eigenvalue of
:math:`A` and :math:`x_0` is the corresponding non-negative left
Expand All @@ -1032,4 +1039,5 @@ Suppose that :math:`A` is reducible with :math:`k` irreducible subsets
associated expansion and interest factors, respectively. Then we have

.. math::
\alpha_0 = \max_i \{\alpha_i\}\hspace{1cm}\text{and}\hspace{1cm}\beta_0 = \min_i \{\beta_i\}

\alpha_0 = \max_i \{\alpha_i\}\hspace{1cm}\text{and}\hspace{1cm}\beta_0 = \min_i \{\beta_i\}