2014-07-17 1 views
0

그래서 우리 학교에는 모든 사람들이 다른 활동에 참여하는 날이 있습니다. 각 프로젝트는 10 명의 회원을 가질 수 있습니다. 하루 종일은 2 또는 3 개의 다른 블록으로 나누어 져 활동에 할당 된 학생이 바뀝니다. (따라서 블록 1에서 학생 x는 활동 a에 참여하고 활동 d의 두 번째 블록에는 참여합니다). 이 날이 시작되기 전에 각 학생이 가장 좋아하는 활동 3 개 (또는 4 개)를 말할 수있는 목록을 만듭니다 (두 개에만 참여하며 다시 "가장 좋아하는 것"에서 가장 적은 순서로 순서가 지정됨). 참여하고 싶다. 이제 우리 학생들은 학생들에게 전반적인 만족감을 줄 수있는 방식으로 이러한 학생들을 배정합니다. 그래서 모든 사람들이 자신이 선택한 활동을 많이했거나 적게했습니다.)이 문제를 해결하는 좋은 알고리즘은 무엇입니까? (저는 (심지어는 java) 프로그래밍에 익숙하기 때문에 접근법도 충분할 것입니다. (일부 (의사) 코드도 좋을지도 모르지만) "만족도"를 계산하는 것과는 별도로이 작업을 수행 할 수있는 방법이 있습니까? 가능한 각 솔루션에 대한 가치?활동 단위에 회원을 분배하는 알고리즘 (개별 선호도 포함)

옵션 기능은 다른 사람이 프로젝트에 참여할 수없는 경우 비슷한 것으로 나타납니다 (이 또한 성 차별적 인 것으로 들리며 "여성/남성" "이 활동은이 저울에 따라 유사한 활동을 선택하고 있습니다)

이 질문이 stackexchange에 맞기를 희망합니다. 주제가 완전히 떨어져 있다면 더 적절한 스택에 대해 알려 주어서 기쁩니다.

제안을 기대, 존

+0

프로젝트에 필요한 최소한의 학생 수 또는 1이면 충분합니다. –

+0

그룹에 하나 또는 두 개 이상 있어야합니다. – joz

답변

0

학생들이 자신이 좋아하는 활동 (1-4)의 각각의 순위를하는 경우 다음 그 활동 체중 (1-4)을 할당하는 간단합니다. 특정 활동에 대한 가중치를 부여한 모든 사용자를 그룹화하고 학생 수를 활동 수와 비교합니다. 반점보다는 학생이 더 많으면 선택하는 방법이 공중에 있습니다. 나는 공정성을 위해 무작위로 말하며, 당신이 좋아할만한 것을 얻고 싶다면 매일 그것을 추적하여 모두가 좋아하는 활동에 참여할 수있는 기회를 갖도록 할 수 있습니다.

학생보다 많은 슬롯이있는 경우 3 개를 평가하는 사람들을 위해 설문 조사를 할 수 있습니다.

적어도 시작하기에 적당한 장소 같아요.

+0

시작하는 것이 좋습니다.하지만 누가 모든 사람이 모두 가장 좋아하는 두 가지 활동에 참여할 수있는 블록이있는 활동으로 이동해야합니다 (어떤 블록에 누가 참여해야하는지 결정해야하므로 전체 만족도가 가장 높음). – joz

+0

누군가가 하나의 활동에 빠지면 다음으로 가장 높은 것의 무게를 올릴 수 있습니다 (3은 4 등이됩니다). –

0

알고리즘이 없지만 많은 작업을 수행 할 패키지가 있습니다. 사이트는 http://www.optaplanner.org/이며 Drools 프로젝트의 일부입니다.

응용 프로그램을 구성하려면 약간의 작업이 필요합니다. 구성을 마칠 때까지 작업이 얼마나 힘든지에 대한 힌트를 얻었을 것이며 간단한 알고리즘으로 작업을 수행 할 이유가 없을 것입니다.

+0

다른 블록 (및 가중치 할당)에서 문제를 어떻게 도입 할 수 있는지 생각해보십시오. 어느 유형의 문제를 구성해야합니까? – joz

+0

흠. 나는 당신의 질문을 충분히 자세히 읽지 않았다. 각 학생이 2 개의 활동을 수행 할 수 있다면 첫 번째와 두 번째 블록을 위해 각 학생에게 목록의 1 번과 2 번을 할당하지 않으시겠습니까?그것은 만족을 극대화 할 것입니다. –

+0

하지만 모두가 자신의 좋아하는 활동을 얻을 수있는 경우에만 작동하지만 공간이 충분하지 않아 충분하지 않은 경우에만 – joz

관련 문제