Formulieren von Einschränkungen in Mixed-Integer-Linearprogrammierung

Oct 26 2020

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

3 RobPratt Oct 26 2020 at 06:59

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$.