2013-05-23 1 views
1

Из 1000 мест, 250 мест имеют право на установку розетки. Я хочу выбрать 5 мест из этих 250, чтобы максимизировать сумму прибыли из окрестностей выбранных мест, а выходы расположены не менее чем на 5 миль друг от друга. Готовность людей путешествовать из одного места в другое дается (что определяет окрестности этого местоположения)Выберите N местоположений из списка, чтобы максимизировать общую прибыль из окрестностей выбранных мест.

Я пробовал целое программирование, но имел проблемы с определением целевой функции. Любой метод кластеризации/оптимизации, который может решить эту проблему?

EDIT:

Дано:

  • 1000 мест и расстояние по дуге большого круга между любыми двумя точками
  • Готовность людей для перемещения из одного места в другое для всех 1000 мест
  • 250 правомочных местонахождение

Цель:

Чтобы максимизировать прибыль от 5 кластеров, где каждый кластер содержит выбранное местоположение и все местоположения, откуда люди хотят путешествовать в выбранное место.

Ограничения:

  • Всего выбранных местах должны быть 5 и должны быть из 250 подходящих мест
  • Выбранные места должны быть не менее 5 миль друг от друга
  • Каждое место может принадлежать только один кластер
+0

Возможно, вы получите лучший ответ на http://cstheory.stackexchange.com/ – Bas

+0

Являются ли прибыли одного выхода независимыми от местоположений других точек? Пример: местоположение 'A' имеет выход, местоположение' B' нет. Может ли прибыль в «А» измениться, если я решит открыть выход на «B»? – Carsten

+0

@ Карстен. Да, если есть место C, которое относится к районам как A, так и B. Прибыль C может быть засчитана только в A или B. Таким образом, выходное отверстие в точке B может повлиять на прибыль A. – san8055

ответ

0

Если я правильно понимаю вашу проблему правильно, вы хотите следующее:

позволяют переменным Li указать местоположение i. (Я = 1..250)

Пусть Si = {Lj for all j such that distance(Li, Lj) <= 5 miles}

Пусть Ci быть константой, представляющее значение окрестности Li

ограничения являются:

Sum Si <= 1 
Li = 1 or 0 
Sum(Li for all i) == 5 

целевая функция максимизировать Sum(Li*Ci for all i)

+0

Объективная функция неверна, так как значение окрестности не является константой, которую можно вычислить до руки , Местоположения, которые являются частью соседства местоположения, зависят от того, какие другие места имеют выход. – san8055

+1

@ san8055 Вы не определили ни одного правильного! – ElKamina

+0

@ElKamina Отредактировал вопрос, чтобы добавить дополнительную информацию – san8055

2

ограниченный fu ll перечисление должно сделать для этой проблемы размер:

  1. перечисляет все возможные варианты местоположения, не нарушая ограничение «не менее 5 миль». Простая рекурсия, легко распараллеливается.
  2. для каждой комбинации из # 1 рассчитайте общее количество мест, «покрытых» макетом, и выберите максимальное значение. Для каждого узла в этих 1000 найдите, какой выход, если кто-либо из узла будет идти, и +1, если какая-либо выходная точка достижима. Легко распараллеливается, снова.
  3. Дополнительно. Из тех одинаково хороших предпочитают те, у кого лучшая «балансировка нагрузки».

Проблема вы работаете на это: http://en.m.wikipedia.org/wiki/Quadratic_assignment_problem

Классические эвристики приближающейся эти ветви & связаны, генетический, отжиг. Полное перечисление будет использоваться для проверки того, что эвристика способна эффективно приближаться к глобальному минимуму при небольших размерах проблем.

+0

Исправьте меня, если я ошибаюсь, это вы имели в виду? * Комбинации из 250c5 фильтруют те, которые имеют расстояние более 5 миль. * Для каждой комбинации 5 выходов найдите сумму прибыли из всех мест, желающих совершить поездку в эти 5 точек и максимум - это решение. - Отличный метод грубой силы. Но, я хочу, чтобы алгоритм работал, например, на 25 выходах, тогда этот метод был бы очень дорогим. – san8055

+0

@ san8055 - да, он не масштабируется, но это позволит вам лучше понять проблему. – bobah

Смежные вопросы