Given a set A \subseteq \mathbb{R}^n and a function f: A \to \mathbb{R}, our goal is to find x \in A that minimizes or maximizes f.
We consider optimization problems of the form \min\{f(x): g_i(x)\le b_i, 1 \le i \le m, x \in \mathbb{R}^n\} where n, m \in \mathbb{N}, b_i \in \mathbb{R}, and f, g_i are functions with form \mathbb{R}^n \to \mathbb{R}.
Problems are very hard to solve in general, so we focus on special cases. We consider affine functions.
f: \mathbb{R}^n \to \mathbb{R} is affine if f(x) = a^Tx + \beta for a \in \mathbb{R}^n, \beta \in \mathbb{R}. It is linear if \beta = 0.
An optimization problem \min\{f(x): g_i(x) \le b_i, \forall 1 \le i \le m, x \in \mathbb{R}^n\} is called a linear program if f is affine and g_i is finite number of linear functions.
In practice, we make a series of decisions that influence each other. An example of this is multiperiod models.
Fractional solutions are often not desirable. We can force solutions to take only integer values by formulating it was an integer program.
In order to express binary decisions, we introduce a new variable y, such that y = 0 implies the first decision, and y = 1 implies the second.
Example: x_1 + x_2 \ge 5 or x_3 + x_4 \ge 5.
- x_1 + x_2 \ge 5y.
- x_3 + x_4 \ge 5(1-y).
- 0 \le y \le 1.
- y \in \mathbb{Z}.
We can solve similar situations by using a set of binary variables which sum to a specific value.