제약 조건을 가진 효율적인 작업 스케줄링을 개발하는 방법 ??Java에서 프로그래밍하는 제약 조건
스케줄러는 이러한 방법을 포함한다 :
startBeforeEndOf(Job j)
startAfterEndOf(Job j)
startBeforeStartOf(Job j)
startAfterStartOf(Job j)
endBeforeEndOf(Job j)
endAfterEndOf(Job j)
endBeforeStartOf(Job j)
endAfterStartOf(Job j)
모든 작업은 ID와 시간 매개 변수가 있습니다.
이 문제에 대한 가능한 해결책은 기술 백 트랙킹을 기반으로 할 수 있습니다. 작업은 선택 점으로, 일시적인 순간은 선택 사항으로 사용됩니다 (최악의 경우 전체 작업 시간은 작업 시간의 합계이므로 전체 순차 실행이됩니다).
또는 데이터를 적절하게 나타내야하고 제약 조건이 충족되지 않은 경우 작업을 제약 조건에 배치하고 작업 (및 그것에 종속 된 모든 작업)에서 앞으로 이동하는 시간축에서 일정을 생성해야합니다. 하지만 정확히 내가 자바에서 이것을 할 수 있는지 모르겠다.
다른 말로하면 나는 직업 관리에서 강렬한 역 추적 접근법을 피하는 방법을 찾고 있습니다.
인가 :
예를 들어, 다음과 같은 점수 규칙을 추가, 각
Job
startMinute
에 할당? 이 알고리즘을 사용할 수있는 알고리즘을 알고 있습니까? 검색 프로세스에 휴리스틱을 추가 할 수 있지만 백 트랙킹은 솔루션의 일부로 보입니다. 철저한 검색을 원하지 않는 한 :-) –나는 개인 목록과 같은 제약 조건에 따라 각 작업을 구분하기 위해 다양한 목록을 사용하려고 생각합니다. startBeforeEnd; \t 개인 목록 startAfterEnd; \t 개인 목록 startBeforeStart; \t 개인 목록 startAfterStart; \t 개인 목록 endBeforeEnd; \t 개인 목록 endAfterEnd; \t 개인 목록 endBeforeStart; \t 개인 목록 endAfterStart; \t 개인 목록 제한됨; 그러나 나는 이것을 정확히 어떻게 개발할 수 있는지 모른다. –
AndreaF