{"id":334280,"date":"2022-06-09T21:00:12","date_gmt":"2022-06-09T21:00:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=334280"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=334280","title":{"rendered":"<span>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u0438\u043f\u0435\u0440-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0413\u0434\u0435-\u0442\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u0440\u043e\u0434\u0430\u044e\u0449\u0435\u0439 \u0441\u043b\u0430\u0434\u043e\u0441\u0442\u0438, \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0437\u0438\u0442 \u044d\u0442\u0438 \u0441\u043b\u0430\u0434\u043e\u0441\u0442\u0438 \u043f\u043e \u0442\u043e\u0447\u043a\u0430\u043c. \u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u043e\u0447\u0435\u043a \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0430 \u0438 \u0432\u044b\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0435\u0445\u0430\u0442\u044c. \u0413\u0434\u0435-\u0442\u043e \u043c\u0435\u0441\u044f\u0446 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u041d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043f\u043e\u043d\u044f\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u043e\u043c \u043b\u0438\u0441\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 10 \u0442\u043e\u0447\u0435\u043a, \u0442\u043e \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043b\u043e\u0431 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 NP-\u0443\u0440\u043e\u0432\u043d\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u043e \u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c API, \u043d\u043e \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043e\u0442\u0434\u0430\u044e\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0440\u043e\u0431\u0438\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0438 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438. \u041d\u043e \u043f\u043e\u043a\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. <\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u043a \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u0443\u0442\u0438 \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0441\u043f\u0443\u0441\u0442\u044f \u0433\u043e\u0434. \u041f\u043e \u0432\u043e\u043b\u0435 \u0441\u043b\u0443\u0447\u0430\u044f \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0446\u0435\u043b\u044b\u0439 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u0440 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445, \u043d\u0435 \u0442\u043e\u0447\u043d\u044b\u0445, \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043d\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u043b. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0435 \u0442\u043e\u0447\u043d\u043e, \u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041a\u0430\u043a \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0443\u0447\u0435\u043d\u044b\u043c \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u043e\u0437\u0433\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 (\u0445\u043e\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u0442\u043e\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0431\u0438\u043e\u043b\u043e\u0433\u0438 \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043c\u043e\u0437\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a; \u043d\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0432 \u044d\u0442\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043c\u0443\u0442\u0438\u043b\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 (\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u0430\u043a, \u043d\u0435 \u0432\u0434\u0430\u0432\u0430\u044f\u0441\u044c \u0432 \u0434\u0435\u0442\u0430\u043b\u0438) \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0435\u0448\u0430\u043b\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438), \u0442\u0430\u043a \u0438 \u0437\u0434\u0435\u0441\u044c, \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0435\u0441\u0442\u044c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418\u0437 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u043c \u0431\u044b\u043b &#171;\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438&#187;, \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0438\u0434\u0435\u0438, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435. \u0415\u0433\u043e \u0438 \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u0418 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0443\u0447\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0438\u0441\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. <\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043e\u0431 \u044d\u0442\u043e\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D1%83%D1%80%D0%B0%D0%B2%D1%8C%D0%B8%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC\" rel=\"noopener noreferrer nofollow\">\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438<\/a>.<\/p>\n<p>\u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0438\u043f\u0435\u0440-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438. \u042d\u0442\u0430 \u0438\u0434\u0435\u044f \u0432 \u043b\u0435\u0433\u043b\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 \u043c\u043e\u0435\u0439 \u0434\u0438\u0441\u0441\u0435\u0440\u0442\u0430\u0446\u0438\u0438. \u0418 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 &#8212; Grid Search, Random Search \u0438 Bayesian Optimization. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0442\u043e  \u0445\u043e\u0447\u0435\u0442 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041d\u0435 \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/www.wikiwand.com\/en\/Hyperparameter_optimization\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c<\/a>. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u044b \u0437\u0430\u043c\u0435\u0440\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f Bayesian Optimization. \u0415\u0433\u043e \u044f \u0438 \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0438\u0434\u0435\u044e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <a href=\"http:\/\/hyperopt.github.io\/hyperopt\/\" rel=\"noopener noreferrer nofollow\">hyperopt<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u0438\u043f\u0435\u0440-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043c\u0435\u043d\u044f \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"python\">NUM_POINTS = 500 n = NUM_POINTS  # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 import numpy as np from scipy import spatial   def save_to_file(list, file_name):     # print(list, type(list))     np.savetxt(f'{ROOT_DIR}\/{file_name}_{NUM_POINTS}.csv', list, delimiter=\",\")   def get_points_coordinate(num_points=NUM_POINTS):     # num_points - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0448\u0438\u043d     points_coordinate = np.random.rand(num_points, 2)  # \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d      return points_coordinate   def get_distance_matrix(points_coordinate):      # \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0448\u0438\u043d     distance_matrix = spatial.distance.cdist(points_coordinate, points_coordinate, metric='euclidean')      return distance_matrix   POINTS_COORDINATE = get_points_coordinate(NUM_POINTS)  save_to_file(POINTS_COORDINATE, 'POINTS_COORDINATE')  DISTANCE_MATRIX = get_distance_matrix(POINTS_COORDINATE)  save_to_file(DISTANCE_MATRIX, 'DISTANCE_MATRIX')  # \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 import time import matplotlib.pyplot as plt import numpy as np import pandas as pd  from hyperopt import hp, fmin, tpe, Trials, STATUS_OK from numpy import genfromtxt   class ACO_TSP:  # \u043a\u043b\u0430\u0441\u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u043e\u043c\u043c\u0438\u0432\u043e\u044f\u0436\u0451\u0440\u0430     \"\"\"     \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c\u0438 \u0432\u044b\u0448\u0435. \u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0436\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u0430:     \u0444\u0435\u0440\u043e\u043c\u043e\u043d \u03c4 \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u03b7. \u0424\u0435\u0440\u043e\u043c\u043e\u043d \u03c4 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0443\u0442\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0443\u0440\u0430\u0432\u044c\u0438.     \u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u03b7 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c P \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f     \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430\u03c4 \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u03b7 \u0438 \u0438\u0445 \u0441\u0443\u043c\u043c\u044b. \u041f\u0440\u0438 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u043c \u043f\u0443\u0442\u0438, \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430 \u03c4, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439     \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u03b7 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c P \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u044b\u0448\u0435. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 39-40 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 P.      \u0417\u0430\u0442\u0435\u043c, \u0441\u0442\u0440\u043e\u043a\u0430 41 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0445 \u043f\u0443\u0442\u0435\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 P.      \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u0442\u0440\u043e\u043a\u0438 55-64 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0444\u0435\u0440\u043e\u043c\u043e\u043d \u03c4 \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0438\u0441\u043f\u0430\u0440\u0435\u043d\u0438\u044f \u03c1.      \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Q \u2013 \u044d\u0442\u043e \u0441\u0443\u043c\u043c\u0430 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432 \u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. \u0412\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a \u0441\u0442\u0440\u043e\u043a\u0435 37,     \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.      \"\"\"      def __init__(self, func, n_dim, size_pop=10, max_iter=20, distance_matrix=None, alpha=1, beta=2, rho=0.1):         self.func = func         self.n_dim = n_dim  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u043e\u0440\u043e\u0434\u043e\u0432         self.size_pop = size_pop  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u0451\u0432         self.max_iter = max_iter  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439         self.alpha = alpha  # \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432 \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0443\u0442\u0438         self.beta = beta  # \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f         self.rho = rho  # \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u0430\u0440\u0435\u043d\u0438\u044f \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432         self.distance_matrix = distance_matrix  # \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439          self.prob_matrix_distance = 1 \/ (distance_matrix + 1e-10 * np.eye(n_dim, n_dim))          # \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e         self.Tau = np.ones((n_dim, n_dim))         # \u041f\u0443\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438         self.Table = np.zeros((size_pop, n_dim)).astype(int)         self.y = None  # \u041e\u0431\u0449\u0435\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043c\u0443\u0440\u0430\u0432\u044c\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438         self.generation_best_X, self.generation_best_Y = [], []  # \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u0443\u0447\u0448\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439         self.x_best_history, self.y_best_history = self.generation_best_X, self.generation_best_Y         self.best_x, self.best_y = None, None         self.iter_distance = []  # \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0443\u0440\u0430\u0432\u044c\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438         self.distance_dynamic = []         self.score = []      def run(self, max_iter=None):         self.max_iter = max_iter or self.max_iter         for i in range(self.max_iter):             # \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0431\u0435\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438             prob_matrix = (self.Tau ** self.alpha) * (self.prob_matrix_distance) ** self.beta             for j in range(self.size_pop):  # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u044f                 # \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0443\u0442\u0438 (\u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439, \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f)                 self.Table[j, 0] = 0                 for k in range(self.n_dim - 1):  # \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0443\u0440\u0430\u0432\u044c\u0438                     # \u0442\u043e\u0447\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e                     taboo_set = set(self.Table[j, :k + 1])                     # \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440                     allow_list = list(set(range(self.n_dim)) - taboo_set)                     prob = prob_matrix[self.Table[j, k], allow_list]                     prob = prob \/ prob.sum()  # \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438                     next_point = np.random.choice(allow_list, size=1, p=prob)[0]                     self.Table[j, k + 1] = next_point              # \u0440\u0430\u0441\u0441\u0447\u0451\u0442 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f             y = np.array([self.func(i, self.distance_matrix) for i in self.Table])              # \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f             index_best = y.argmin()             x_best, y_best = self.Table[index_best, :].copy(), y[index_best].copy()              # \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u043b\u0443\u0447\u0448\u0443\u044e \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u043d\u0430 \u044d\u0442\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0430             self.iter_distance.append(y_best)             # \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u0446\u0435\u043d\u043a\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0443\u043c\u0430 (\u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043f\u0440\u0438\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0438\u043b\u0438 \u043d\u0435\u0442)             if y_best &lt; get_min_int_in_list(self.distance_dynamic, y_best):                 self.distance_dynamic.append(y_best)             else:                 self.distance_dynamic.append(self.distance_dynamic[-1])             if len(self.distance_dynamic) > 1:                 self.score.append(self.distance_dynamic[-1] - self.distance_dynamic[-2])             else:                 self.score.append(1)              self.generation_best_X.append(x_best)             self.generation_best_Y.append(y_best)              # \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043a \u0440\u0435\u0431\u0440\u0443             delta_tau = np.zeros((self.n_dim, self.n_dim))             for j in range(self.size_pop):  # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u044f                 for k in range(self.n_dim - 1):  # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b                     # \u043c\u0443\u0440\u0430\u0432\u044c\u0438 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b n1 \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 n2                     n1, n2 = self.Table[j, k], self.Table[j, k + 1]                     delta_tau[n1, n2] += 1 \/ y[j]  # \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430                 # \u043c\u0443\u0440\u0430\u0432\u044c\u0438 \u043f\u043e\u043b\u0437\u0443\u0442 \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u043f\u0435\u0440\u0432\u043e\u0439                 n1, n2 = self.Table[j, self.n_dim - 1], self.Table[j, 0]                 delta_tau[n1, n2] += 1 \/ y[j]  # \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430              self.Tau = (1 - self.rho) * self.Tau + delta_tau          best_generation = np.array(self.generation_best_Y).argmin()         self.best_x = self.generation_best_X[best_generation]         self.best_y = self.generation_best_Y[best_generation]          score = (self.score.count(0) - len(self.score)) \/ len(self.score)          total_distance = self.get_total_distance()          return self.best_x, self.best_y, self.iter_distance, self.y_best_history, score, total_distance      def get_total_distance(self):         # \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u0430\u043c\u0443 \u0434\u043b\u0438\u043d\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430         best_points_ = np.concatenate([self.best_x, [self.best_x[0]]])         best_points_coordinate = POINTS_COORDINATE[best_points_, :]          # \u041f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0447\u0435\u0442\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430         list_of_points_coordinate = list(POINTS_COORDINATE.tolist())         list_of_best_points_coordinate = list(best_points_coordinate.tolist())          list_of_index_set_of_points = []         for el in list_of_best_points_coordinate:             list_of_index_set_of_points.append(list_of_points_coordinate.index(el))          total_distance = 0         for i in range(1, len(list_of_index_set_of_points)):             total_distance += cal_euclidean_distance_between_two_points(best_points_coordinate[i],                                                                         best_points_coordinate[i - 1])          return total_distance      fit = run   # \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u043d\u044b \u043f\u0443\u0442\u0438 def cal_total_distance(routine, distance_matrix):     num_points, = routine.shape     return sum([distance_matrix[routine[i % num_points], routine[(i + 1) % num_points]] for i in range(num_points)])   def cal_euclidean_distance_between_two_points(point_1, point_2):     return np.sqrt(sum(pow(a - b, 2) for a, b in zip(point_1, point_2)))   def get_min_int_in_list(list, y_best):     if len(list) &lt; 1:         return y_best + 1     else:         return min(list)   def aco_tsp_basic(num_points, distance_matrix, size_pop=3, max_iter=50):     # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438     aca = ACO_TSP(func=cal_total_distance,                   n_dim=num_points,                   size_pop=size_pop,  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u0451\u0432                   max_iter=max_iter,                   distance_matrix=distance_matrix)     best_x, best_y, iter_distance, y_best_history, score, total_distance = aca.run()      return aca, best_x, best_y, iter_distance, y_best_history, score, total_distance   def aco_tsp_opt(params, num_points=NUM_POINTS, distance_matrix=DISTANCE_MATRIX):     print(params)     # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438     aca = ACO_TSP(func=cal_total_distance,                   n_dim=num_points,                   distance_matrix=distance_matrix,                   **params)     best_x, best_y, iter_distance, y_best_history, score, total_distance = aca.run()      return {'loss': total_distance, 'params': params, 'status': STATUS_OK}   def plot(aca, best_x, iter_distance, y_best_history):     # \u0412\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d     fig, ax = plt.subplots(1, 3)     best_points_ = np.concatenate([best_x, [best_x[0]]])     best_points_coordinate = POINTS_COORDINATE[best_points_, :]      # \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u043e\u0447\u043a\u0430\u0445 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430     for index in range(0, len(best_points_)):         ax[0].annotate(best_points_[index], (best_points_coordinate[index, 0], best_points_coordinate[index, 1]))     ax[0].plot(best_points_coordinate[:, 0],                best_points_coordinate[:, 1], 'o-r')      # \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u043a\u0443\u043c\u043c\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u0437\u0430 \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b     pd.DataFrame(aca.y_best_history).cummin().plot(ax=ax[1], title=\"\u041a\u0443\u043c\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e \u043c\u0456\u043d\u0456\u043c\u0430\u043b\u044c\u043d\u043e\/\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430 \u0432\u0456\u0434\u0441\u0442\u0430\u043d\u044c\",                                                    legend=False)      # \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u0437\u0430 \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b     pd.DataFrame(iter_distance).plot(ax=ax[2], title=\"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0432\u0456\u0434\u0441\u0442\u0430\u043d\u0435\u0439\", legend=False)      # \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432     plt.rcParams['figure.figsize'] = [50, 50]     plt.show()   start_time = time.time()  # \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f  search_space = {     'size_pop': hp.choice(label='size_pop',                           options=np.arange(1, 251, 5, dtype=int)),     'max_iter': hp.choice(label='max_iter',                           options=np.arange(1, 251, 5, dtype=int)), }   # \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c hyperopt trials = Trials() best = fmin(     # \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438     fn=aco_tsp_opt,     # \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432     space=search_space,     # \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0438\u0441\u043a\u0430     algo=tpe.suggest,     # \u0447\u0438\u0441\u043b\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439     # (\u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430)     max_evals=20,     # \u043a\u0443\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u0438\u0441\u043a\u0430     trials=trials,     # progressbar     show_progressbar=True )   def df_results(hp_results):     \"\"\"     \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b hyperopt \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 DataFrame      :hp_results: \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b hyperop     :return: pandas DataFrame     \"\"\"     results = pd.DataFrame([{**x, **x['params']} for x in  hp_results])     results.sort_values(by=['loss'], ascending=True, inplace=True)     return results   results = df_results(trials.results) print(results) print(\"time of execution: %s seconds\" % abs(time.time() - start_time))  # \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <\/code><\/pre>\n<p>\u0421\u0430\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438 \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u043f\u0438\u0441\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/vc.ru\/newtechaudit\/353372-muravi-i-python-ishchem-samye-korotkie-puti\" rel=\"noopener noreferrer nofollow\">\u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c<\/a>. \u041c\u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432 \u0446\u0435\u043b\u043e\u043c \u0441\u043c\u044b\u0441\u043b, \u0440\u0435\u0448\u0438\u043b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u043d\u0435 \u0432\u044b\u0434\u0430\u043b \u0431\u044b &#171;\u0436\u0430\u0434\u043d\u044b\u0439&#187; \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c &#8212; \u043c\u0435\u0442\u043e\u0434 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430. \u041e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u0435\u0449\u0435 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\"><strong>\u041a\u043e\u043b-\u0432\u043e \u0442\u043e\u0447\u0435\u043a<\/strong><\/p>\n<\/td>\n<td colspan=\"2\" data-colwidth=\"79,108\" width=\"79\">\n<p align=\"center\"><strong>\u041c\u0435\u0442\u043e\u0434 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430<\/strong><\/p>\n<\/td>\n<td colspan=\"2\" data-colwidth=\"87,102\" width=\"87\">\n<p align=\"center\"><strong>\u0410\u041c\u041a \u0441 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438<\/strong><\/p>\n<\/td>\n<td colspan=\"2\" data-colwidth=\"88,93\" width=\"88\">\n<p align=\"center\"><strong>\u0410\u041c\u041a \u0441 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">\u0414\u043b\u0438\u043d\u0430<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">\u0414\u043b\u0438\u043d\u0430<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">\u0414\u043b\u0438\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">5<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">0.0003 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">2.53 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">0.092 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">2.53 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0.09 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">2.53 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">0%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">0.0008 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">2.79 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">0.2 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">2.69 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0.2 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">2.69 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 3.58%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">25<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">0.0093 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">4.14 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">0.7 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">4.17 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">33.9 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">4.04 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 2.42%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">50<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">0.082 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">6.11 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">1.63 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">7.17 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">45.06 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">5.6 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 9.35%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">75<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">0.32 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">7.82 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">2.53 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">9.42 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">286.73 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">7.02 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 9.35 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">100<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">0.96 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">8.80 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">3.42 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">12.2 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">252.42 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">8.06 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 10.23 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">150<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">3.89 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">11.11 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">6.34 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">17.18 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">879.64 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">10.47 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 5.76 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">200<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">26.25 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">13.75 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">12.68 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">27.2 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">1490.26 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">13.6 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 5.66 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">300<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">53.6 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">15.4 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">17.43 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">33.87 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">1386.31 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">15.32 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 0.5 %<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"60\" width=\"60\">\n<p align=\"center\">500<\/p>\n<\/td>\n<td data-colwidth=\"79\" width=\"79\">\n<p align=\"center\">395 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\">19.08 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"87\" width=\"87\">\n<p align=\"center\">41 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"center\">53 \u0435\u0434<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">10160 \u0441\u0435\u043a<\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">18.55 \u0435\u0434<\/p>\n<\/td>\n<td>\n<p align=\"center\">+ 2.78 %<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0447\u0435\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Google Colab.<\/em><\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435?<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0441\u043c\u044b\u0441\u043b \u0432 \u043f\u043e\u0434\u0431\u043e\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0410\u041c\u041a \u0435\u0441\u0442\u044c. \u041d\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 &#8212; \u0434\u0430\u0436\u0435 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0430\u043c\u043e\u043c\u0443 \u0442\u044f\u0436\u0435\u043b\u043e &#8212; \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e Bayesian Optimization \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0438\u043f\u0435\u0440-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0435\u0441\u0442\u044c \u0438 \u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c &#8212; \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0410\u041c\u041a (\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b-\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u0439) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430. \u041d\u043e \u0443\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0410\u041c\u041a \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e (\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u0438 \u043c\u0443\u0440\u0430\u0432\u044c\u0435\u0432 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0414\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043d\u0430\u043c \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (\u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432) \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435, \u0447\u0435\u043c Bayesian Optimization (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0438), \u0445\u043e\u0442\u044f, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c Bayesian Optimization \u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0442\u043e\u0436\u0435 (\u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u0438).<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f &#8212; \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0411\u0443\u0434\u0443 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/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\/post\/670674\/\"> https:\/\/habr.com\/ru\/post\/670674\/<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0413\u0434\u0435-\u0442\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u0440\u043e\u0434\u0430\u044e\u0449\u0435\u0439 \u0441\u043b\u0430\u0434\u043e\u0441\u0442\u0438, \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0437\u0438\u0442 \u044d\u0442\u0438 \u0441\u043b\u0430\u0434\u043e\u0441\u0442\u0438 \u043f\u043e \u0442\u043e\u0447\u043a\u0430\u043c. \u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u043e\u0447\u0435\u043a \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0430 \u0438 \u0432\u044b\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0435\u0445\u0430\u0442\u044c. \u0413\u0434\u0435-\u0442\u043e \u043c\u0435\u0441\u044f\u0446 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u041d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043f\u043e\u043d\u044f\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u043e\u043c \u043b\u0438\u0441\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 10 \u0442\u043e\u0447\u0435\u043a, \u0442\u043e \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043b\u043e\u0431 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 NP-\u0443\u0440\u043e\u0432\u043d\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u043e \u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c API, \u043d\u043e \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043e\u0442\u0434\u0430\u044e\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0440\u043e\u0431\u0438\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0438 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438. \u041d\u043e \u043f\u043e\u043a\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. <\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u043a \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u0443\u0442\u0438 \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0441\u043f\u0443\u0441\u0442\u044f \u0433\u043e\u0434. \u041f\u043e \u0432\u043e\u043b\u0435 \u0441\u043b\u0443\u0447\u0430\u044f \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0446\u0435\u043b\u044b\u0439 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u0440 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445, \u043d\u0435 \u0442\u043e\u0447\u043d\u044b\u0445, \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043d\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u043b. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0435 \u0442\u043e\u0447\u043d\u043e, \u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041a\u0430\u043a \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0443\u0447\u0435\u043d\u044b\u043c \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u043e\u0437\u0433\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 (\u0445\u043e\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u0442\u043e\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0431\u0438\u043e\u043b\u043e\u0433\u0438 \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043c\u043e\u0437\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a; \u043d\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0432 \u044d\u0442\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043c\u0443\u0442\u0438\u043b\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 (\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u0430\u043a, \u043d\u0435 \u0432\u0434\u0430\u0432\u0430\u044f\u0441\u044c \u0432 \u0434\u0435\u0442\u0430\u043b\u0438) \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0435\u0448\u0430\u043b\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438), \u0442\u0430\u043a \u0438 \u0437\u0434\u0435\u0441\u044c, \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0435\u0441\u0442\u044c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418\u0437 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u043c \u0431\u044b\u043b &#171;\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438&#187;, \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0438\u0434\u0435\u0438, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435. \u0415\u0433\u043e \u0438 \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u0418 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0443\u0447\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0438\u0441\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. <\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043e\u0431 \u044d\u0442\u043e\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D1%83%D1%80%D0%B0%D0%B2%D1%8C%D0%B8%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC\" rel=\"noopener noreferrer nofollow\">\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438<\/a>.<\/p>\n<p>\u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0438\u043f\u0435\u0440-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438. \u042d\u0442\u0430 \u0438\u0434\u0435\u044f \u0432 \u043b\u0435\u0433\u043b\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 \u043c\u043e\u0435\u0439 \u0434\u0438\u0441\u0441\u0435\u0440\u0442\u0430\u0446\u0438\u0438. \u0418 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 &#8212; Grid Search, Random Search \u0438 Bayesian Optimization. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0442\u043e  \u0445\u043e\u0447\u0435\u0442 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041d\u0435 \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/www.wikiwand.com\/en\/Hyperparameter_optimization\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c<\/a>. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u044b \u0437\u0430\u043c\u0435\u0440\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f Bayesian Optimization. \u0415\u0433\u043e \u044f \u0438 \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0438\u0434\u0435\u044e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <a href=\"http:\/\/hyperopt.github.io\/hyperopt\/\" rel=\"noopener noreferrer nofollow\">hyperopt<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u0438\u043f\u0435\u0440-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043c\u0435\u043d\u044f \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"python\">NUM_POINTS = 500 n = NUM_POINTS  # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 import numpy as np from scipy import spatial   def save_to_file(list, file_name):     # print(list, type(list))     np.savetxt(f'{ROOT_DIR}\/{file_name}_{NUM_POINTS}.csv', list, delimiter=\",\")   def get_points_coordinate(num_points=NUM_POINTS):     # num_points - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0448\u0438\u043d     points_coordinate = np.random.rand(num_points, 2)  # \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d      return points_coordinate   def get_distance_matrix(points_coordinate):      # \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0448\u0438\u043d     distance_matrix = spatial.distance.cdist(points_coordinate, points_coordinate, metric='euclidean')      return distance_matrix   POINTS_COORDINATE = get_points_coordinate(NUM_POINTS)  save_to_file(POINTS_COORDINATE, 'POINTS_COORDINATE')  DISTANCE_MATRIX = get_distance_matrix(POINTS_COORDINATE)  save_to_file(DISTANCE_MATRIX, 'DISTANCE_MATRIX')  # \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 import time import matplotlib.pyplot as plt import numpy as np import pandas as pd  from hyperopt import hp, fmin, tpe, Trials, STATUS_OK from numpy import genfromtxt   class ACO_TSP:  # \u043a\u043b\u0430\u0441\u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u043e\u043c\u043c\u0438\u0432\u043e\u044f\u0436\u0451\u0440\u0430     \"\"\"     \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c\u0438 \u0432\u044b\u0448\u0435. \u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0436\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u0430:     \u0444\u0435\u0440\u043e\u043c\u043e\u043d \u03c4 \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u03b7. \u0424\u0435\u0440\u043e\u043c\u043e\u043d \u03c4 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0443\u0442\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0443\u0440\u0430\u0432\u044c\u0438.     \u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u03b7 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c P \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f     \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430\u03c4 \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u03b7 \u0438 \u0438\u0445 \u0441\u0443\u043c\u043c\u044b. \u041f\u0440\u0438 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u043c \u043f\u0443\u0442\u0438, \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430 \u03c4, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439     \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u03b7 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c P \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u044b\u0448\u0435. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 39-40 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 P.      \u0417\u0430\u0442\u0435\u043c, \u0441\u0442\u0440\u043e\u043a\u0430 41 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0445 \u043f\u0443\u0442\u0435\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 P.      \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u0442\u0440\u043e\u043a\u0438 55-64 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0444\u0435\u0440\u043e\u043c\u043e\u043d \u03c4 \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0438\u0441\u043f\u0430\u0440\u0435\u043d\u0438\u044f \u03c1.      \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Q \u2013 \u044d\u0442\u043e \u0441\u0443\u043c\u043c\u0430 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432 \u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. \u0412\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a \u0441\u0442\u0440\u043e\u043a\u0435 37,     \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.      \"\"\"      def __init__(self, func, n_dim, size_pop=10, max_iter=20, distance_matrix=None, alpha=1, beta=2, rho=0.1):         self.func = func         self.n_dim = n_dim  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u043e\u0440\u043e\u0434\u043e\u0432         self.size_pop = size_pop  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u0451\u0432         self.max_iter = max_iter  # \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439         self.alpha = alpha  # \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432 \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0443\u0442\u0438         self.beta = beta  # \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f         self.rho = rho  # \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u0430\u0440\u0435\u043d\u0438\u044f \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432         self.distance_matrix = distance_matrix  # \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439          self.prob_matrix_distance = 1 \/ (distance_matrix + 1e-10 * np.eye(n_dim, n_dim))          # \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e         self.Tau = np.ones((n_dim, n_dim))         # \u041f\u0443\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438         self.Table = np.zeros((size_pop, n_dim)).astype(int)         self.y = None  # \u041e\u0431\u0449\u0435\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043c\u0443\u0440\u0430\u0432\u044c\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438         self.generation_best_X, self.generation_best_Y = [], []  # \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u0443\u0447\u0448\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439         self.x_best_history, self.y_best_history = self.generation_best_X, self.generation_best_Y         self.best_x, self.best_y = None, None         self.iter_distance = []  # \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0443\u0440\u0430\u0432\u044c\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438         self.distance_dynamic = []         self.score = []      def run(self, max_iter=None):         self.max_iter = max_iter or self.max_iter         for i in range(self.max_iter):             # \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0431\u0435\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438             prob_matrix = (self.Tau ** self.alpha) * (self.prob_matrix_distance) ** self.beta             for j in range(self.size_pop):  # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u044f                 # \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0443\u0442\u0438 (\u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439, \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f)                 self.Table[j, 0] = 0                 for k in range(self.n_dim - 1):  # \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043c\u0443\u0440\u0430\u0432\u044c\u0438                     # \u0442\u043e\u0447\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e                     taboo_set = set(self.Table[j, :k + 1])                     # \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440                     allow_list = list(set(range(self.n_dim)) - taboo_set)                     prob = prob_matrix[self.Table[j, k], allow_list]                     prob = prob \/ prob.sum()  # \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438                     next_point = np.random.choice(allow_list, size=1, p=prob)[0]                     self.Table[j, k + 1] = next_point              # \u0440\u0430\u0441\u0441\u0447\u0451\u0442 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f             y = np.array([self.func(i, self.distance_matrix) for i in self.Table])              # \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f             index_best = y.argmin()             x_best, y_best = self.Table[index_best, :].copy(), y[index_best].copy()              # \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u043b\u0443\u0447\u0448\u0443\u044e \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u043d\u0430 \u044d\u0442\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0430             self.iter_distance.append(y_best)             # \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u0446\u0435\u043d\u043a\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0443\u043c\u0430 (\u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043f\u0440\u0438\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0438\u043b\u0438 \u043d\u0435\u0442)             if y_best &lt; get_min_int_in_list(self.distance_dynamic, y_best):                 self.distance_dynamic.append(y_best)             else:                 self.distance_dynamic.append(self.distance_dynamic[-1])             if len(self.distance_dynamic) > 1:                 self.score.append(self.distance_dynamic[-1] - self.distance_dynamic[-2])             else:                 self.score.append(1)              self.generation_best_X.append(x_best)             self.generation_best_Y.append(y_best)              # \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043a \u0440\u0435\u0431\u0440\u0443             delta_tau = np.zeros((self.n_dim, self.n_dim))             for j in range(self.size_pop):  # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0443\u0440\u0430\u0432\u044c\u044f                 for k in range(self.n_dim - 1):  # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b                     # \u043c\u0443\u0440\u0430\u0432\u044c\u0438 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b n1 \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 n2                     n1, n2 = self.Table[j, k], self.Table[j, k + 1]                     delta_tau[n1, n2] += 1 \/ y[j]  # \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u0444\u0435\u0440\u043e\u043c\u043e\u043d\u0430    <\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-334280","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/334280","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=334280"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/334280\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=334280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=334280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=334280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}