직원 자동 예약 기능을 만들려면 어떤 알고리즘을 사용해야합니까?


18

수십 명의 파트 타임 직원이있는 소규모 지역 비즈니스 (내 경우에는 개 보육)를 상상해보십시오. 매주 직원 일정을 자동으로 만드는 것이 목표입니다. 내 질문은이 문제를 탐색하기 위해 알고리즘 접근 방식에 관한 것입니다.

명심해야 할 많은 제약이 있습니다. 주로 (1) 직원의 가용성 및 (2) 각 교대 근무 인원뿐만 아니라 각 교대에 필요한 기술 (예 : 특정 교대 근무, 개를 데리러 내리는 방법을 아는 사람, 개를 목욕시키는 방법을 아는 사람이 필요할 수 있습니다).

다른 제약 조건으로는 특정 직원 콤보를 피하거나 요구하는 것과 같은 것이 있습니다. 어쩌면 성격 갈등으로 인해 또는 다른 한편으로는 선배에서 후배까지의 삼투에 의한 훈련이 필요합니다.

또한 고려해야 할 기본 설정이 있습니다. 일부 직원은 월요일과 목요일을 말하는 것이 아니라 아침을 선호하며, 이틀 연속을 선호합니다. 모든 사람의 선호를 항상 수용 할 수는 없다는 것을 알고 있습니다. 실제로 우리는 직원들이 자신의 선택에 대해 먼저 딥을 얻는 계층 구조를 가지고 있습니다.

이 문제를 기존의 이미 해결 된 알고리즘으로 줄이거 나 표현할 수있는 방법이 있다고 생각합니다. 그러나 어떤 알고리즘을 탐색해야하는지 모르겠습니다. 가장 유망한 기존의 특정 알고리즘은 무엇입니까?



3
그리고 제쳐두고, 나는 과거에 가장 간단한 제약을 넘어서이 문제에 대해 작동하는 알고리즘을 찾지 못했습니다. "다른 제약을 임의로 무시하고 일정에 따라 모든 제약 조건을 무시하고 원하는대로 교환하거나 교대시킬 수 있습니다."

4
JBoss Drools 사이트 ( optaplanner.org) 에서 사용할 수있는 완전한 솔루션이 있습니다. 주당 최대 시간 등과 같은 예약 제약 조건을 체계화해야합니다.
BobDalgleish

이것이 NP 완료라고 알려진 SAT 문제와 동일하다고 생각하지만 합리적인 결과를 얻는 좋은 알고리즘은 의심의 여지가 없습니다.
David Conrad

답변:


16

로컬 검색 ( Tabu Search , Simulated Annealing , Late Acceptance ) 과 같은 알고리즘 은 이러한 문제에 매우 효과적입니다.

Bob이 제안한 것처럼 Java로 작업하는 경우 OptaPlanner (오픈 소스)를 살펴보십시오 . 직원 명단 에 관한이 비디오를보십시오 .


3
알고리즘을 설명하거나 해당 위치에 링크를 추가 할 수 있습니까? 링크를 추가하는 경우 관련 페이지에서 약간의 정보도 추가하십시오.
Adam Zuckerman

끝난. 참고 :이 중 다수는 Wikipedia에서도 설명합니다.
Geoffrey De Smet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.