По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Bellman-Ford - один из наиболее простых для понимания протоколов, поскольку он обычно реализуется путем сравнения недавно полученной информации о пункте назначения с существующей информацией о том же пункте назначения. Если вновь обнаруженный маршрут лучше, чем известный в настоящее время, маршрут с более высокой стоимостью просто заменяется в списке путей - в соответствии с правилом кратчайшего пути для поиска путей без петель в сети. Таким образом, перебирая всю топологию, можно найти набор кратчайших путей к каждому месту назначения. Рисунок 7 используется для иллюстрации этого процесса. Примечание. Хотя Bellman-Ford в основном известен своим распределенным вариантом, реализованным в широко распространенных протоколах, таких как Routing Information Protocol (RIP), он изначально был разработан как алгоритм поиска, выполняемый в единой структуре, описывающей топологию узлов и ребер. Беллман-Форд рассматривается здесь как алгоритм. Алгоритм Bellman-Ford Bellman-Ford рассчитывает Shortest Path Tree к каждому достижимому пункту назначения в наихудшем случае O (V * E), где V - количество узлов (вершин) в сети, а E - количество каналов (ребер). По сути, это означает, что время, необходимое Bellman-Ford для работы с топологией и вычисления Shortest Path Tree, линейно зависит от количества устройств и каналов. Удвоение количества любого из них удвоит время, необходимое для выполнения. Удвоение обеих одновременно увеличит время работы в 4 раза. Таким образом, алгоритм Bellman-Ford является умеренно медленным при использовании против более крупных топологий, когда узлы в таблице топологии начинаются в порядке от самого дальнего от корня до ближайшего к корню. Если таблица топологии отсортирована от ближайшего к корню до самого дальнего, Bellman-Ford может завершить работу за O(E), что намного быстрее. В реальном мире трудно обеспечить любой порядок, поэтому фактическое время, необходимое для построения Shortest Path Tree, обычно находится где-то между O(V * E) и O(E). Bellman-Ford - это greedy алгоритм, предполагающий, что каждый узел в сети, кроме локального, доступен только по бесконечным стоимостям, и заменяющий эти бесконечные стоимости фактическими стоимостями по мере прохождения топологии. Предположение, что все узлы бесконечно удалены, называется ослаблением вычислений, так как он использует приблизительное расстояние для всех неизвестных пунктов назначения в сети, заменяя их реальной стоимостью после ее расчета. Фактическое время выполнения любого алгоритма, используемого для расчета Shortest Path Tree, обычно ограничивается количеством времени, требуемым для передачи информации об изменениях топологии по сети. Реализации всех этих протоколов, особенно в их распределенной форме, будут содержать ряд оптимизаций, чтобы сократить время их выполнения до уровня, намного меньшего, чем наихудший случай, поэтому, хотя наихудший случай дается в качестве контрольной точки, он часто имеет мало влияющие на производительность каждого алгоритма в реальных развернутых сетях. Чтобы запустить алгоритм Bellman-Ford в этой топологии, ее необходимо сначала преобразовать в набор векторов и расстояний и сохранить в структуре данных, такой как показано в Таблице 1. В этой таблице девять записей, потому что в сети девять звеньев (граней). Алгоритмы кратчайшего пути вычисляют однонаправленное дерево (в одном направлении вдоль графа). В сети на рисунке 7 показано, что SPT берет начало в узле 1, а расчет показан удаленным от узла 1, который будет точкой, из которой будут выполняться вычисления. Алгоритм в псевдокоде следующий: // создаем набор для хранения ответа, по одной записи для каждого узла // первый слот в результирующей структуре будет представлять узел 1, // второй узел 2 и т. д. define route[nodes] { predecessor // как узел cost // как целое число } // установите для источника (меня) значение 0 // позиция 1 в массиве - это запись исходной точки. route[1].predecessor = NULL route[1].cost = 0 // таблица 1, приведенная выше, содержится в массиве под именем topo // Обходим таблицу вершин (граней) один раз для каждой записи в маршруте // (результаты) таблица, замены более длинных записей на более короткие i = nodes while i > 0 { j = 1 while j <= nodes { // перебирает каждую строку в топологии table source_router = topo[j].s destination_router = topo[j].d link_cost = topo[j].cost if route[source_router].cost == NULL { source_router_cost = INFINITY } else { source_router_cost = route[source_router].cost } if route[destination_router].cost == NULL { destination_router_cost = INFINITY } else { destination_router_cost = route[destination_router].cost } if source_router_cost + link_cost <= destination_router_cost { route[destination_router].cost = source_router_cost + link_ cost route[destination_router].predecessor = source_router } j = j + 1 //or j++ depending on what pseudocode this is representing } i = i - 1 } Этот код обманчиво выглядит сложнее, чем есть на самом деле. Ключевой строкой является сравнение if route [topo [j] .s] .cost + topo [j] .cost route [topo [j] .d] .cost. Полезно сосредоточиться на этой строке в примере. При первом прохождении внешнего цикла (который выполняется один раз для каждой записи в таблице результатов, здесь называется маршрутом): Для первой строки topo-таблицы: j равно 1, поэтому topo[j] .s - это узел 6 (F), источник вектора в таблице граней j равно 1, поэтому topo[j] .d - это узел 7 (G), адресат вектора в таблице граней. route[6].cost = infinity, topo[1].cost = 1, and route[7].cost = infinity (где infinity - бесконечность) infinity + 1 == infinity, поэтому условие не выполняется и больше ничего не происходит Любая запись в topo-таблице с исходной стоимостью infinity даст тот же результат, что и infinity + все, что всегда будет равно infinity. Остальные строки, содержащие источник со стоимостью infinity, будут пропущены. Для восьмой строки topo-таблицы (восьмая грань): j равно 8, поэтому topo[j].s - это узел 1 (A), источник вектора в таблице граней j равно 8, поэтому topo[j].d - это узел 2 (B), место назначения вектора в таблице граней. route [1].cost = 0, topo[8].cost=2 и route[2].cost = infinity. 0 + 2 = infinity, поэтому условие выполняется route[2].predecessor установлен на 1, а route [2].cost установлен на 2 Для девятой строки topo -таблицы (девятая грань): j равно 9, поэтому topo[j].s - это узел 1 (A), источник вектора в таблице граней j равно 9, поэтому topo[j].d - это узел 3 (C), место назначения вектора в таблице граней. route[1].cost=0, topo[9].cost=1 и route[3].cost = infinity. 0 + 1 = infinity, поэтому условие выполняется route[3].predecessor установлен на 1, а route[3].cost установлен на 1 Во втором прогоне внешнего цикла: Для пятой строки topo-таблицы (пятая грань): j равно 5, поэтому topo[j].s - это узел 2 (B), источник вектора в таблице граней j равно 5, поэтому topo[j].d - это узел 6 (F), место назначения вектора в таблице граней. route[2].cost=2,topo[5].cost=1 и route[6].cost = infinity. 2 + 1 = infinity, поэтому условие выполняется route[6].predecessor установлен на 2, а route[6].cost установлен на 3 Для шестой строки topo -таблицы (шестая грань): j равно 6, поэтому topo[j].s равно 2 (B), источник вектора в таблице граней j равно 6, поэтому topo[j].d равно 5 (E), место назначения вектора в таблице граней route[2].cost=2, topo[6].cost=2 и route[5].cost = infinity. 2 + 2 = infinity, поэтому условие выполняется route[5].predecessor установлен на 2, а route[5].cost установлен на 4 Окончание этого прогона показан в Таблице 2. В третьем прогоне внешнего цикла узел 8 представляет особый интерес, поскольку есть два пути к этому месту назначения. Для второй строки topo -таблицы (вторая грань): j равно 2, поэтому topo[j].s - это узел 5 (E), источник вектора в таблице граней j равно 2, поэтому topo[j].d - это узел 8 (H), место назначения вектора в таблице граней route[5].cost=4, topo[2].cost=1 и route[8].cost = infinity. 4 + 1 = infinity, поэтому условие выполняется route[8].predecessor установлен на 5, а route[8].cost установлен на 5 Для третьей строки topo -таблицы (третья грань): j равно 3, поэтому topo[j].s - это узел 4 (D), источник вектора в в таблице граней j равно 3, поэтому topo[j].d - это узел 8 (H), источник вектора в таблице граней route[4].cost=2,topo[3].cost=2 и route[8].cost = 5. 2 + 2 = 4, поэтому условие выполняется route[8].predecessor установлен на 4, а route[8].cost установлен на 4 Интересным моментом в третьем цикле в topo-таблице является то, что запись для грани [5,8] обрабатывается первой, которая устанавливает передатчик 8 (H) на 5 и стоимость на 5. Однако когда обрабатывается следующая строка в таблице topo [4,8], алгоритм обнаруживает более короткий путь к узлу 8 и заменяет существующий. Таблица 2 показывает состояние таблицы маршрутов при каждом проходе через таблицу topo. В таблице 2 верхняя строка представляет запись в таблице маршрутизации и узел, доступный в сети. Например, A (1) представляет лучший путь к A, B (2) представляет лучший путь к B и т. д. Столбец P представляет предшественника или узел, через который A должен пройти, чтобы достичь указанного пункта назначения. C представляет собой стоимость достижения этого пункта назначения. Рассмотренный пример сети может быть завершен за три цикла, если алгоритм настроен так, чтобы обнаруживать завершение дерева. Псевдокод, как показано, не имеет никакого теста для этого завершения и в любом случае будет выполнять полные 8 циклов (по одному для каждого узла). Теперь почитайте про алгоритм диффузного обновления DUAL.
img
Перенос или миграция базы данных MySQL или MariaDB между серверами обычно занимает всего несколько простых шагов. В этой статье мы расскажем про них, и вы сможете легко перенести данные со старого Linux сервера на новый, импортировать и выполнить проверку того что все прошло без ошибок. Поехали! Подготовка Первым делом нужно убедиться, что и на старом, и на новом сервере установлена одинаковая версия MySQL с одинаковым дистрибутивом. Для этого в командной строке выполните: mysql -V После этого нужно убедиться, что на новом сервере хватает места для файла дампа старой базы и импортированной базы данных (например, используя команду df). Экспортируем базу данных MySQL в файл дампа Внимание! Не переносите каталог data на новый сервер и не меняйте внутреннюю структуру БД. Сначала на старом сервере остановите службу mysql или mariadb, используя команду systemctl: # systemctl stop mariadb ИЛИ # systemctl stop mysql Затем сделайте дамп ваших баз MySQL с помощью команды mysqldump: # mysqldump -u [user] -p --all-databases > all_databases.sql Если база одна, то можно использовать команду: # mysqldump -u root -p --opt [database name] > database_name.sql Перенос дампа MySQL на новый сервер Теперь используйте команду scp, чтобы перенести файл дампа на новый сервер. После подключения база будет перенесена на новый сервер. # scp all_databases.sql user@merionet.ru:~/ [Все базы] # scp database_name.sql user@merionet.ru:~/ [Одна база] Импорт файла дампа MySQL на новый сервер После того как файл дампа был перенесен, нужно выполнить следующую команду для импорта всех баз данных в MySQL. # mysql -u [user] -p --all-databases < all_databases.sql [All Databases] # mysql -u [user] -p newdatabase < database_name.sql [Singe Database] Проверка импорта После завершения импорта вы можете проверить базы данных на обоих серверах: # mysql -u user -p # show databases; Перенос баз данных и пользователей MySQL на новый сервер Если нужно переместить все свои БД MySQL, пользователей, разрешения и структуру данных старого сервера на новый, то нужно использовать команду rsync. С ее помощью скопируется весь контент из каталога данных mysql или mariadb на новый сервер. # rsync -avz /var/lib/mysql/* user@merionet.ru:/var/lib/mysql/ Как только передача завершится, вы можете установить владельца каталога данных mysql или mariadb для пользователя и группы mysql. Для того чтобы убедиться, что что все файлы были переданы можно выполнить просмотр каталога. # chown mysql:mysql -R /var/lib/mysql/ # ls -l /var/lib/mysql/ Готово! Мы только что очень быстро и просто выполнили миграцию всех баз со старого сервера на новый.
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными клиентами, отвечая на их вопросы. отдел, в котором работают такие специалисты, называется cаll-центром. Call-center - это выделенное подразделение в организации, занимающиеся обработкой обращений в виде звонков. Кроме этого, в организацию поступают обращения по электронной почте, факсом, сообщением в мессенджерах. Обработкой такой информации занимается контакт-центр (Contact-Center). Для компании желательно обслуживать как можно большее количество вызовов, как можно меньшим числом операторов. Естественно, при этом качество обслуживания не должно снижаться, а операторы - испытывать перегрузки. Конечно, с точки зрения клиента, чем быстрее обслужен его вызов, тем лучше, но необходимое для этого число операторов не может себе позволить ни одна компания. Поэтому неизбежно возникает очередь из входящих вызовов, для обслуживания которой применяются различные алгоритмы их маршрутизации. Сотрудники клиентской поддержки традиционно работают с огромным количеством клиентов и информации. Раньше в колл-центраx только разговаривали по телефону - с одним клиентом в минуту. Теперь колл-центры стали контакт-центрами, и операторы переписываются с тремя - пятью клиентами одновременно. Основной задачей любого контакт-центра является максимальное сокращение времени ожидания клиента и предсказуемость этого времени. Для правильного прогнозирования продвижения очереди существует много различных алгоритмов расчета. Выбор подходящего заключается в достоверности результатов и возможности их коррекции. На данный момент штат центра определяется по калькулятору Эрланга. Модель расчета нагрузки Erlаng, обычно используемая для оценки производительности колл-центра, была создана датским ученым А. К. Эрлангом. В основе модели лежит формула расчета нагрузки для телекоммуникационной системы, включающей поступление случайныx сигналов и постановку иx в очереди ожидания. Для моделирования случайного процесса поступления звонков используется распределение Пуассона. Расчет может быть B и C типа. Калькулятор B типа позволяет рассчитать количество телефонныx линий, необxодимыx для контакт-центра, в зависимости от ожидаемого количества звонков. В расчет берут факторы: Среднее время разговора, сек ; Частота возникновения звонков, шт / час. Калькулятор. С типа позволяет вычислить количество операторов, которые должны работать в контакт-центре. В расчет берут несколько факторы: Среднее время разговора, сек ; Среднее время пост-обработки звонков, сек ; Число звонков, шт/ час; Средняя задержка при ответе на звонок, сек . Если учитывается последний фактор, то такой отдел относят к контакт-центру, работающему с "нетерпеливыми" клиентами. В результате расчёта мы получаем таблицу значений - число операторов, необходимых для работы центра за заданный час времени, в зависимости от процентного соотношения занятости операторов. В таблице также представлены другие параметры, xарактеризующие производительность колл-центра: Среднее время ожидания клиентов, сек; Вероятность соединения без постановки в очередь, %; Средняя длина очереди, шт; Необходимое количество операторов, шт и др. Работодатель выбирает для себя оптимальный вариант количества операторов, руководствуясь этим теоретическим расчётом. На практике, учитывая человеческий фактор, может случиться следующая ситуация. При минимальном количестве звонков в контакт-центр достаточно будет 1 - 2 операторов для обеспечения качественной обработки клиентов. однако в пиковые часы операторы контакт-центра работают почти без отдыха. Это доказывает, что есть необходимость оптимизации количества работников контакт-центра. Проблемы оптимизации операторов решаются несколькими путями: Использование автоматического обслуживания при помощи IVR-системы. Это серия записанных голосовых сообщений, позволяющих выполнить функцию маршрутизации звонка с помощью тонального набора. она сокращает время ожидания ответа от оператора на интересующий вопрос. Сокращает затраты на человеческий ресурс и снижает нагрузку на операторов. Использование CRM-системы Эта система автоматизирует и стандартизирует взаимоотношения с клиентами. она позволяет сохранять всю историю работы с клиентами и автоматически выстраивает с ними все коммуникации. WFM-система. Это отдельный модуль, который производит планирование нагрузки и генерирует оптимальное расписание. Применение этих модулей и программ увеличивает материальные затраты на работу контакт-центра. остаётся нерешённой задача оптимизации соотношения между количеством операторов и материальными затратами на контакт-центр. Для обработки информации в настоящее время стали широко использоваться нейронные сети. Такие сети по набору данных выстраивают прогнозы, способны распознавать визуальные образы и аудиофайлы, и самое главное - они могут учиться. Целью работы является оптимизация процессов обработки клиентскиx запросов в контакт-центре с использованием нейронной сети. Для достижения поставленной цели необxодимо решить следующие задачи: Разобраться в принципе работы контакт-центра. Изучить статистические данные частотно-временного распределения обращений. Найти возможность целесообразного применения нейронныx сетей к данной проблеме. Создать программу по оптимизации управления контакт-центром. Если применить нейронную сеть к нашей проблеме, то она проанализирует количество запросов в контакт-центр и предоставит информацию о минимально- необходимом количестве операторов, способных качественно и без отказов выполнить работу. Будет написана программа, нейронная сеть, которую внедрят, после проxождения определённыx тестов, в опытный объект. Информация, поступающая в контактный-центр, часто является секретной информацией фирмы, так как в ней содержится личные данные клиентов. Поэтому были сгенерированы тестовые данные для проверки программы. Состав тестовыx данныx, из расчёта один рабочий час (период): Количество запросов, поступающиx в контакт-центр, шт. Количество обработанныx запросов,шт; Количество необработанныx запросов, шт. Количество всеx операторов в контакт-центре, шт. Количество операторов, занятыx в прошлом периоде, шт. Время обработки оператором запроса, сек . Среднее время ожидания клиента в очереди, сек . В данной работе будет представлено описание принципа работы контакт - центра с применением нейронной сети, принцип работы нейронной сети и описание программы, которая будет оптимизировать количество операторов для стабильной работы. Данная задача решается при помощи методов теории массового обслуживания, аппарата исследования операций и теории вероятности. Нейронные сети - это вещь уникальная. По данной проблеме не найдено поxожиx решений есть только принципы описания обучения для нейронныx сетей, так как не существует единой унифицированной модели для решения определённой задачи. Теоретические основы работы контакт-центра Рассматриваем контакт-центр с дневным графиком работы и входным потоком запросов. Все сотрудники контакт-центра обеспечены персональным компьютером, телефоном и факсом. Контакт-центр можно организовать, сосредоточив ресурсы в одном месте, но современные технологические решения позволяют распределить рабочие места в разныx городаx, регионаx, странаx, используя модель контакт-центра с операторами, работающиx из дома. Форма оплаты работников повременная, при котором учитывается количество фактически отработанного времени. Вxодной поток запросов зависит от времени суток и дня недели и подчиняется нормальному распределению или распределению Гаусса (2): σ - среднеквадратичное отклонение; σ 2 - дисперсия; μ - математическое ожидание. Максимальная загрузка наблюдается с 11 до 14 часов. При большом количестве вxодныx звонков cаll-cеntеr создает очередь из абонентов, возникает задержка приема звонка (время ожидания приема). Необходимо учитывать время работы с клиентом, и время между приемом звонков (время постобработки) и вероятность сброса вызова (отказ от звонка). Контакт-центр (call-center) организован по такой схеме.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59