1

Я изучаю алгоритмы оптимизации для автоматической группировки пользователей. Тем не менее, я совершенно не знаком с этими алгоритмами, и я слышал о них, когда я просмотрел соответствующую литературу. И, иначе, в одной из статей авторы реализовали собственный алгоритм (основанный на собственной логике) с использованием Integer Programming (так я слышал об IP).Смешанное целочисленное линейное программирование, используемое для реализации алгоритмов оптимизации (например, генетический или частичный рой)

Мне интересно, нужно ли реализовать алгоритм генетического/частичного роя (или любой другой оптимизации) с использованием смешанного целочисленного линейного программирования или это только один из вариантов. В конце концов, мне нужно будет создать веб-систему, которая автоматически группирует пользователей. Я ценю любую помощь.

+1

Хороший (хотя и несколько устаревший) обзор - это «Как его решить: современные убеждения» Михалевича и Фогеля. В нем рассматриваются как ИС, так и эвристические методы (с упором на последние). –

ответ

4

Я думаю, вы немного сбиваете с толку термины. Это разные методы оптимизации. Вы можете с уверенностью представить проблему с использованием нотации Mixed Integer Programming (MIP), но вы можете решить ее с помощью MIP-решения или генетических алгоритмов (GA) или оптимизации роя частиц (PSO).

Целочисленное программирование является частью более традиционной парадигмы под названием математическое программирование, в котором проблема моделируется на основе набора довольно жестких уравнений. Существуют различные типы моделей математического программирования: линейное программирование (где все переменные непрерывны), целочисленное программирование, смешанное целочисленное программирование (сочетание непрерывных и дискретных переменных), нелинейное программирование (некоторые из уравнений не являются линейными).

Модели математического программирования хорошие и надежные, в зависимости от модели, вы можете сказать, как далеко вы идете от идеального решения, например. Но эти модели часто борются с проблемами со многими переменными.

С другой стороны, генетические алгоритмы и PSO относятся к более молодой отрасли методов оптимизации, которая часто называется метаэвристикой. Эти методы часто находят хорошие или, по крайней мере, разумные решения даже для больших и сложных задач, многие практические применения

Есть несколько гибридных алгоритмов, которые объединяют как математические модели, так и метаэвристики, и в этом случае да, вы бы использовали как MIP, так и GA/ПСО. Выбор того, какой подход (MIP, метаэвристика или гибрид) очень зависим от проблем, вы должны проверить, что лучше работает для вас. Обычно я предпочитаю математические модели, если основное внимание уделяется точности решения, и я предпочел бы метаэвристику, если бы моя целевая функция была очень сложной, и мне нужно быстрое, хотя и более бедное решение.

+0

большое спасибо за ответ! Если я использую MIP, мне нужно будет предложить свою собственную математическую модель и целевую функцию с нуля в зависимости от проблемы. Вы не рекомендуете это, если у меня есть много параметров в модели, а также большое количество пользователей (в моем случае). Чтобы реализовать алгоритмы GA/PSO и настроить целевую функцию, я могу использовать Solvers (IBM или Microsoft), или я могу использовать Python, MIP и т. Д. Не могли бы вы подтвердить эту информацию? – renakre

+1

Ну, вам не нужно предлагать новую модель/целевую функцию, если вы найдете ее (например, в академической литературе), которая подходит для вашей проблемы, если это так, я бы сосредоточился на изучении того, как реализовать проблему и решить ее найти лучшее решение. Для MIP IBM Cplex, вероятно, является лучшим решением (но это дорого), и для него есть библиотеки C/Java/Python, для GA/PSO вы можете также просматривать библиотеки Python, Matlab, C или Java (JMetal - один Я знаю), или вы можете написать свой собственный GA/PSO на любом языке, который вы предпочитаете, его не сложно изучать и кодировать самостоятельно. –