2014-01-09 4 views
2

У меня есть лист Excel, в котором есть список спортивных игроков, их позиции, зарплата, назначенная этим игрокам, и прогнозируемое количество очков.Excel Solver с несколькими входными переменными

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

В моем конкретном примере разные позиции игрока: PG, SG, SF, PF, C, G и F. Заметим, что G может быть либо PG, либо SG, а F может быть либо SF или PF.

Этот решатель работает в настоящее время, но в некоторых случаях игрок может иметь несколько позиций. Так, например, Player A можно использовать как SF или SG.

Есть ли способ учесть это в функции Solver, чтобы рассматриваемый игрок мог использоваться в любом слоте?

Чтобы объяснить это, я приведу несколько примеров используемых данных. Вот небольшой пример из списка игроков:

Position Player    Salary  Game    Points Pos 1 Pos 2 
PF/C Kevin Love   $10,400  [email protected] 09:30PM ET 53.17 PF  C 
PG/SG Stephen Curry  $10,000  [email protected] 07:30PM ET 47.50 PG  SG 
SG/SF James Harden  $9,500 [email protected] 08:00PM ET 41.13 SG  SF 
PF/C LaMarcus Aldridge $9,500 [email protected] 10:00PM ET 45.22 PF  C 
PF/C Anthony Davis  $9,200 [email protected] 08:00PM ET 42.97 PF  C 
PF/C Blake Griffin  $9,000 [email protected] 10:30PM ET 42.66 PF  C 
PG  John Wall   $8,900 [email protected] 08:00PM ET 42.09 PG 
PF/C Dwight Howard  $8,700 [email protected] 08:00PM ET 41.19 PF  C 
SG/SF Paul George   $8,600 [email protected] 07:30PM ET 40.06 SG  SF 
PF  Paul Millsap  $8,400 [email protected] 07:30PM ET 37.96 PF 
PF/C Al Horford   $8,300 [email protected] 07:30PM ET 37.33 PF  C 

Для решения G и F вопроса, у меня есть список, увязанные «выбрано» игроки, и этот список имеет мин/макс каждый. Поэтому в этом примере мне нужно 1 PG, 1 SG и 1 G. Итак, у меня есть столбец PG с минимальным значением 1 и максимум 2, столбец SG с минимальным значением 1 и максимум 2, а G столбец, который добавляет вместе PG/SG, который имеет минимум 3 и максимум 3. Затем часть критериев решателя - это все минимальные/максимальные значения.

Я разделил первый столбец на POS1 и POS2, чтобы отделить два возможных положения, но я не могу понять, как включить их в функцию решателя. Для такого игрока, как Кевин Лав, я хочу, чтобы решатель принял во внимание, что он может быть помещен в пятна PF, F или C.

Вот эта таблица:

PG SG SF PF C G F Ttl 
Min 1 1 1 1 1 3 3 8 
Max 3 3 3 3 2 4 4 8 
Cur 1 3 1 2 1 4 3 8 

Так, например, решатель критерием является:

Sum of Salary <= Salary Cap (50000) 
PG Cur >= PG Min 
Repeat for all Min 
PG Cur <= PG Max 
Repeat for all Max 
Maximize Points 

И, наконец, вот пример решения:

PG Stephen Curry $10,000  47.5 
SG James Harden  $9,500  41.13 
SF Paul George  $8,600  40.06 
PF Dwight Howard $8,700  41.19 
C Blake Griffin $9,000  42.66 
G John Wall  $8,900  42.09 
F Al Horford  $8,300  37.33 
Total     $63,000  292.5 

Каждый игрок вписывается в их слот, потому что одна из их двух позиций (POS1 или POS2) соответствует критериям. Очевидно, что сумма не подходит, поэтому это не будет жизнеспособным решением, но это всего лишь пример.

Надеюсь, я предоставил достаточно подробностей, но если нет, сообщите мне, и я буду рад объяснить дальше. Заранее спасибо.

+0

Можете ли вы загрузить пример того, что является идеальным результатом? А также обновите таблицу с помощью разделов, упомянутых в первом столбце? И дать некоторые подробности вокруг решателя, который вы используете в настоящее время? Это поможет ответчикам направлять свои усилия. – guitarthrower

+1

благодарит за отзыв. Я обновил исходный вопрос ... это кажется лучше? – fullOfQuestions

ответ

1

Ваш вопрос по-прежнему немного расплывчатый, потому что ваша зарплата составляет 50 000 долларов, но вы показываете 63 000 выбранных игроков.

Предположения:
1. Вы хотите, чтобы 5 игроков, так как это количество игроков, и единственный способ получить команду, состоящую из вашего списка игроков ниже 50 000 долларов. Это, вероятно, фэнтезийные обручи, и вы хотите 7 или 8, но решение должно по-прежнему работать для 8 игроков с более широким списком опций и более низкой зарплатой.
2. Я также предполагаю, что здесь нет мало VBA, так как вы не предоставили никаких данных - или, по крайней мере, ни одно из них не нуждается в настройке.

Мое решение (которое все еще находится в тестировании) заключается в том, чтобы бросать/отличать (или эквивалент VBA) для Pos1 и Pos2 в текст номера позиции (т. Е. 1 = PG, 2 = SG и т. Д.).

Далее, =concatenate(Pos1, Pos2), так что PG является 11, PG/SG является 12 и т. Д. («G» также является 11 в этом сценарии, что может привести к сбою в моей логике).

Изменение таблицы Позиция со значениями Min/Max/Cur выглядит примерно так:

Pos. | PG | G | PG/SG | SG | SG/SF | SF/PF | F | PF | PF/C | C 
-------------------------------------------------------------------- 
Pos1 | 1 | 1 | 1  | 2 | 2  | 3  | 3 | 4 | 4 | 5 
Pos2 | 1 | 2 | 2  | 2 | 3  | 4  | 4 | 4 | 5 | 5 
PosNbr | 11 | 12 | 12 | 22 | 23 | 34 | 34 | 44 | 45 | 55 
-------------------------------------------------------------------- 
Min  | 1 | 3 | 3  | 1 |  | 3  | 4 | 1 |  | 1 
Max  | 3 | 4 | 4  | 3 |  | 4  | 4 | 3 |  | 2 
Curr | 1 | 1 | 1  | 0 | 0  | 0  | 0 | 0 | 3 | 0 

(значения являются мои собственные).

+1

Так что я не пользовался вашим точным решением, но ваш ответ вызвал простой ответ для меня. Я просто оставил перечисленную позицию в виде PG/SG, SG/SF и т. Д. И добавил новые номера Min/Max для них. Так что в дополнение к min/max для PG/SG/SF/PF/C у меня есть мин на PG/SG 0 и максимум 5 (требования к реестру позволяют до 5 - PG, SG, G и 2 «пятна любого игрока»). Работает как очарование! Спасибо за ваш ответ, это помогло мне разобраться! – fullOfQuestions

+0

Рад быть полезным. Ваш вопрос вызвал мой запрос в «Solver», который я ранее не использовал. – Sam

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