{"id":464847,"date":"2025-06-27T15:01:12","date_gmt":"2025-06-27T15:01:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=464847"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=464847","title":{"rendered":"<span>\u041c\u0435\u0442\u043e\u0434 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438: \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u0435\u0439\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435? \u041c\u0443\u0440\u0430\u0432\u044c\u0438, \u043e\u0442\u0436\u0438\u0433, \u0433\u0435\u043d\u0435\u0442\u0438\u043a\u0430, \u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438\u0446, \u043f\u0447\u0435\u043b\u044b, \u0441\u0432\u0435\u0442\u043b\u044f\u0447\u043a\u0438, \u043a\u0443\u043a\u0443\u0448\u043a\u0438, \u0433\u0443\u0441\u0438, \u0441\u043e\u0432\u044b, \u043b\u0435\u0442\u0443\u0447\u0438\u0435 \u043c\u044b\u0448\u0438, \u043e\u0441\u044c\u043c\u0438\u043d\u043e\u0433\u0438, \u0434\u0435\u043b\u044c\u0444\u0438\u043d\u044b, \u043a\u0438\u0442\u044b, \u0448\u0438\u043c\u043f\u0430\u043d\u0437\u0435, \u0433\u043e\u0440\u0438\u043b\u043b\u044b, \u043b\u044c\u0432\u044b, \u0441\u043b\u043e\u043d\u044b, \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u044f, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0435\u0442\u0438\u0437\u043c, \u0432\u043e\u0434\u0430, \u043c\u0443\u0437\u044b\u043a\u0430\u2026 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u043b\u043e \u0437\u0430 \u043f\u043e\u043b\u0441\u043e\u0442\u043d\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0438 \u044f\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438.<br \/> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ft\/gg\/3z\/ftgg3zohqpzqv_bsnryn9pvjnm0.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ft\/gg\/3z\/ftgg3zohqpzqv_bsnryn9pvjnm0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ft\/gg\/3z\/ftgg3zohqpzqv_bsnryn9pvjnm0.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0411\u0430\u0439\u0435\u0441\u043e\u0432\u0441\u043a\u0430\u044f (\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0413\u0430\u0443\u0441\u043e\u0432\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432) \u0438\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u0444\u043e\u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435\u0445 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a \u0441\u0432\u043e\u0435\u0439 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c\u043e\u0439 \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0441\u0430\u043c\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0437\u0430\u0434\u0430\u0447 \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438.<br \/> <a name=\"habracut\"><\/a><\/p>\n<h2>\u0421\u0430\u043c\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c<\/h2>\n<p> \u041c\u0435\u0442\u043e\u0434 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 (\u0434\u0430\u043b\u0435\u0435 CEM \u2014 cross-entropy method) \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438\u0448\u044c \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438: \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u0438 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0434\u043e \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u043e\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u0437\u0430 \u044d\u0442\u0438\u043c\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438, \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0443\u0431\u043e\u0434\u0440\u043e\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u0425\u043e\u0442\u044f \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e.<\/p>\n<h3>\u041a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f<\/h3>\n<p> \u0415\u0441\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u043c\u0443, \u0442\u043e \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438. \u0415\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u043c\u0443.<\/p>\n<p> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u00ab\u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0433\u043e\u00bb \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/efa\/1d4\/e76\/efa1d4e76d646b393ff7db32cffef118.svg\" alt=\"$p$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/efa\/1d4\/e76\/efa1d4e76d646b393ff7db32cffef118.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/efa\/1d4\/e76\/efa1d4e76d646b393ff7db32cffef118.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e\u0433\u0434\u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/49b\/912\/241\/49b912241e21904d84c9ce13cffa9a8f.svg\" alt=\"$q$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/49b\/912\/241\/49b912241e21904d84c9ce13cffa9a8f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/49b\/912\/241\/49b912241e21904d84c9ce13cffa9a8f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/78f\/300\/9c1\/78f3009c1d859b971464400651079b58.svg\" alt=\"$p$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/78f\/300\/9c1\/78f3009c1d859b971464400651079b58.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/78f\/300\/9c1\/78f3009c1d859b971464400651079b58.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">import numpy as np from scipy.stats import norm, beta, uniform, bernoulli from scipy.special import softmax import matplotlib.pyplot as plt import seaborn as sns sns.set()  # \u041e\u0446\u0435\u043d\u043a\u0430 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041c\u043e\u043d\u0442\u0435-\u041a\u0430\u0440\u043b\u043e: # \u0418\u0441\u0442\u0438\u043d\u043d\u043e\u0435 (\u0446\u0435\u043b\u0435\u0432\u043e\u0435) \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 p a_p, b_p = 7, 3  # \u041c\u043e\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 q_1 a_q_1, b_q_1 = 3, 5  # \u041c\u043e\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 q_2 a_q_2, b_q_2 = 4, 1  # \u041c\u043e\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 q_3 a_q_3, b_q_3 = 6.5, 2.5  # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 p N = 10000 samples_p = beta.rvs(a=a_p, b=b_p, size=N)  # \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 q_1 \u0432 \u0442\u043e\u0447\u043a\u0430\u0445 \u0438\u0437 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 p log_q_1 = beta.logpdf(samples_p, a=a_q_1, b=b_q_1) log_q_2 = beta.logpdf(samples_p, a=a_q_2, b=b_q_2) log_q_3 = beta.logpdf(samples_p, a=a_q_3, b=b_q_3)  # \u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u043e\u0439 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 h_p_q_1 = -np.mean(log_q_1) h_p_q_2 = -np.mean(log_q_2) h_p_q_3 = -np.mean(log_q_3)  print(\"\u041f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u0430\u044f \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f H(p, q):\", h_p_q_1)  x = np.linspace(0, 1, 300) p = beta.pdf(x, a=a_p, b=b_p) q_1 = beta.pdf(x, a=a_q_1, b=b_q_1) q_2 = beta.pdf(x, a=a_q_2, b=b_q_2) q_3 = beta.pdf(x, a=a_q_3, b=b_q_3)  plt.figure(figsize=(10, 5), dpi=150) plt.plot(x, p, label='p') plt.plot(x, q_1, label=r'$q_{1}, H(p, q_{1})=$' +f'{h_p_q_1:.3}') plt.plot(x, q_2, label=r'$q_{2}, H(p, q_{2})=$' +f'{h_p_q_2:.3}') plt.plot(x, q_3, label=r'$q_{3}, H(p, q_{3})=$' +f'{h_p_q_3:.3}')  plt.legend()  plt.title(r'''\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0439 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041c\u043e\u043d\u0442\u0435-\u041a\u0430\u0440\u043b\u043e \u043c\u0435\u0436\u0434\u0443 $p$ \u0438 \u0442\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438: $q_{1}$, $q_{2}$, $q_{3}$''') plt.show()<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qa\/zw\/mx\/qazwmxup9xsttdvail0zd5vp3vo.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/qa\/zw\/mx\/qazwmxup9xsttdvail0zd5vp3vo.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/qa\/zw\/mx\/qazwmxup9xsttdvail0zd5vp3vo.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u0438\u043d\u044f\u044f \u043b\u0438\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u043a\u0440\u0430\u0441\u043d\u0443\u044e, \u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u0441\u0445\u043e\u0436\u0435\u0441\u0442\u044c \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432. \u0410 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044f \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044e, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043d\u0443 \u0438\u043b\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0434 \u043d\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c).<\/p>\n<h3>\u0421\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p> \u0421\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u041c\u043e\u043d\u0442\u0435-\u041a\u0430\u0440\u043b\u043e. \u0418\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u00ab\u0432\u0430\u0436\u043d\u0435\u0435\u00bb, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435. \u041d\u0443, \u0430 \u0441\u0443\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u0430\u043a\u0438\u0445 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u00ab\u043f\u043e\u043e\u0449\u0440\u044f\u044e\u0442\u00bb \u0432\u0430\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/855\/cac\/fb1\/855cacfb1296999d614bf09ee1bd0ce6.svg\" alt=\"$A$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/855\/cac\/fb1\/855cacfb1296999d614bf09ee1bd0ce6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/855\/cac\/fb1\/855cacfb1296999d614bf09ee1bd0ce6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0432 \u0432\u044b\u043f\u0430\u0434\u0435\u043d\u0438\u0438 1 \u043f\u0440\u0438 \u0431\u0440\u043e\u0441\u043a\u0435 \u0438\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u0441\u0442\u0438, \u043d\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/9df\/e62\/a07\/9dfe62a07ed9889885d7267d444de908.svg\" alt=\"$[1, 100]$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/9df\/e62\/a07\/9dfe62a07ed9889885d7267d444de908.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/9df\/e62\/a07\/9dfe62a07ed9889885d7267d444de908.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/ae0\/1b6\/b9e\/ae01b6b9e9c80d125799eaa784a3af91.svg\" alt=\"$A$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/ae0\/1b6\/b9e\/ae01b6b9e9c80d125799eaa784a3af91.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/ae0\/1b6\/b9e\/ae01b6b9e9c80d125799eaa784a3af91.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0439. \u041d\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u0448 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/142\/246\/c2a\/142246c2a21d7aae4fb32b10b993f57b.svg\" alt=\"$[1, 30]$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/142\/246\/c2a\/142246c2a21d7aae4fb32b10b993f57b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/142\/246\/c2a\/142246c2a21d7aae4fb32b10b993f57b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439, \u0447\u0435\u043c \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/594\/d56\/944\/594d569440ef718b8f6370d1280dc83c.svg\" alt=\"$[31, 100]$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/594\/d56\/944\/594d569440ef718b8f6370d1280dc83c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/594\/d56\/944\/594d569440ef718b8f6370d1280dc83c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a, \u0442\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043e\u0446\u0435\u043d\u043e\u043a \u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438. <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">from numpy.random import randint  # \"\u0414\u043b\u0438\u043d\u0430\" \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 N = 100 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0439 n_iter = 3000  # \u0421\u043f\u0438\u0441\u043a\u0438 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043e\u0446\u0435\u043d\u043e\u043a: data_uniform_gen = [] data_modified_gen = [] for _ in range(n_iter):     # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \"\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0433\u043e\" \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430     samples_uniform_gen = randint(1, 100, size=N)     # \u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c     p_a_uniform_gen = np.cumsum(samples_uniform_gen == 1) \/ np.cumsum(samples_uniform_gen &lt; 7)     # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b     data_uniform_gen.append(p_a_uniform_gen)      # \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f \"\u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e\" \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430     samples_modified_gen = np.array([randint(1, 31) if np.random.rand() &lt; 2\/3 else randint(31, 100) for _ in range(N)])     p_a_modified_gen = np.cumsum(samples_modified_gen == 1) \/ np.cumsum(samples_modified_gen &lt; 7)     data_modified_gen.append(p_a_modified_gen)  # \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f std_uniform_gen = np.nanstd(np.vstack(data_uniform_gen), axis=0) std_modified_gen = np.nanstd(np.vstack(data_modified_gen), axis=0)  plt.figure(figsize=(10, 5), dpi=150) plt.plot(std_uniform_gen, label='\"\u0420\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439\" \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440') plt.plot(std_modified_gen, label='\"\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\" \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440')  plt.legend()  plt.ylabel(r'$\\sigma$', rotation=90) plt.xlabel('N') plt.title(\"\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043e\u0446\u0435\u043d\u043e\u043a \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432\")  plt.show()<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/0l\/cf\/i0\/0lcfi0agd0h1kpl3kukrhmmxals.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/0l\/cf\/i0\/0lcfi0agd0h1kpl3kukrhmmxals.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/0l\/cf\/i0\/0lcfi0agd0h1kpl3kukrhmmxals.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u043e\u043a \u0443 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0430\u043c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435 \u043f\u043e\u0434\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u0441\u0442\u044c? \u0410 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435, \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432 \u0443\u043c\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u0430\u0434\u0435\u043d\u0438\u044f 1? \u0417\u0430\u0447\u0435\u043c \u0442\u0430\u043a\u0438\u0435 \u0442\u0430\u043d\u0446\u044b \u0441 \u0431\u0443\u0431\u043d\u043e\u043c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e\u0431 \u0438\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0443\u0431\u0438\u043a\u0435?<\/p>\n<p> \u041a\u0443\u0431\u0438\u043a \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0434\u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043b\u0438\u0448\u044c \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043d\u0430 \u0438\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u0441\u0442\u0438.<\/p>\n<p> \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u00ab\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445\u00bb \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0447\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u0430\u043b\u0430, \u043d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0443\u0431\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0441\u0443\u0437\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430?<\/p>\n<p> \u0421\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u0410 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u2014 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438.<\/p>\n<h2>\u041a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/h2>\n<p> \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/224\/b33\/0f5\/224b330f575de5f44e939ceb0e160ab0.svg\" alt=\"$Z(x) = \\mathrm{sinc}(0.5x) - 0.01x^{2} + 0.2x.$\" data-tex=\"display\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/224\/b33\/0f5\/224b330f575de5f44e939ceb0e160ab0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/224\/b33\/0f5\/224b330f575de5f44e939ceb0e160ab0.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a: <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"># \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f def objective(x):     return np.sinc(0.5*x) - 0.01*x**2 + 0.2*x  x = np.linspace(-1.5, 20, 500) z = objective(x)  plt.figure(figsize=(5, 3), dpi=150) plt.plot(x, z) plt.xlabel('x') plt.ylabel('Z(x)') plt.title(r'$Z(x) = \\mathrm{sinc} (0.5 x) - 0.01 x^{2} + 0.2 x$') plt.show()<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rt\/fc\/ww\/rtfcwwgf1woquhgpd5zb6xszzn8.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/rt\/fc\/ww\/rtfcwwgf1woquhgpd5zb6xszzn8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/rt\/fc\/ww\/rtfcwwgf1woquhgpd5zb6xszzn8.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0439\u0434\u0435\u043c \u0435\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/883\/26d\/f07\/88326df07aacd336bc4807176df2a25b.svg\" alt=\"$(-1.5, 20)$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/883\/26d\/f07\/88326df07aacd336bc4807176df2a25b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/883\/26d\/f07\/88326df07aacd336bc4807176df2a25b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438.<\/p>\n<p> \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e, \u0443\u043b\u0443\u0447\u0448\u0430\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u043e\u0446\u0435\u043d\u043a\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p> \u0428\u0430\u0433\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:<\/p>\n<ol>\n<li> \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/f06\/339\/71d\/f0633971d37d0abe5b2c3357ddc0b023.svg\" alt=\"$U[-5, 20]$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/f06\/339\/71d\/f0633971d37d0abe5b2c3357ddc0b023.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/f06\/339\/71d\/f0633971d37d0abe5b2c3357ddc0b023.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. <\/li>\n<li> \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f.<\/li>\n<li> \u041e\u0446\u0435\u043d\u043a\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u044b\u0431\u043e\u0440\u043a\u0438.<\/li>\n<li> \u041e\u0442\u0431\u043e\u0440 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2014 \u00ab\u044d\u043b\u0438\u0442\u044b\u00bb.<\/li>\n<li> \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/li>\n<li> \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.<\/li>\n<\/ol>\n<p> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u043c. <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">max_iterations = 10     # \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 sample_size = 50        # \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 elite_size = 15         # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f  loc, scale = -5, 25     # \u0417\u0430\u0434\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f  elite_data = []  for i in range(max_iterations):     # \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443     samples = uniform.rvs(loc=loc, scale=scale, size=sample_size)     # \u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439     scores = objective(samples)     # \u041e\u0442\u0431\u043e\u0440 \u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439     elite_idx = np.argsort(scores)[-elite_size:]     elite_samples = samples[elite_idx]     # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u044d\u043b\u0438\u0442\u043d\u044b\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u0442\u043e\u043c \u043d\u0430 \u043d\u0438\u0445 \u0433\u043b\u044f\u043d\u0443\u0442\u044c     elite_data.append(elite_samples)     #print(scores[-1])     # \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432     loc, scale = uniform.fit(elite_samples)     # \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f     #print(f\"\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f {i+1:2d}: \u043b\u0443\u0447\u0448\u0435\u0435 z(x) = {scores[-1]:.3f} \u043f\u0440\u0438 x = {elite_samples[-1]:.3f}\")  plt.figure(figsize=(5, 3), dpi=150)  # \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c y_coords = np.linspace(0, 1, len(elite_data)) for i in range(len(elite_data)):     plt.plot(elite_data[i], [y_coords[i]] * elite_size, 'b|' )  plt.plot(x, z) plt.xlabel('x') plt.ylabel('Z(x)') plt.title(r'$Z(x) = \\mathrm{sinc} (0.5 x) - 0.01 x^{2} + 0.2 x$') plt.show()<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cq\/ez\/u7\/cqezu7imv_ywhrxeufrizh47spe.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/cq\/ez\/u7\/cqezu7imv_ywhrxeufrizh47spe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/cq\/ez\/u7\/cqezu7imv_ywhrxeufrizh47spe.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e. \u041d\u043e \u0433\u0434\u0435 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f? \u0418 \u043f\u043e\u0447\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u044f?<\/p>\n<p> \u0414\u0435\u043b\u043e \u0432\u043e\u0442 \u0432 \u0447\u0435\u043c. \u041c\u044b \u0432\u0432\u0435\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/c8a\/b6e\/5f0\/c8ab6e5f08ac6a289d0e975eb485169a.svg\" alt=\"$p(x, v)$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/c8a\/b6e\/5f0\/c8ab6e5f08ac6a289d0e975eb485169a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/c8a\/b6e\/5f0\/c8ab6e5f08ac6a289d0e975eb485169a.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/445\/de4\/454\/445de4454fbfa9277276f0969f144bf2.svg\" alt=\"$x$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/445\/de4\/454\/445de4454fbfa9277276f0969f144bf2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/445\/de4\/454\/445de4454fbfa9277276f0969f144bf2.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u2014 \u044d\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0430 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/87d\/beb\/b6f\/87dbebb6fb5bd29bdbf9dfadf6e7856e.svg\" alt=\"$v$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/87d\/beb\/b6f\/87dbebb6fb5bd29bdbf9dfadf6e7856e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/87d\/beb\/b6f\/87dbebb6fb5bd29bdbf9dfadf6e7856e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u2014 \u044d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435. \u0414\u0430\u043b\u0435\u0435, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u00ab\u0445\u043e\u0440\u043e\u0448\u0438\u0445\u00bb \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u044d\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438: <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/a93\/04e\/cbd\/a9304ecbdc5dceefcc76b96cbbb27d92.svg\" alt=\"$\\mathrm{elite} = [x_{1}, ..., x_{k}]$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/a93\/04e\/cbd\/a9304ecbdc5dceefcc76b96cbbb27d92.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/a93\/04e\/cbd\/a9304ecbdc5dceefcc76b96cbbb27d92.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e CEM \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0438\u0442\u044b \u0438 \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/ffb\/e7f\/e2e\/ffbe7fe2ee182922d734b8fff5c3630f.svg\" alt=\"$H(p_{\\mathrm{elite}}(x), \\; p(x, v)) = - \\int p_{\\mathrm{elite}}(x) \\log p(x, v) dx.$\" data-tex=\"display\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/ffb\/e7f\/e2e\/ffbe7fe2ee182922d734b8fff5c3630f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/ffb\/e7f\/e2e\/ffbe7fe2ee182922d734b8fff5c3630f.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0440\u0430\u0432\u043d\u043e\u0441\u0438\u043b\u044c\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u044f, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u0430 \u043f\u043e \u0435\u0435 \u044d\u043b\u0438\u0442\u0435. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u0447\u0438\u0441\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/3b4\/116\/a65\/3b4116a655cffeb165af4bb52f581f6c.svg\" alt=\"$p_{\\mathrm{elite}}(x)$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/3b4\/116\/a65\/3b4116a655cffeb165af4bb52f581f6c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/3b4\/116\/a65\/3b4116a655cffeb165af4bb52f581f6c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/10a\/8b1\/de5\/10a8b1de5708e1c21be7244a972d2386.svg\" alt=\"$p(x, v)$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/10a\/8b1\/de5\/10a8b1de5708e1c21be7244a972d2386.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/10a\/8b1\/de5\/10a8b1de5708e1c21be7244a972d2386.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0443, \u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/12b\/ed6\/24a\/12bed624a2d75eb5fa1143b0e83c2f05.svg\" alt=\"$v^{t+1} = \\underset{v}{\\mathrm{argmax}} \\sum_{x \\in \\mathrm{elite}} \\log p(x, v),$\" data-tex=\"display\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/12b\/ed6\/24a\/12bed624a2d75eb5fa1143b0e83c2f05.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/12b\/ed6\/24a\/12bed624a2d75eb5fa1143b0e83c2f05.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0430 \u044d\u0442\u043e \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043d\u043e\u0435, \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u044f \u044d\u043b\u0438\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/1b9\/31a\/107\/1b931a1078b050c25c1a5baaf821172e.svg\" alt=\"$p(x, v)$\" data-tex=\"inline\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/1b9\/31a\/107\/1b931a1078b050c25c1a5baaf821172e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/formulas\/1b9\/31a\/107\/1b931a1078b050c25c1a5baaf821172e.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p> \u041d\u043e \u043a\u043e\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u044d\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438? \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u041c\u043e\u043d\u0442\u0435-\u041a\u0430\u0440\u043b\u043e, \u0442.\u0435. \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440, \u0443 \u043d\u0430\u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u044d\u043b\u0438\u0442\u0443. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0435 \u0442\u043e\u0433\u043e \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u041c\u043e\u043d\u0442\u0435-\u041a\u0430\u0440\u043b\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0438\u0442\u044b \u0438 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0437\u0431\u0440\u0435\u0434\u0435\u0442 \u043d\u0430\u043c \u0432 \u0433\u043e\u043b\u043e\u0432\u0443. \u0418 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u00ab\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0437\u0430\u043a\u043e\u043d\u043d\u043e\u0433\u043e\u00bb, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441\u044d\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043e\u0449\u0440\u044f\u0435\u0442 \u043d\u0430\u0441 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043e\u0449\u0440\u044f\u044e\u0442 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<p> \u0412 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435. \u041d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u043e\u043f\u0440\u043e\u0441: \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u044b\u0431\u043e\u0440? \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438. \u041d\u043e \u0432 \u044d\u043b\u0438\u0442\u043d\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043b\u044e\u0434\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u0430\u044f \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c. \u0422\u043e\u0433\u0434\u0430 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438 \u043f\u0440\u0430\u0432\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u0448\u0430 \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0437\u043e\u0431\u0438\u043b\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0441\u0430\u043c\u0438, \u0438 \u043e\u043d\u0438 \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u044b? \u0422\u043e \u0447\u0442\u043e, \u0441\u043d\u043e\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435? \u0414\u0430!<\/p>\n<p> \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043c\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u0435, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u044f \u044d\u0442\u043e \u043d\u0435 \u0444\u0438\u0447\u0430, \u0430 \u0431\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443) \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0423\u043b\u0443\u0447\u0448\u0430\u0439\u0437\u0438\u043d\u0433 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430<\/h2>\n<p> \u041a\u0430\u043a \u043c\u044b \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442. \u041d\u043e \u044d\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0440 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439. \u041d\u0443, \u0430 \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u2014 \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<p> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0435 0-1 (\u0432\u0441\u0435 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0435), \u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u0442 <a href=\"https:\/\/people.sc.fsu.edu\/~jburkardt\/datasets\/knapsack_01\/knapsack_01.html?spm=a2ty_o01.29997173.0.0.2253c921AwZ3mb\" rel=\"nofollow noopener noreferrer\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>:<\/p>\n<p> <b>\u0412\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430<\/b>: 6404180<br \/> <b>\u0412\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432<\/b>: [382745, 799601, 909247, 729069, 467902, 44328, 34610, 698150, 823460, 903959, 853665, 551830, 610856, 670702, 488960, 951111, 323046, 446298, 931161, 31385, 496951, 264724, 224916, 169684]<br \/> <b>\u0426\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432<\/b>: [825594, 1677009, 1676628, 1523970, 943972, 97426, 69666, 1296457, 1679693, 1902996, 1844992, 1049289, 1252836, 1319836, 953277, 2067538, 675367, 853655, 1826027, 65731, 901489, 577243, 466257, 369261]<br \/> <b>\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/b>: [1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1]<\/p>\n<p> \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435 \u0437\u0430\u043a\u043e\u0434\u0438\u043c. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 <b>cem_v1<\/b> \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 cem_v1<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"># --- \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 --- # \u0412\u0435\u0441\u0430 weights = np.array([382745, 799601, 909247, 729069, 467902, 44328,                     34610, 698150, 823460, 903959, 853665, 551830,                     610856, 670702, 488960, 951111, 323046, 446298,                     931161, 31385, 496951, 264724, 224916, 169684]) # \u0426\u0435\u043d\u043d\u043e\u0441\u0442\u0438 values = np.array([825594, 1677009, 1676628, 1523970, 943972, 97426,                    69666, 1296457, 1679693, 1902996, 1844992, 1049289,                    1252836, 1319836, 953277, 2067538, 675367, 853655,                    1826027, 65731, 901489, 577243, 466257, 369261])  # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430 capacity = 6404180  def cem_v1(weights, values, capacity, printer):     \"\"\"     \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0435 0-1. \u0420\u0435\u0448\u0435\u043d\u0438\u0435\u043c     \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c 0 - \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442,     \u0430 1 - \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442. \u041d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0435     \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e.     \u0422\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430.          Args:     weights (array) - \u0432\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     values (array) - \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     capacity (int) - \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430;     printer (bool) - \u0435\u0441\u043b\u0438 True, \u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442,                      \u0435\u0441\u043b\u0438 False, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.      Returns:     best_score - \u043e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     best_weight - \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     num_of_iters - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439.     \"\"\"     # --- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b CEM ---     sample_size = 100       # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0437\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e     elite_size = 10         # \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043b\u0438\u0442\u044b      # --- \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ---     flag = False            # \u0444\u043b\u0430\u0433 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430     min_delta_p = 0.001     # \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438     num_of_iters = 0        # \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439     n_items = len(weights)  # \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432          # --- \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f ---     # \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u044b)     p = np.full(n_items, 0.5)          # --- \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u0448\u0442\u0440\u0430\u0444\u043e\u043c \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 ---     def objective(x):         total_weight = np.sum(x * weights)         if total_weight &gt; capacity:             return -1000  # \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443         return np.sum(x * values)          while not flag:                  # \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432. \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e binomial, \u0447\u0442\u043e         # \u0443\u0434\u043e\u0431\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435 0-1. \u041d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0445         # \u0437\u0430\u0434\u0430\u0447 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c choice.         samples = np.random.binomial(n=1, p=p, size=(sample_size, n_items))              # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u043e\u043a         scores = np.array([objective(x) for x in samples])              # \u041e\u0442\u0431\u043e\u0440 \u044d\u043b\u0438\u0442\u044b         elite_indices = np.argsort(scores)[-elite_size:]  # \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f         elite_samples = samples[elite_indices]              # \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439         p_new = elite_samples.mean(axis=0)              # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430         flag = np.all(np.abs(p_new - p) &lt; min_delta_p)              p = p_new         num_of_iters += 1          # \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     best_vector = elite_samples[-1]    # \u041b\u0443\u0447\u0448\u0435\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435     best_score = scores[elite_indices[-1]]     best_weight = np.sum(best_vector * weights)          if printer == True:         print(f\"Number of iterations {num_of_iters}: Best score = {best_score}, Best weight = {best_weight}\")     else:         return best_score, best_weight, num_of_iters  cem_v1(weights=weights, values=values, capacity=capacity, printer=True)<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u044b\u0434\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0431\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439: <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"># \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043e\u0431\u0449\u0438\u0435 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f x_star = np.array([1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1]) total_value_star = sum(x_star * values) total_weight_star = sum(x_star * weights)  # \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e 3000 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cem_v1() data_on_solutions_cem_v1 = np.array([     cem_v1(weights=weights,            values=values,            capacity=capacity,            printer=False)     for _ in range(3000) ])  fig, ax = plt.subplots(1, 3, figsize=(12, 4), dpi=150) sns.histplot(data_on_solutions_cem_v1[:, 0], ax=ax[0]) ax[0].axvline(total_value_star, c='k') ax[0].set_title('\u041e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c')  sns.histplot(data_on_solutions_cem_v1[:, 1], ax=ax[1]) ax[1].axvline(total_weight_star, c='k') ax[1].set_ylabel('') ax[1].set_title('\u041e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441')  sns.histplot(data_on_solutions_cem_v1[:, 2], discrete=True, ax=ax[2]) ax[2].set_ylabel('') ax[2].set_title('\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439');<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/it\/s9\/iv\/its9ivsqebfhm4g3quevhy5pk7i.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/it\/s9\/iv\/its9ivsqebfhm4g3quevhy5pk7i.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/it\/s9\/iv\/its9ivsqebfhm4g3quevhy5pk7i.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0431\u044a\u0435\u043c\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u044d\u043b\u0438\u0442\u044b. \u041d\u043e \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<h3>\u0428\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p> \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u0430\u043a-\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u0448\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043a\u0430\u043a-\u0442\u043e \u0440\u0435\u0436\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0432 \u044d\u043b\u0438\u0442\u0443. \u0428\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0448\u0442\u0440\u0430\u0444\u0430\u043c\u0438 \u043c\u044b \u0438\u0441\u043a\u0430\u0436\u0430\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443. \u041d\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e.<\/p>\n<p> \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0448\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430. \u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0448\u0442\u0440\u0430\u0444\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c -1000, \u0447\u0442\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0430\u0438\u0432\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c. \u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0449\u0435\u0439 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0435\u0441\u0430, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0432\u043e\u0442 \u044d\u0442\u043e:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">p = np.full(len(weights), 0.5) samples = np.random.binomial(n=1, p=p, size=(5000, len(weights))) total_weight_data = np.array([np.sum(x * weights) for x in samples]) total_value_data = np.array([np.sum(x * values) for x in samples])  plt.figure(figsize=(10, 5), dpi=150) plt.scatter(total_weight_data, total_value_data, s=1, alpha=0.3) plt.axvline(total_weight_star, c='r') plt.axhline(total_value_star, c='r')  plt.xlabel('\u0412\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432'); plt.ylabel('\u0426\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432') plt.title('\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0449\u0435\u0439 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0435\u0441\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432')  plt.show()<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/98\/zj\/za\/98zjza7nkisxp073tx2-0-csgoe.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/98\/zj\/za\/98zjza7nkisxp073tx2-0-csgoe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/98\/zj\/za\/98zjza7nkisxp073tx2-0-csgoe.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435, \u043d\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435 \u0436\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0432 \u044d\u043b\u0438\u0442\u0443. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0430\u0442\u044c \u0432\u0441\u0435\u0445 \u00ab\u043d\u0435\u0433\u043e\u0434\u044f\u0435\u0432\u00bb \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u0448\u0442\u0440\u0430\u0444\u043e\u043c \u2014 \u043d\u0435 \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u0434\u0435\u044f. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u0443\u044e \u0448\u0442\u0440\u0430\u0444\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430) \u044d\u0442\u043e \u043d\u0435 \u0434\u0430\u0441\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u0440\u043e\u0441\u0442\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0448\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0444\u0438\u0447\u0435\u0439.<\/p>\n<h3>\u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p> \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u0442.\u0435. \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043b\u044e \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u044d\u043b\u0438\u0442\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432-\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041d\u043e \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043d\u0435 \u043a\u043e\u043c\u0438\u043b\u044c\u0444\u043e. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0435\u0437\u043a\u0438\u0435 \u0441\u043a\u0430\u0447\u043a\u0438 \u043e\u0442 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u2014 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e, \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e. \u0410 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0441\u043e\u0444\u0442\u043c\u0430\u043a\u0441 \u0441 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439.<\/p>\n<pre><code class=\"python\">def p_temper_softmax(x, T, len_x):     \"\"\"     \u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0446 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439     \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \"\u044d\u043b\u0438\u0442\u043d\u043e\u0439\" \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 softmax \u0441 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439.      Args:     x - \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0441 \u044d\u043b\u0438\u0442\u043d\u044b\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438;     T - \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430;     len_x - \u043e\u0431\u044a\u0435\u043c \u044d\u043b\u0438\u0442\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438.      Returns:     \u041c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445     \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.     \"\"\"          ones = x.sum(axis=0)     x = np.vstack((len_x - ones, ones))     return softmax(x\/ T, axis=0)[-1]<\/code><\/pre>\n<p> \u0421\u043a\u043e\u0440\u0435\u0435 \u043a\u043e\u0434\u0438\u043c <b>cem_v2<\/b>, \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 cem_v2 \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">def cem_v2(weights, values, capacity, printer):     \"\"\"     \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0435 0-1. \u0420\u0435\u0448\u0435\u043d\u0438\u0435\u043c     \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c 0 - \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442,     \u0430 1 - \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442. \u041d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0435     \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e.     \u0422\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430.          Args:     weights (array) - \u0432\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     values (array) - \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     capacity (int) - \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430;     printer (bool) - \u0435\u0441\u043b\u0438 True, \u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442,                      \u0435\u0441\u043b\u0438 False, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.      Returns:     best_score - \u043e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     best_weight - \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     num_of_iters - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439.     \"\"\"          # --- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b CEM ---     sample_size = 100       # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0437\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e     elite_size = 10         # \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043b\u0438\u0442\u044b      # --- \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ---     flag = False            # \u0444\u043b\u0430\u0433 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430     min_delta_p = 0.001     # \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438     num_of_iters = 0        # \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439     n_items = len(weights)  # \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432          # --- \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f ---     # \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u044b)     p = np.full(n_items, 0.5)          # --- \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u0448\u0442\u0440\u0430\u0444\u043e\u043c \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 ---     def objective(x):         total_weight = np.sum(x * weights)         if total_weight &gt; capacity:             return -1000  # \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443         return np.sum(x * values)          while not flag:                  # \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432         samples = np.random.binomial(n=1, p=p, size=(sample_size, n_items))              # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u043e\u043a         scores = np.array([objective(x) for x in samples])              # \u041e\u0442\u0431\u043e\u0440 \u044d\u043b\u0438\u0442\u044b         elite_indices = np.argsort(scores)[-elite_size:]  # \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f         elite_samples = samples[elite_indices]              # \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439         p_new = p_temper_softmax(x=elite_samples, T=4, len_x=elite_size)              # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430         flag = np.all(np.abs(p_new - p) &lt; min_delta_p)              p = p_new         num_of_iters += 1         if num_of_iters &gt; 50:             break          # \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     best_vector = elite_samples[-1]    # \u041b\u0443\u0447\u0448\u0435\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435     best_score = scores[elite_indices[-1]]     best_weight = np.sum(best_vector * weights)          if printer == True:         print(f\"Number of iterations {num_of_iters}: Best score = {best_score}, Best weight = {best_weight}\")     else:         return best_score, best_weight, num_of_iters  # \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e 3000 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cem_v1() data_on_solutions_cem_v2 = np.array([     cem_v2(weights=weights,            values=values,            capacity=capacity,            printer=False)     for _ in range(3000) ])  fig, ax = plt.subplots(1, 3, figsize=(12, 4), dpi=150)  sns.histplot(data_on_solutions_cem_v1[:, 0], ax=ax[0], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 0], ax=ax[0], element=\"step\", fill=False, label='v2') ax[0].axvline(total_value_star, c='k') ax[0].legend() ax[0].set_title('\u041e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c')  sns.histplot(data_on_solutions_cem_v1[:, 1], ax=ax[1], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 1], ax=ax[1], element=\"step\", fill=False, label='v2') ax[1].axvline(total_weight_star, c='k') ax[1].set_ylabel('') ax[1].legend() ax[1].set_title('\u041e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441')  sns.histplot(data_on_solutions_cem_v1[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v2') ax[2].set_ylabel('') ax[2].legend() ax[2].set_title('\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439');<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/o1\/ex\/e9\/o1exe9cpn5nugqzzttxaux1nyea.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/o1\/ex\/e9\/o1exe9cpn5nugqzzttxaux1nyea.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/o1\/ex\/e9\/o1exe9cpn5nugqzzttxaux1nyea.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u0427\u0442\u043e \u0436, \u043e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u0430 \u0445\u0432\u043e\u0441\u0442 \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0432 \u0432\u0435\u0440\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041f\u0440\u0430\u0432\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e\u0441\u044c \u2014 \u043d\u043e \u043a\u043e\u043c\u0443 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0414\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435!<\/p>\n<h3>\u0412\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h3>\n<p> Softmax \u2014 \u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0441 \u043d\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0441\u0443\u0431\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u0443 \u0438 \u043f\u0440\u043e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c.<\/p>\n<pre><code class=\"python\">def p_weighted_score(elite_scores, elite_samples, size_samples, T):     \"\"\"     \u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u044d\u043b\u0438\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e     \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.      Args:     elite_scores - \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0438\u0442\u0435;     elite_samples - \u044d\u043b\u0438\u0442\u0430;     size_samples - \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043b\u0438\u0442\u044b;     T - \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430.      Returns:     \u041c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445     \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.          \"\"\"     # \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438  \u0434\u0435\u043b\u0438\u043c \u043d\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443     mu = np.mean(elite_scores)     sigma = np.std(elite_scores) + 1    # \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c 1 \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u0438 sigma = 0 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f nan     elite_scores = (elite_scores - mu) \/ (T * sigma)      # \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u0435\u0441\u0430     weights_softmax = softmax(elite_scores).reshape(size_samples, -1)      # \u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e     p = np.sum(weights_softmax * elite_samples, axis=0)     p = np.clip(p, 0, 1)    # \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043e\u0442 \u043d\u0430\u043d\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u0438\u0437 [0, 1]     return p<\/code><\/pre>\n<p> \u041a\u043e\u0434\u0438\u043c <b>cem_v3<\/b> \u0438 \u0441 \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435\u043c \u0436\u0434\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 cem_v3 \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">def cem_v3(weights, values, capacity, printer):     \"\"\"     \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0435 0-1. \u0420\u0435\u0448\u0435\u043d\u0438\u0435\u043c     \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c 0 - \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442,     \u0430 1 - \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442. \u041d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0435     \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e.     \u0422\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430.          Args:     weights (array) - \u0432\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     values (array) - \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     capacity (int) - \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430;     printer (bool) - \u0435\u0441\u043b\u0438 True, \u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442,                      \u0435\u0441\u043b\u0438 False, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.      Returns:     best_score - \u043e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     best_weight - \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     num_of_iters - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439.     \"\"\"     # --- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b CEM ---     sample_size = 100       # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0437\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e     elite_size = 10         # \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043b\u0438\u0442\u044b      # --- \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ---     flag = False            # \u0444\u043b\u0430\u0433 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430     min_delta_p = 0.001     # \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438     num_of_iters = 0        # \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439     n_items = len(weights)  # \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432          # --- \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f ---     # \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u044b)     p = np.full(n_items, 0.5)          # --- \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u0448\u0442\u0440\u0430\u0444\u043e\u043c \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 ---     def objective(x):         total_weight = np.sum(x * weights)         # \u0415\u0441\u043b\u0438 \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440         # \u0448\u0442\u0440\u0430\u0444\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438         if total_weight &gt; capacity:             return 11000000  # \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443         return np.sum(x * values)          while not flag:                  # \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432         samples = np.random.binomial(n=1, p=p, size=(sample_size, n_items))              # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u043e\u043a         scores = np.array([objective(x) for x in samples])              # \u041e\u0442\u0431\u043e\u0440 \u044d\u043b\u0438\u0442\u044b         elite_indices = np.argsort(scores)[-elite_size:]  # \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f         elite_scores = scores[elite_indices]         elite_samples = samples[elite_indices]              # \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439         p_new = p_weighted_score(             elite_scores=elite_scores,             elite_samples=elite_samples,             size_samples=elite_size,             T=0.8         )         #print(elite_samples)              # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430         flag = np.all(np.abs(p_new - p) &lt; min_delta_p)              p = p_new         num_of_iters += 1          # \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     best_vector = elite_samples[-1]    # \u041b\u0443\u0447\u0448\u0435\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435     best_score = scores[elite_indices[-1]]     best_weight = np.sum(best_vector * weights)          if printer == True:         print(f\"Number of iterations {num_of_iters}: Best score = {best_score}, Best weight = {best_weight}\")     else:         return best_score, best_weight, num_of_iters  # \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e 3000 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cem_v1() data_on_solutions_cem_v3 = np.array([     cem_v3(weights=weights,            values=values,            capacity=capacity,            printer=False)     for _ in range(3000) ])  fig, ax = plt.subplots(1, 3, figsize=(12, 4), dpi=150)  sns.histplot(data_on_solutions_cem_v1[:, 0], ax=ax[0], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 0], ax=ax[0], element=\"step\", fill=False, label='v2') sns.histplot(data_on_solutions_cem_v3[:, 0], ax=ax[0], element=\"step\", fill=False, label='v3') ax[0].axvline(total_value_star, c='k') ax[0].legend() ax[0].set_title('\u041e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c')  sns.histplot(data_on_solutions_cem_v1[:, 1], ax=ax[1], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 1], ax=ax[1], element=\"step\", fill=False, label='v2') sns.histplot(data_on_solutions_cem_v3[:, 1], ax=ax[1], element=\"step\", fill=False, label='v3') ax[1].axvline(total_weight_star, c='k') ax[1].set_ylabel('') ax[1].legend() ax[1].set_title('\u041e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441')  sns.histplot(data_on_solutions_cem_v1[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v2') sns.histplot(data_on_solutions_cem_v3[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v3') ax[2].set_ylabel('') ax[2].legend() ax[2].set_title('\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439');<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/a6\/ui\/e6\/a6uie6fhxmbracxjhhsj3tkg9qi.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/a6\/ui\/e6\/a6uie6fhxmbracxjhhsj3tkg9qi.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/a6\/ui\/e6\/a6uie6fhxmbracxjhhsj3tkg9qi.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c \u0444\u0438\u0447\u0430 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u0443\u0440\u0430!<\/p>\n<h3>\u0411\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u044d\u043b\u0438\u0442\u044b<\/h3>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0439 \u0434\u0443\u0448\u043e\u0439 \u0440\u0430\u0434\u0438 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u0430 \u0432\u0437\u044f\u0442\u044c \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0432 <b>cem_v3<\/b> \u043e\u0431\u044a\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u044d\u043b\u0438\u0442\u044b \u0432 2 \u0440\u0430\u0437\u0430. \u042d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u044f\u043c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439, \u043d\u043e \u043c\u044b \u0437\u0430\u043a\u043e\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e <b>cem_v4<\/b> \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 cem_v4 \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">def cem_v4(weights, values, capacity, printer):     \"\"\"     \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0435 0-1. \u0420\u0435\u0448\u0435\u043d\u0438\u0435\u043c     \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c 0 - \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442,     \u0430 1 - \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442. \u041d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0435     \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e.     \u0422\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430.          Args:     weights (array) - \u0432\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     values (array) - \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     capacity (int) - \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u044e\u043a\u0437\u0430\u043a\u0430;     printer (bool) - \u0435\u0441\u043b\u0438 True, \u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442,                      \u0435\u0441\u043b\u0438 False, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.      Returns:     best_score - \u043e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     best_weight - \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432;     num_of_iters - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439.     \"\"\"     # --- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b CEM ---     sample_size = 200      # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0437\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e     elite_size = 20        # \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043b\u0438\u0442\u044b      # --- \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ---     flag = False            # \u0444\u043b\u0430\u0433 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430     min_delta_p = 0.001     # \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438     num_of_iters = 0        # \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439     n_items = len(weights)  # \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432          # --- \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f ---     # \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u044b)     p = np.full(n_items, 0.5)          # --- \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u0448\u0442\u0440\u0430\u0444\u043e\u043c \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 ---     def objective(x):         total_weight = np.sum(x * weights)         # \u0415\u0441\u043b\u0438 \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440         # \u0448\u0442\u0440\u0430\u0444\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438         if total_weight &gt; capacity:             return 11000000  # \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443         return np.sum(x * values)          while not flag:                  # \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432         samples = np.random.binomial(n=1, p=p, size=(sample_size, n_items))              # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u043e\u043a         scores = np.array([objective(x) for x in samples])              # \u041e\u0442\u0431\u043e\u0440 \u044d\u043b\u0438\u0442\u044b         elite_indices = np.argsort(scores)[-elite_size:]  # \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f         elite_scores = scores[elite_indices]         elite_samples = samples[elite_indices]              # \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439         p_new = p_weighted_score(             elite_scores=elite_scores,             elite_samples=elite_samples,             size_samples=elite_size,             T=0.8         )         #print(p_new)              # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430         flag = np.all(np.abs(p_new - p) &lt; min_delta_p)              p = p_new         num_of_iters += 1          # \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     best_vector = elite_samples[-1]    # \u041b\u0443\u0447\u0448\u0435\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435     best_score = scores[elite_indices[-1]]     best_weight = np.sum(best_vector * weights)          if printer == True:         print(f\"Number of iterations {num_of_iters}: Best score = {best_score}, Best weight = {best_weight}\")     else:         return best_score, best_weight, num_of_iters  # \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e 3000 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 cem_v1() data_on_solutions_cem_v4 = np.array([     cem_v4(weights=weights,            values=values,            capacity=capacity,            printer=False)     for _ in range(3000) ])  fig, ax = plt.subplots(1, 3, figsize=(12, 4), dpi=150)  sns.histplot(data_on_solutions_cem_v1[:, 0], ax=ax[0], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 0], ax=ax[0], element=\"step\", fill=False, label='v2') sns.histplot(data_on_solutions_cem_v3[:, 0], ax=ax[0], element=\"step\", fill=False, label='v3') sns.histplot(data_on_solutions_cem_v4[:, 0], ax=ax[0], element=\"step\", fill=False, label='v4') ax[0].axvline(total_value_star, c='k') ax[0].legend() ax[0].set_title('\u041e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c')  sns.histplot(data_on_solutions_cem_v1[:, 1], ax=ax[1], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 1], ax=ax[1], element=\"step\", fill=False, label='v2') sns.histplot(data_on_solutions_cem_v3[:, 1], ax=ax[1], element=\"step\", fill=False, label='v3') sns.histplot(data_on_solutions_cem_v4[:, 1], ax=ax[1], element=\"step\", fill=False, label='v4') ax[1].axvline(total_weight_star, c='k') ax[1].set_ylabel('') ax[1].legend() ax[1].set_title('\u041e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441')  sns.histplot(data_on_solutions_cem_v1[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v1') sns.histplot(data_on_solutions_cem_v2[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v2') sns.histplot(data_on_solutions_cem_v3[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v3') sns.histplot(data_on_solutions_cem_v4[:, 2], discrete=True, ax=ax[2], element=\"step\", fill=False, label='v4') ax[2].set_ylabel('') ax[2].legend() ax[2].set_title('\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439');<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qs\/b2\/qm\/qsb2qmeizaa-qjuorcx--0is51m.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/qs\/b2\/qm\/qsb2qmeizaa-qjuorcx--0is51m.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/qs\/b2\/qm\/qsb2qmeizaa-qjuorcx--0is51m.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u0422\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0430\u0445\u043d\u0443\u0442\u044c \u043f\u043e 1000 \u0438 100 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043c\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u044d\u043b\u0438\u0442\u044b? \u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a \u0432 <b>cem_v3<\/b>, \u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0443\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 100%-\u043e\u0439.<\/p>\n<p> \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0434\u0430, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\u043e\u0432 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0436\u0438\u0433\u0430\u0435\u043c\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043a \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\u043e\u0432, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438, \u0442\u043e\u0436\u0435 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043a \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0435\u0441\u0442\u044c, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p> \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u2014 \u044d\u0442\u043e \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u043d\u0430 \u0443\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\/\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435, \u0430 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0442\u0440\u0438\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u043d\u0433\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u0442\u043e \u0435\u0435 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p> \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0443\u0447\u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h2>\u0421\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p> \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0431 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u0440\u044e\u043a\u0437\u0430\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0432 \u0442\u043e\u043c \u0436\u0435 OR-Tools. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u044e\u043a\u0437\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u043f\u043b\u043e\u0432\u043e\u0437\u043e\u043c \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e, \u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u0438\u043b\u0438 \u0441\u044b\u0440\u044c\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430. \u041f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0438 \u0441\u044b\u0440\u044c\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0440\u0442\u0438\u0442\u044c\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u0445 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u043c\u043e\u0433\u0443\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443. \u0426\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u044b <b>\u0441\u0440\u0435\u0434\u043d\u044f\u044f<\/b> \u043e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438\u043b\u0438 <b>\u0441\u0440\u0435\u0434\u043d\u0438\u0439<\/b> \u043e\u0431\u0449\u0438\u0439 \u0432\u0435\u0441 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0441\u044b\u0440\u044c\u044f \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0431\u044b\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438. \u0410 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0435\u0441 \u043d\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0438\u0441\u044c \u043d\u0438\u0436\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p> \u00ab\u0417\u0430\u043f\u0438\u0445\u043d\u0443\u0442\u044c\u00bb \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u043e\u043b\u0432\u0435\u0440\u044b \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0445\u043e\u0442\u044f \u043d\u0430 \u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u0432 \u043f\u043b\u0430\u043d\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0437\u043d\u0430\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u041d\u043e \u0442\u0435\u043c\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043e\u0431\u0448\u0438\u0440\u043d\u0430\u044f \u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f, \u0432 \u043e\u0431\u0449\u0435\u043c, \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b-\u043f\u043e\u0434\u0443\u043c\u0430\u043b-\u043f\u043e\u0434\u0443\u043c\u0430\u043b \u0438 \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438!<\/p>\n<h2>\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p> \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0435. \u0416\u043c\u0443 F5 \u043e\u0436\u0438\u0434\u0430\u044f \u0432\u0430\u0448\u0438\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432.<\/p>\n<p> \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0442\u0435\u043c\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 (\u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e, \u043d\u0435 \u043c\u043e\u0439) \u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/noml_community\" rel=\"nofollow noopener noreferrer\">NoML Community<\/a> \u0432 \u0442\u0435\u043b\u0435\u0433\u0435, \u0442\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e OR (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e), \u0430 \u0435\u0449\u0435 \u0442\u0430\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0441\u0435\u043c\u0438\u043d\u0430\u0440\u044b.<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/922454\/\"> https:\/\/habr.com\/ru\/articles\/922454\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435? \u041c\u0443\u0440\u0430\u0432\u044c\u0438, \u043e\u0442\u0436\u0438\u0433, \u0433\u0435\u043d\u0435\u0442\u0438\u043a\u0430, \u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438\u0446, \u043f\u0447\u0435\u043b\u044b, \u0441\u0432\u0435\u0442\u043b\u044f\u0447\u043a\u0438, \u043a\u0443\u043a\u0443\u0448\u043a\u0438, \u0433\u0443\u0441\u0438, \u0441\u043e\u0432\u044b, \u043b\u0435\u0442\u0443\u0447\u0438\u0435 \u043c\u044b\u0448\u0438, \u043e\u0441\u044c\u043c\u0438\u043d\u043e\u0433\u0438, \u0434\u0435\u043b\u044c\u0444\u0438\u043d\u044b, \u043a\u0438\u0442\u044b, \u0448\u0438\u043c\u043f\u0430\u043d\u0437\u0435, \u0433\u043e\u0440\u0438\u043b\u043b\u044b, \u043b\u044c\u0432\u044b, \u0441\u043b\u043e\u043d\u044b, \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u044f, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0435\u0442\u0438\u0437\u043c, \u0432\u043e\u0434\u0430, \u043c\u0443\u0437\u044b\u043a\u0430\u2026 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u043b\u043e \u0437\u0430 \u043f\u043e\u043b\u0441\u043e\u0442\u043d\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0438 \u044f\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438.<br \/> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ft\/gg\/3z\/ftgg3zohqpzqv_bsnryn9pvjnm0.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ft\/gg\/3z\/ftgg3zohqpzqv_bsnryn9pvjnm0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ft\/gg\/3z\/ftgg3zohqpzqv_bsnryn9pvjnm0.png 781w\" loading=\"lazy\" decode=\"async\"\/><br \/> \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0411\u0430\u0439\u0435\u0441\u043e\u0432\u0441\u043a\u0430\u044f (\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0413\u0430\u0443\u0441\u043e\u0432\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432) \u0438\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u0444\u043e\u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435\u0445 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a \u0441\u0432\u043e\u0435\u0439 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c\u043e\u0439 \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0441\u0430\u043c\u044b\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0437\u0430\u0434\u0430\u0447 \u0441\u0442\u043e\u0445\u0430\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-464847","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/464847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=464847"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/464847\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=464847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=464847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=464847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}