From 66438a8be1acc2e6119f31de41c84db76030ecfc Mon Sep 17 00:00:00 2001 From: Ivan Oleinik Date: Tue, 28 Dec 2021 20:02:09 +0300 Subject: [PATCH] Add ellipsoid method --- .../examples/ellipsoid_method.ipynb | 386 ++++++++++++++++++ 1 file changed, 386 insertions(+) create mode 100644 optimization_course/examples/ellipsoid_method.ipynb diff --git a/optimization_course/examples/ellipsoid_method.ipynb b/optimization_course/examples/ellipsoid_method.ipynb new file mode 100644 index 0000000..bb5ad16 --- /dev/null +++ b/optimization_course/examples/ellipsoid_method.ipynb @@ -0,0 +1,386 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Метод эллипсоидов", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "zkTMlE1gdiEN" + }, + "source": [ + "# Свойства эллипсоидов\n", + "\n", + "**Определение:** Множество $E \\subseteq ℝ^n$ — **эллипсоид**, если существуют $a \\in ℝ^n$ и положительно определенная матрица $A \\in ℝ^{n \\times n}$, такие что\n", + "\n", + "$$E = E(A, a) := \\{x \\in ℝ^n \\mid (x - a)^T A^{-1} (x - a) \\le 1\\} \\tag 1$$\n", + "\n", + "$$E(A, a) := \\{x \\in ℝ^n \\mid \\|x - a\\|_A \\le 1\\}, \\tag 2$$\n", + "\n", + "то есть $E(A, a)$ — это единичный шар с центром в $a$ в линейном пространстве $ℝ^n$ с нормой $\\|\\cdot\\|_A$. В частности, шар единичного радиуса $S(0, 1)$ с центром в нуле — это эллипсоид $E(I, 0)$. Эллипсоид $E$ одназначно определяет $a$ (центр) и $A$.\n", + "\n", + "**Факт:** Для любой положительно определенной матрицы $A$ существует единственная положительно определенная матрица $A^{1/2}$, такая что $A = A^{1/2} A^{1/2} = (A^{1/2})^T A^{1/2}$.\n", + "\n", + "**Следствие:** \n", + "\n", + "$$E(A, a) = A^{1/2} S(0, 1) + a \\tag 3$$\n", + "\n", + "**Доказательство:**\n", + "\n", + "$$A^{1/2} S(0, 1) + a = \\{A^{1/2}x + a \\mid x \\in S(0, 1)\\}\\\\\n", + "= \\{x \\mid A^{-1/2} (x - a) \\in S(0, 1)\\}\\\\\n", + "= \\{x \\mid (A^{-1/2} (x - a))^T A^{-1/2} (x - a) \\le 1\\}\\\\\n", + "= \\{x \\mid (x - a)^T (A^{-1/2})^T A^{-1/2} (x - a) \\le 1\\}\\\\\n", + "= \\{x \\mid (x - a)^T A^{-1} (x - a) \\le 1\\} = E(A, a)$$\n", + "\n", + "**Замечание:** Каждый эллипсоид — это образ единичного шара при биективном афинном преобразовании.\n", + "\n", + "\n", + "\n", + "**Факт:** Объем эллипсоида $vol\\big(E(A, a)\\big)$ зависит только от матрицы $A$ и размерности пространства:\n", + "\n", + "$$vol\\big(E(A, a)\\big) = \\sqrt {\\det A} \\cdot V_n, \\tag 4$$\n", + "\n", + "где $V_n$ — объем единичного шара $S(0, 1)$ в $ℝ^n$:\n", + "\n", + "$$V_n = \\frac{\\pi^{n/2}}{\\Gamma(n/2 + 1)} \\sim \\frac{1}{\\sqrt {\\pi n}} \\bigg(\\frac{2e\\pi}{n} \\bigg)^{n/2}. \\tag 5$$\n", + "\n", + "\n", + "**Замечание:** Пусть $T : x \\longmapsto Dx + d$ — биективное афинное преобразование, тогда $vol\\bigg(T\\big(E(A, a)\\big)\\bigg) = \\det D \\sqrt{\\det A} \\cdot V_n$. В частности,\n", + "\n", + "$$\\frac{vol\\big(E(A, a)\\big)}{vol\\big(E(B, b)\\big)} = \\frac{vol\\bigg(T\\big(E(A, a)\\big)\\bigg)}{vol\\bigg(T\\big(E(B, b)\\big)\\bigg)},$$\n", + "\n", + "то есть отношение объемов эллипсоидов инвариантно относительно биективных афинных преобразований.\n", + "\n", + "**Наблюдение:** Для $c \\neq 0, \\max {c^T x}, x \\in S(a, 1)$ достигается при $x^* = a + \\frac{c}{\\|c\\|}$.\n", + "\n", + "**Лемма:** Пусть $E(A, a) \\subseteq ℝ^n$ — эллипсоид, $c \\in ℝ^n \\setminus \\{0\\}$,\n", + "\n", + "$$b := \\frac{1}{\\sqrt {c^T A c}} A c, \\tag 7\\\\\n", + "z_{max} := a + b,\\\\\n", + "z_{min} := a - b,$$\n", + "\n", + "тогда $z_{max}$ максимизирует, а $z_{min}$ минимизирует $c^T x$ на $E$.\n", + "\n", + "**Доказательство:** Пусть $Q := A^{1/2}$. Из $(3)$:\n", + "\n", + "$$Q^{-1} E(A, a) = S(0, 1) + Q^{-1} a = S(Q^{-1} a, 1),$$\n", + "\n", + "cледовательно\n", + "\n", + "$$\\max\\{c^T x \\mid x \\in E(A, a)\\} = \\max\\{c^T Q Q^{-1} x \\mid Q^{-1} x \\in Q^{-1} E(A, a)\\}\\\\\n", + "= \\max\\{c^T Q y \\mid y \\in S(Q^{-1} a, 1)\\}\\\\\n", + "= c^T Q \\bigg( Q^{-1} a + \\frac{(c^T Q)^T}{\\|c^T Q\\|}\\bigg)\\\\\n", + "= c^T a + c^T Q \\frac{1}{\\|Q c\\|} Q c\\\\\n", + "= c^T a + c^T \\frac{1}{\\sqrt{c^T A c}} A c\\\\\n", + "= c^T a + \\sqrt{c^T A c}.$$\n", + "\n", + "Подставляем $(7)$ и получаем требуемое:\n", + "\n", + "$$c^T z_{max} = c^T \\bigg(a + \\frac{1}{\\sqrt{c^T A c}}A c\\bigg) = c^T a + \\sqrt{c^T A c} = c^T a + \\|c\\|_{A^{-1}} = \\max\\{c^T x \\mid x \\in E(A, a)\\}, \\tag 8\\\\\n", + "c^T z_{min} = c^T \\bigg(a - \\frac{1}{\\sqrt{c^T A c}} A c\\bigg) = c^T a - \\sqrt{c^T A c} = c^T a - \\|c\\|_{A^{-1}} = \\min\\{c^T x \\mid x \\in E(A, a)\\}.$$\n", + "\n", + "**Замечание:** Прямая, проходящая через $z_{max}$ и $z_{min}$ проходит через центр $a$ эллипса $E(A, a)$ и имеет направление $b$.\n", + "\n", + "**Теорема:** Для любого выпуклого тела $K \\subseteq ℝ^n$ существует единственный эллипсоид $E = E(A, a)$ минимального объема, содержащий $K$. Более того, $K$ содержит эллипсоид $E(n^{-2}A, a)$, получаемый из $E$ гомотетией из центра $E$ с коэффициентом $1/n$.\n", + "\n", + "**Определение:** Эллипсоид минимального объема содержащий выпуклое тело $K$ называется эллипсоидом **Лёвнера-Джона** — $LJ(K)$.\n", + "\n", + "**Факт:** Пусть $E(A, a) \\subseteq ℝ^n$ — эллипсоид, $c \\in ℝ^n \\setminus \\{0\\}$,\n", + "\n", + "$$E'(A, a, c) := E(A, a) \\cap \\{x \\in ℝ^n \\mid c^T x \\le c^T a\\}, \\tag 9$$\n", + "\n", + "то есть $E'(A, a, c)$ — половина эллипсоида $E(A, a)$, полученная разрезанием $E(A, a)$ через центр $a$ гиперплоскостью $\\{x \\in ℝ^n \\mid c^T x = c^T a\\}$.\n", + "\n", + "Тогда $LJ\\big(E'(A, a, c)\\big)$ — эллипсоид $E(A', a')$, заданный формулами:\n", + "\n", + "$$a' := a - \\frac{1}{n + 1} b, \\tag {10}$$\n", + "\n", + "$$A' := \\frac{n^2}{n^2 - 1}\\left(A - \\frac{2}{n + 1} b b^T \\right), \\tag {11}$$\n", + "\n", + "где $b$ — вектор, определенный в $(7)$.\n", + "\n", + "**Замечание:** Центр $a'$ эллипсоида $E(A', a') = LJ\\big(E'(A, a, c)\\big)$ лежит на прямой, проходящей через $z_{max}$ и $z_{min}$ из $(7)$. В частности, из $a$ можно получить $a'$, сделав шаг к $z_{min}$ длины $\\frac{1}{n + 1}\\|z_{min} - a\\|$. Более того, граница $E(A', a')$ касается $E'(A, a, c)$ в точке $z_{min}$ и во множестве $\\{x \\mid \\|x - a\\|_A = 1\\} \\cap \\{x \\mid c^T x = c^T a\\}$. В $ℝ^2$ последнее множество состоит из двух точек, а в $ℝ^3$ является эллипсом.\n", + "\n", + "![](https://drive.google.com/uc?export=view&id=108idEqgaRcFm1LuKgsjTgT94eQdD-H8z)\n", + "\n", + "**Следствие:** Пусть $E(A, a) \\subseteq ℝ^n$ — эллипсоид, $c \\in ℝ^n \\setminus \\{0\\}, \\gamma \\in ℝ$. Из $(8)$ следует, что гиперплоскость\n", + "\n", + "$$H := \\{x \\in ℝ^n \\mid c^T x = \\gamma\\}$$\n", + "\n", + "имеет непустое пересечение с $E(A, a)$ тогда и только тогда, когда $c^T z_{min} \\le \\gamma \\le c^T z_{max}$, что равносильно\n", + "\n", + "$$|c^T a - \\gamma| \\le \\sqrt {c^T A c}.$$\n", + "\n", + "Для удобства обозначим\n", + "\n", + "$$\\alpha := \\frac{c^T a - \\gamma}{\\sqrt {c^T A c}}. \\tag {12}$$\n", + "\n", + "Тогда $H$ пересекает $E(A, a)$ тогда и только тогда, когда $-1 \\le \\alpha \\le 1$. Число $\\alpha$ можно интерпретировать как расстояние со знаком от центра $a$ до границы полупространства $\\{x \\in ℝ^n \\mid c^T x \\le \\gamma\\}$ в пространстве $ℝ^n$ с нормой $\\|\\cdot\\|_{A^{-1}}$ (расстояние неположительно, если $a$ содержится в полупространстве).\n", + "\n", + "**Факт:** Пусть $E(A, a) \\subseteq ℝ^n$ — эллипсоид, $c \\in ℝ^n \\setminus \\{0\\}, \\gamma \\in ℝ$,\n", + "\n", + "$$E'(A, a, c, \\gamma) := E(A, a) \\cap \\{x \\in ℝ^n \\mid c^T x \\le \\gamma\\}, \\tag {13}$$\n", + "\n", + "то есть $E'(A, a, c, \\gamma)$ — часть эллипсоида $E(A, a)$, полученная разрезанием $E(A, a)$ гиперплоскостью $H = \\{x \\in ℝ^n \\mid c^T x = \\gamma\\}$.\n", + "\n", + "Тогда $LJ\\big(E'(A, a, c, \\gamma)\\big)$ — эллипсоид $E(A', a')$, заданный таким образом:\n", + "\n", + "\\begin{equation}\n", + "\\begin{cases}\n", + "E(A, a),\\ -1 \\le \\alpha \\le -1/n\\\\\n", + "\\begin{cases}\n", + "a' := a - \\frac{1 + n \\alpha}{n + 1} b, \\tag {14}\\\\\n", + "A' := \\frac{n^2}{n^2 - 1}(1 - \\alpha^2)\\big(A - \\frac{2 (1 + n \\alpha)}{(n + 1) (1 + \\alpha)} b b^T \\big)\n", + "\\end{cases}, -1/n \\le \\alpha < 1\n", + "\\end{cases},\n", + "\\end{equation}\n", + "\n", + "где $b$ — вектор, определенный в $(7)$.\n", + "\n", + "**Замечание:** Если $\\gamma = c^T a$, то $E'(A, a, c, \\gamma) = E'(A, a, c)$ и формулы $(14)$ сводятся к $(10), (11)$.\n", + "\n", + "**Определение:** Разрез через центр $a$ эллипсоида $E(A, a)$ гиперплоскостью $H$ называется **центральным**. Если $0 < \\alpha < 1$, то $E'(A, a, c, \\gamma)$ строго содержится в $E'(A, a, c)$, то есть от $E(A, a)$ отрезается больший кусок, поэтому разрез $c^T x \\le \\gamma$ называется **глубоким**. Если $-1/n < \\alpha < 0$, то от $E(A, a)$ остается больше половины $E'(A, a, c)$, поэтому разрез $c^T x \\le \\gamma$ называется **мелким**, но даже в этом случае \n", + "\n", + "$$vol\\bigg(LJ\\big(E'(A, a, c, \\gamma)\\big)\\bigg) < vol\\big(E(A, a)\\big).$$\n", + "\n", + "# Метод эллипсоидов\n", + "\n", + "**Задача:** Дана система неравенств $c_i^T x \\le \\gamma_i, i = 1, \\dots, m$, с $n$ переменными. Требуется определить пустое ли множество\n", + "\n", + "$$P := \\{x \\in ℝ^n \\mid c_i^T x \\le \\gamma_i, i = 1, \\dots, m\\} = \\{x \\mid C x \\le d\\}, \\tag {15}$$\n", + "\n", + "и если $P \\neq \\emptyset$, то найти точку, содержащуюся в $P$.\n", + "\n", + "Известно, что либо $P = \\emptyset$, либо $P$ — ограниченное полноразмерное множество.\n", + "\n", + "**Следствие:** Существует $R > 0$, такое что $P \\subseteq S(0, R)$.\n", + "\n", + "**Следствие:** Существует $r > 0$, такое что либо $P = \\emptyset$, либо $P \\supseteq S(c, r)$ для некоторой точки $c$.\n", + "\n", + "**Определение:** $P \\subseteq S(0, R) = E(R^2 I, 0)$. Определим $E_0 = E(A_0, a_0)$, где $A_0 = R^2 I, a_0 = 0$. Пусть на текущем шаге есть эллипсоид $E_k := E(A_k, a_k) \\supseteq P$. Можно подставить $a_k$ в систему неравенств $(15)$ и проверить, все ли из них выполняются. Если да, то решение задачи найдено. В противном случае хотя бы одно из неравенств нарушается, допустим $c^T x \\le \\gamma$. Значит, $c^T a_k > \\gamma$. Гиперплоскость $\\{x \\mid c^T x = c^T a_k\\}$, проходящая через центр $a_k$ эллипсоида $E_k$, делит $E_k$ на две половины. Из построения известно, что $P$ содержится в половине\n", + "\n", + "$$E'(A_k, a_k, c) := \\{x \\in E(A_k, a_k) \\mid c^T x \\le c^T a_k\\}. \\tag {16}$$\n", + "\n", + "Тогда определим следующий эллипсоид $E_{k+1}$ в последовательности так:\n", + "\n", + "$$E_{k+1} = LJ\\big(E'(A_k, a_k, c)\\big) \\supseteq E'(A_k, a_k, c) \\supseteq P, $$\n", + "\n", + "задающийся формулами $(10)$ и $(11)$.\n", + "\n", + "**Лемма:**\n", + "\n", + "$$\\frac{vol(E_{k+1})}{vol(E_{k})} = \\bigg(\\big(\\frac{n}{n+1}\\big)^{n+1}\\big(\\frac{n}{n-1}\\big)^{n-1}\\bigg)^{1/2} < e^{-1/(2n)} < 1$$\n", + "\n", + "**Доказательство:** Пусть $E = E_k$ — эллипсоид, а $E' = E_{k+1}$ — эллипсоид полученный из $E$ по формулам $(7), (10), (11)$. Чтобы оценить отношение объемов, предположим, что исходный эллипсоид $F := E(I, 0)$, то есть единичный шар с центром в нуле, а вектор $c$, который используется для вычисления $b$ из $(7)$, равен $(-1, 0, \\dots, 0)^T$. В таком случае, по формулам $(7), (10), (11)$ получаем:\n", + "\n", + "$$b = (-1, 0, \\dots, 0)^T,\\\\\n", + "a' = a - \\frac{1}{n + 1} b = \\big(\\frac{1}{n+1}, 0, \\dots, 0\\big)^T,\\\\\n", + "A' = \\frac{n^2}{n^2 - 1} \\big(I - \\frac{2}{n + 1}(-1, 0, \\dots, 0)^T(-1, 0, \\dots, 0)\\big)\\\\\n", + "= diag\\bigg(\\big(\\frac{n^2}{(n + 1)^2}, \\frac{n^2}{n^2 - 1}, \\dots, \\frac{n^2}{n^2 - 1}\\big)^T\\bigg).$$\n", + "\n", + "Из этого и $(4)$ для объемов $F$ и $F' := E(A', a')$:\n", + "\n", + "$$\\frac{vol(F')}{vol(F)} = \\frac{\\sqrt {\\det A'} V_n}{\\sqrt {\\det A} V_n} = \\sqrt {\\det A'} = \\big(\\frac{n^{2n}}{(n+1)^n (n-1)^n} \\frac{n-1}{n+1}\\big)^{1/2}\\\\\n", + "= \\bigg(\\big(\\frac{n}{n+1}\\big)^{n+1}\\big(\\frac{n}{n-1}\\big)^{n-1}\\bigg)^{1/2}.$$\n", + "\n", + "Логарифмируя, получаем:\n", + "\n", + "$$\\frac{vol(F')}{vol(F)} < e^{-1/(2n)} \\Leftrightarrow e^{1/n} < \\big(\\frac{n + 1}{n}\\big)^{n+1}\\big(\\frac{n-1}{n}\\big)^{n-1}\\\\\n", + "\\Leftrightarrow \\frac{1}{n} < (n+1) \\ln {\\big(1 + \\frac{1}{n}\\big)} + (n-1) \\ln {\\big(1 - \\frac{1}{n}\\big)}.$$\n", + "\n", + "Раскладывая логарифм в ряд $\\ln x = \\sum_{k=1}^\\infty (-1)^{k+1} (x-1)^k / k, 0 < x \\le 2$, получаем:\n", + "\n", + "$$(n+1) \\ln {\\big(1 + \\frac{1}{n}\\big)} + (n-1) \\ln {\\big(1 - \\frac{1}{n}\\big)}=\\\\\n", + "= \\sum_{k=1}^\\infty (-1)^{k+1} \\frac{n+1}{k n^k} - \\sum_{k=1}^\\infty \\frac{n-1}{k n^k}\\\\\n", + "= \\sum_{k=1}^\\infty (-1)^{k+1} \\frac{2}{k n^k} - \\sum_{k=1}^\\infty \\frac{2(n-1)}{2k n^{2k}}\\\\\n", + "= \\sum_{k=1}^\\infty \\frac{2}{(2k-1) n^{2k-1}} - \\sum_{k=1}^\\infty \\frac{2}{2k n^{2k}} - \\sum_{k=1}^\\infty \\frac{1}{k n^{2k-1}} + \\sum_{k=1}^\\infty \\frac{1}{k n^{2k}}\\\\\n", + "= \\sum_{k=1}^\\infty \\frac{1}{(2k-1) k} \\frac{1}{n^{2k-1}}\\\\\n", + "> \\frac{1}{n},$$\n", + "\n", + "что доказывает требуемое для нашего конкретного выбора $F$ и $c$.\n", + "\n", + "Теперь пусть $c \\in ℝ^n \\setminus \\{0\\}$ — произвольный вектор. Из $(3)$:\n", + "\n", + "$$E = A^{1/2}E(I, 0) + a = A^{1/2}F + a.$$\n", + "\n", + "Ясно, что существует ортогональная матрица $Q$, переводящая $A^{1/2} c$ в $(-\\|Q A^{1/2} c\\|, 0, \\dots, 0)$, то есть\n", + "\n", + "$$(-1, 0, \\dots, 0)^T = \\frac{1}{\\|Q A^{1/2} c\\|}Q A^{1/2} c.$$\n", + "\n", + "Тогда\n", + "\n", + "$$T(x) := A^{1/2} Q^T x + a$$\n", + "\n", + "— биективное афинное преобразование, причем $T^{-1}(x) = QA^{-1/2}(x-a)$.\n", + "\n", + "Теперь\n", + "\n", + "$$T(F) = \\{T(y) \\mid y^T y \\le 1\\}\\\\\n", + "= \\{x \\mid (T^{-1}x)^T (T^{-1}x) \\le 1\\}\\\\\n", + "= \\{x \\mid (x - a)^T A^{-1/2} Q^T Q A^{-1/2} (x-a) \\le 1\\}\\\\\n", + "= \\{x \\mid (x - a)^T A^{-1} (x-a) \\le 1\\}\\\\\n", + "= E,$$\n", + "\n", + "Аналогично для эллипсоида $F'$ получается $T(F') = E'$.\n", + "\n", + "Пользуясь инвариантностью отношения объемов эллипсоидов к биективным афинным преобразованиям, имеем:\n", + "\n", + "$$\\frac{vol(E')}{vol(E)} = \\frac{vol\\big(T(E')\\big)}{vol\\big(T(E)\\big)} = \\frac{vol(F')}{vol(F)} = \\bigg(\\big(\\frac{n}{n+1}\\big)^{n+1}\\big(\\frac{n}{n-1}\\big)^{n-1}\\bigg)^{1/2} < e^{-1/(2n)}.$$\n", + "\n", + "**Алгоритм:**\n", + "\n", + "Инициализация: $k := 0, N := \\min \\{x \\mid x > 2n^2 \\ln {\\frac{R}{r}}, x \\in ℤ \\}, A_0 := R^2 I, a_0 = 0, E_0 = E(A_0, a_0)$.\n", + "\n", + "Шаг алгоритма:\n", + "\n", + "* Если $k = N$, СТОП! (Объявить $P$ пустым)\n", + "* Если $a_k \\in P$, СТОП! (Найдено возможное решение)\n", + "* Если $a_k \\notin P$, выбрать неравенство $c^T x \\le \\gamma$ системы $Cx \\le d$, которое нарушается при подстановке $a_k$, обновить значения $b, a_{k+1}, A_{k+1}$ через $a_k, A_k$ по формулам $(7), (10), (11)$.\n", + "\n", + "**Теорема:** Алгоритм решает поставленную задачу.\n", + "\n", + "**Доказательство:** После $2n$ шагов алгоритма объем эллипсоида уменьшается в $e$ раз.\n", + "\n", + "$$vol(E_N) = e^{-\\frac{N}{2n}} vol(E_0) < e^{-n \\ln {\\frac{R}{r}}} vol\\big(E(R^2 I)\\big)\\\\\n", + "= \\frac{r^n}{R^n} R^n vol\\big(E(I, 0)\\big) = vol\\big(E(r^2 I, 0)\\big) = vol\\big(S(c, r)\\big),$$\n", + "\n", + "то есть у $P \\subseteq E_N$ объем строго меньше, чем у $S(c, r)$, но это противоречит второму следствию из задачи, если $P \\neq \\emptyset$. Значит, $P = \\emptyset$." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 718 + }, + "id": "nPuHR4ZzXFQm", + "outputId": "0861782c-873a-4689-cebf-a091ca68b42a" + }, + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from IPython.display import clear_output, display\n", + "from scipy.linalg import svd\n", + "from matplotlib.patches import Ellipse\n", + "import time\n", + "import math\n", + "\n", + "EPS = 1e-7\n", + "\n", + "def ellipsoid_method(A, b, r=EPS, R=15):\n", + " clear_output(wait=True)\n", + " fig = plt.figure(figsize=(12, 12))\n", + " ax = fig.add_subplot(1, 1, 1)\n", + " plt.ion()\n", + " rng = np.linspace(-10, 10, 1001)\n", + " pts = np.array([[x, y]\n", + " for x in rng\n", + " for y in rng])\n", + " mask = np.array([[x >= 0.0 and y >= 0.0 for x in rng] for y in rng])\n", + " for a_, b_ in zip(A, b):\n", + " mask &= (np.squeeze(a_.reshape((1, -1)) @ pts.T) < b_).reshape(len(rng), len(rng))\n", + "\n", + " ax.imshow(mask.T.astype(int), extent=(pts[:, 0].min(), pts[:, 0].max(),\n", + " pts[:, 1].min(), pts[:, 1].max()),\n", + " origin='lower', cmap='Greys', alpha=0.3)\n", + " time.sleep(2)\n", + " display(fig)\n", + "\n", + " n = A.shape[1]\n", + " c = np.zeros((n,))\n", + " Q = R * R * np.eye(n, dtype=float)\n", + " for iter in range(2 * n * (n + 1) * round(math.log(R / r) + 1)):\n", + " clear_output(wait=True)\n", + " S, V, _ = np.linalg.svd(Q.copy())\n", + " angle = np.degrees(np.arctan2(S[1, 0], S[0, 0]))\n", + " width, height = 2 * np.sqrt(V)\n", + " ax.add_patch(Ellipse(c.copy(), width, height, angle, facecolor='none', edgecolor='b'))\n", + " ax.plot(c[0], c[1], 'bo')\n", + " time.sleep(2)\n", + " display(fig)\n", + " mask = np.concatenate((np.squeeze(A @ c) <= b, c >= 0), axis=0)\n", + " if np.count_nonzero(np.logical_not(mask)) == 0:\n", + " plt.close()\n", + " return c\n", + " a = A[np.argmax(np.logical_not(mask)), :]\n", + " a = a.reshape((-1, 1))\n", + " if a.T @ c >= 0:\n", + " a = -a\n", + "\n", + " a_ = np.squeeze(np.array([-a.copy()[1], a.copy()[0]]))\n", + " l, r = 0, 30\n", + " Q_inv = np.linalg.inv(Q)\n", + " while r - l > 1e-7:\n", + " m = (l + r) / 2\n", + " x = (m * a_).reshape((-1, 1))\n", + " if x.T @ Q_inv @ x <= 1.0:\n", + " l = m\n", + " else:\n", + " r = m\n", + " p1, p2 = c.copy() - l * a_, c.copy() + l * a_\n", + " clear_output(wait=True)\n", + " ax.plot([p1[0], p2[0]].copy(), [p1[1], p2[1]].copy(), 'r')\n", + " time.sleep(2)\n", + " display(fig)\n", + " c += np.squeeze((Q @ a) / (math.sqrt(a.T @ Q @ a) * (n + 1)))\n", + " Q = (n ** 2 / (n ** 2 - 1)) * (Q - (2 / ((n + 1) * a.T @ Q @ a)) * (Q @ a @ a.T @ Q))\n", + " return None\n", + "\n", + "ellipsoid_method(np.array([[1, 0.8],\n", + " [0, 1],\n", + " [-1.2, 0.1],\n", + " [0.1, -1],\n", + " [-1, -2.5]]),\n", + " np.array([7, 3, -0.2, -0.3, 3]))" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1.96340289, 2.71970505])" + ] + }, + "metadata": {}, + "execution_count": 1 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qa46AZ0jfF3M" + }, + "source": [ + "# Литература\n", + "\n", + "* https://www.mpi-inf.mpg.de/fileadmin/inf/d1/ellipsoid-lovasz.pdf\n", + "* https://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15859-f11/www/notes/lecture08.pdf" + ] + } + ] +} \ No newline at end of file