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


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.