여러 입력 변수를 사용하는 Excel 솔버
문제
스포츠 선수 목록, 직위, 해당 선수에게 할당된 급여 및 예상 포인트 금액이 포함된 Excel 시트가 있습니다.
저는 현재 솔버를 사용하여 특정 포지션 제한과 미리 정의된 급여 한도 내에서 가능한 최고의 스포츠 선수 그룹을 만들고 있습니다.
내 구체적인 예에서 다양한 플레이어 위치는 다음과 같습니다.PG, SG, SF, PF, C, G, F.G는 PG 또는 SG일 수 있고 F는 SF 또는 PF일 수 있습니다.
이 솔버는 현재 작동 중이지만 경우에 따라 플레이어가 여러 위치를 가질 수 있습니다.예를 들어 플레이어 A는 SF 또는 SG로 사용될 수 있습니다.
문제의 플레이어가 두 슬롯 중 하나에서 사용될 수 있도록 솔버 기능 내에서 이를 설명할 수 있는 방법이 있습니까?
설명을 돕기 위해 사용되는 데이터의 몇 가지 예를 제공하겠습니다.다음은 플레이어 목록의 작은 샘플입니다.
Position Player Salary Game Points Pos 1 Pos 2
PF/C Kevin Love $10,400 Pho@Min 09:30PM ET 53.17 PF C
PG/SG Stephen Curry $10,000 GS@Bkn 07:30PM ET 47.50 PG SG
SG/SF James Harden $9,500 LAL@Hou 08:00PM ET 41.13 SG SF
PF/C LaMarcus Aldridge $9,500 Orl@Por 10:00PM ET 45.22 PF C
PF/C Anthony Davis $9,200 Was@NO 08:00PM ET 42.97 PF C
PF/C Blake Griffin $9,000 Bos@LAC 10:30PM ET 42.66 PF C
PG John Wall $8,900 Was@NO 08:00PM ET 42.09 PG
PF/C Dwight Howard $8,700 LAL@Hou 08:00PM ET 41.19 PF C
SG/SF Paul George $8,600 Ind@Atl 07:30PM ET 40.06 SG SF
PF Paul Millsap $8,400 Ind@Atl 07:30PM ET 37.96 PF
PF/C Al Horford $8,300 Ind@Atl 07:30PM ET 37.33 PF C
G 및 F 문제를 해결하기 위해 "선택된" 플레이어를 집계하는 목록이 있고 해당 목록에는 각각의 최소/최대 값이 있습니다.따라서 이 예에서는 PG 1개, SG 1개, G 1개가 필요합니다.따라서 최소값이 1이고 최대값이 2인 PG 열, 최소값이 1이고 최대값이 2인 SG 열, 그리고 최소값이 3이고 최대값이 2인 PG/SG를 함께 추가하는 G 열이 있습니다. 최대 3개.그런 다음 솔버 기준의 일부는 모든 최소/최대가 일치해야 한다는 것입니다.
가능한 두 위치를 분리하기 위해 첫 번째 열을 POS1과 POS2로 분할했지만 솔버 기능에 두 위치를 모두 포함하는 방법을 알 수 없습니다.Kevin Love와 같은 플레이어의 경우 솔버가 그가 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) 중 하나가 기준에 적합하므로 각 플레이어는 자신의 슬롯에 맞습니다.당연히 합계가 맞지 않으므로 실행 가능한 솔루션은 아니지만 단지 예일 뿐입니다.
자세한 내용을 충분히 제공해 드렸기를 바라지만, 그렇지 않은 경우 알려주시면 기꺼이 더 자세히 설명해 드리겠습니다.미리 감사드립니다.
해결책
귀하의 연봉 상한액은 $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
(가치는 내 자신의 것입니다).