# Geometry

## Simple Example

A company makes 2 products, $A$ and $B$, each unit of A makes $1 of profit and each unit of B makes $2. The demand is $\leq 300$ units of A and $\leq 200$ units of B. Suppose the total number of work hours available is 700, and making each A takes 1 hour, making each B takes 3.

We can write this into a linear program that looks like

$$
\begin{aligned}
    \max\,& x_1 + 6x_2\\
    \text{such that}\,& x_1 + 3x_2 &&\leq 700\\
    &x_1&&\leq 300\\
    &x_2&&\leq 200\\
    &x_1&&\geq 0\\
    &x_2&&\geq 0\\
\end{aligned}
$$

## Properties of LP

1. Real number LP is solvable in poly time.
2. Integer LP (ILP) is NP-complete.
3. Feasible region is convex. (pick any 2 points in the space, the line connecting them is in the feasible region)
4. Optimal answers appear only at vertices

## Standard Form

We want to solve for values of $n$ variables $x_1, x_2, \dots x_n$ that satisfies $m$ constrains while minimizing or maximizing the objective function.

$$
\begin{aligned}
    \max\, & c^\top\bold x\\
    \text{such that}\,& A\bold x &&\leq\bold b\\
    &\bold x&&\geq 0
\end{aligned}
$$

where $A$ is a $m\times n$ matrix. A and $\bold b$ together form the constraints.

## Geometric view

The feasible region is the intersection of halfspaces cut by the hyperplanes given by the constraints in $\R^n$.

There are at least ${n+m}\choose{n}$ vertices. For each vertex, it has $\leq nm$ neighbors.

## LP algorithms

**Simplex algorithm** has worst case exponential time, but fast in practice.

Basic idea:

1. Start at $\bold x = \bold 0$
2. Check all neighbor vertices with better objective value. Keep doing this
3. If we can't find anything better in the neighborhood, then $\bold x$ is already the global best.

## Check for Infeasibility

Add a new variable $z\in \R$, then try to solve

$$
\begin{aligned}
    \max\, & z\\
    A\bold x + z &\leq \bold b\\
    \bold x&\geq 0
\end{aligned}
$$
