Formulieren von Einschränkungen in Mixed-Integer-Linearprogrammierung
Gibt es eine Möglichkeit, das folgende lineare Programm in einer LP mit gemischten Ganzzahlen zu formulieren, die ich mit den meisten linearen Programmen in R / Python lösen könnte, die gemischte ganzzahlige lineare Programme (MILP) unterstützen?
Meine Frage lautet also: Wie kann ich eine Kombination aus ganzzahligen, binären und kontinuierlichen Variablen verwenden, um die folgenden Einschränkungen (1) neu zu formulieren ?
Konstanten: $C_i$ (Faktor Exposition), $x_i^a$ (Anfangsgewicht)
Entscheidungsvariablen: $x_i$ (Portfoliogewicht)
Portfolio-Maximierung:
$\max_{x_{i}}\sum_{i=1}^{N}x_{i}\cdot C_{i}$
vorbehaltlich:
(1) $\boldsymbol{1}_{\left\{ x_{i}\geq x_{i}^{a}\right\} }\left(x_{i}-x_{i}^{a}\right)\in\{0\}\cup\left[0.025,\infty\right],\forall i$ (Mindestkaufgröße von 0,025)
wo
$\boldsymbol{1}_{\left\{ x_{i}\geq x_{i}^{a}\right\} }=\begin{cases} 1 & \text{if } x_{i} \geq x_{i}^{a}\\ 0 & \text{otherwise} \end{cases}$
Antworten
Führen Sie eine kleine konstante Toleranz ein $\epsilon > 0$binäre Entscheidungsvariablen $y_i^1$ und $y_i^2$und lineare Einschränkungen \ begin {align} y_i ^ 1 + y_i ^ 2 & \ le 1 && \ text {für alle$i$} \ tag1 \\ (0-x_i ^ a) y_i ^ 1 + 0,025 y_i ^ 2 \ le x_i - x_i ^ a & \ le - \ epsilon y_i ^ 1 + (1-x_i ^ a) y_i ^ 2 && \ text {für alle $i$} \ tag2 \\ \ end {align} Constraints$(1)$ und $(2)$ erzwingen $x_i - x_i^a \le -\epsilon \lor x_i - x_i^a = 0 \lor x_i - x_i^a \ge 0.025$. Explizit sind die drei Fälle\begin{align} (y_i^1,y_i^2)=(1,0): && -x_i^a \le x_i - x_i^a &\le -\epsilon \\ (y_i^1,y_i^2)=(0,0): && 0 \le x_i - x_i^a &\le 0 \\ (y_i^1,y_i^2)=(0,1): && 0.025 \le x_i - x_i^a &\le 1-x_i^a \\ \end{align}
Führen Sie einfacher eine binäre Entscheidungsvariable ein $z_i$ und lineare Einschränkungen $$-x_i^a (1-z_i) + 0.025 z_i \le x_i - x_i^a \le (1-x_i^a)z_i \text{ for all $ich$}$$
Wenn $z_i=0$impliziert die Einschränkung $-x_i^a \le x_i - x_i^a \le 0$, damit $x_i \le x_i^a$.
Wenn $z_i=1$impliziert die Einschränkung $0.025 \le x_i - x_i^a \le 1-x_i^a$, damit $x_i \ge x_i^a + 0.025$.