0

(프로그래밍 수수께끼 같은) 파이썬 문제를 해결하고 싶습니다. 이것은 운동이나 이것과 관련된 것이 아니지만 제가 생각한 어떤 것, 그리고 그것을위한 해결책을 찾고 싶습니다.점수의 기초가되는 변수의 조합 찾기

문제 설명 :

  • 의 내가 10 개 개의 서로 다른 작업 위치와 사업을한다고 가정 해 봅시다.
  • 각 위치에는 몇 가지 다른 하위 위치가 있습니다. 예를 들어 (공격적, 편한, 보통). 그러나 하위 위치는 모든 위치에서 동일하지 않습니다. 기타에는 1, 기타에는 2, 기타 3이 있습니다.
  • 나는 모든 위치와 하위 위치에서 성능 점수가 20 명 있습니다.

비즈니스 생산의 최종 점수는 모든 순위의 각 점수의 합계가됩니다. 가장 높은 점수를 얻는 조합을 찾고 싶습니다.

몇 가지 생각 : 위치가 사람의 수보다 적은 때문에

  • 모든 사람들이 일을 얻을 수 없습니다.
  • 같은 위치에 두 사람을 가질 수 없습니다.
  • 첫 번째 시도은 각 사람들의 최고 점수를 받아 모든 직위를 하나씩 채우는 것이 었습니다. 그러나 이것은 결국 문제로 끝났습니다. 여행 세일즈맨과 비슷한 문제.

그럼 다음 옵션은 무엇입니까? 모든 파이썬 구현 아이디어?

편집 : 몇 가지 더 자세한 내용은 가까운 파이썬

positionslist = [pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9, pos10] 
subpositions = {"pos1":["A","B"], "pos2":["B","C"],"pos3":["A","B","C"],"pos4":["A"],"pos5":["A","B"],"pos6":["A","B","C"],"pos7":["B"],"pos8":["C"],"pos9":["A","C"],"pos10":["A"] 

peoplelist = [{"pos1 A":15,"pos1 B": 8, "pos2 B": 2, "pos2 C": 4, "po3 A": 2, "pos3 B":5...}, {"pos1 A":1, "pos1 B":23,"pos2 B":11,.....},.........] 

#run the code 

print "best combination:" result 

best combination: 
pos1 B, person 3, score 23 
pos2 C, person 5, score 11 
pos3 A, person 18, score .. 
pos4 
pos5 
pos6 
pos7 
pos8 
pos9 
pos10 
Total Score: .... 

에 내가 말했듯이, 의사 코드 내 구현은 다음과 같습니다 그러나

for position in positionlist: 
    for every sub-position: 
     find the highest score from every person 
    find the highest sub-position from the previous step 
    remove that person from the peoplelist 
    store the position with the sub-position and the person 

,이 세일즈맨 문제와 그것을 여행과 유사 결국 최고의 조합으로 끝나지 않을 것입니다.

답변

0

모든 사람이 각 위치에 대해 서로 다른 점수를 갖고 있으며 모든 사람과 위치의 조합에서 가장 높은 점수를 찾고 싶습니다. 즉, 각 위치에 대한 모든 점수를 계산해야합니다.

여행용 세일즈맨 문제와는 다른 표현 방식을 생각할 수 없습니다. 역순으로 이루어져 있지만 가장 낮은 조합보다는 가장 높은 점수 조합을 효과적으로 찾습니다.

그럴 경우 합리적인 시간 (모든 대용량 데이터 세트에 대해)에서 안정적으로 수행 할 수있는 것은 부적절한 점수를 얻는 것입니다. 그것이 최적 이하이거나 최적이라고 증명할 수 있습니다.

이 방법을 더 간단하게 만드는 한 가지 방법은 채우려는 위치의 우선 순위를 매기는 것이고 우선 순위에 따라 각 위치에서 가장 높은 점수를 얻는 것입니다. 그러나이 방법은 우선 순위에 따라 최적의 솔루션에 가까울 수도 있습니다. 비 우선 순위 포지션리스트.