Функция R, чтобы найти оптимальное ранжирование объектов во фрейме данных? - PullRequest
2 голосов
/ 04 июня 2019

Я пытаюсь найти оптимальный порядок из списка n количества продуктов, чтобы максимизировать доход.

Пример:

Product    Position 1    Position 2    Position 3<br/>
   X       $0.38         $0.17         $0.11<br/>
   Y       $1.08         $0.71         $0.52<br/>
   Z       $0.82         $0.41         $0.26<br/>

Продукт (X, Y, Z) может быть указан только один раз, а каждая позиция (1,2,3) может быть указана только один раз.Для этого примера есть 6 возможных решений (n = 3, r = 3, 3! / (3! -3!) = 6) , но это должно быть в состоянии применить к n продукты с рейтингом r споты

X1 + Y2 + Z3 = $1.35
X1 + Z2 + Y3 = $1.31
Y1 + X2 + Z3 = $1.51
Y1 + Z2 + X3 = $1.60
Z1 + X2 + Y3 = $1.51
Z1 + Y2 + X3 = $1.64

Будет выбрана финальная комбинация (Z1 + Y2 + X3), поскольку максимальный доход составляет 1,64 доллара США.В дополнение к поиску оптимального показателя дохода мне нужно знать упорядоченную комбинацию, которая была выбрана, чтобы я знал, какие продукты принадлежат к какой позиции.

Я пробовал такие функции, как combn и expand.grid, но, похоже, они объединяютсявсе элементы в векторе, тогда как у меня может быть только один продукт, существующий в одной позиции.

Является ли R жизнеспособным инструментом для решения этой проблемы?Нужно ли структурировать данные в другом формате?

1 Ответ

1 голос
/ 04 июня 2019

Из ", но это решение должно быть в состоянии применить к N продуктам, ранжированным в N точках ", мы знаем, что number of products = number of spots = N.По сути, это задача присваивания .

Математическая модель обычно задается как:

 min sum((i,j), c[i,j]*x[i,j])
 subject to
     sum(i, x[i,j]) = 1   for all locations j
     sum(j, x[i,j]) = 1   for all products i
     x[i,j] in {0,1}

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

PS Предложение ", но это решение должно быть в состоянии применить к N продуктам, классифицированным вN пятна"был удален постером, что немного печально.Так что проблема несколько изменилась.Когда проблема меняется, модель может потребоваться обновить.Вместо проблемы сбалансированного назначения у нас теперь есть неуравновешенная.В зависимости от того, является ли количество продуктов (N) меньшим или большим, чем количество местоположений (M), нам нужно немного изменить модель.Он по-прежнему может быть сформулирован как LP / MIP или может быть приведен к проблеме назначения путем добавления фиктивных узлов источника или назначения.

...