작업 스케줄링 애플리케이션의 경우 w 주 (= 7w 일) 동안 가능한 많은 직원 일정을 생성해야합니다. 직원 일정은 계획 기간의 각 날에 대한 근무 시간 (일찍, 늦은 밤, 낮으로) 목록으로 구성됩니다. 응용 프로그램은 Java로 프로그래밍됩니다. 나는 또한 약간의 변화 특성을 가지고Java : 많은 양의 데이터 배열 표현
public enum Shift
{
DAY, LATE, NIGHT, FREE;
}
:
public class Schedule
{
/** List with for every day of planning period the assigned shift */
private Shift[] shiftlist = new Shift[Settings.schedule_days];
/** Cost of schedule (for measuring its quality) */
private double cost;
// A list of variables, representing schedule properties
// which are referenced often.
// E.g.: number of workweekends, number of night shifts
// Also some methods for updating/retrieving information
}
시프트로 정의 할당 된 변화를 나타내는 열거이며, 다음과 같이이 때
, 나는 직원의 일정을 나타냅니다 열거 형 선언 및 속성을 비교하는 메서드를 사용하지만 여기서는 관련이 없다고 생각합니다.모든 직원은 자신의 가능한 일정 목록이 있습니다 :
public class Employee
{
/** Large set of possible schedules for planning period */
public LinkedList<Schedule> generated_schedules;
// Variables representing properties of employee
}
내 문제는 내가 실제로 50 명의 직원을 가지고 있고 나는 100.000 생성하고자하는 것입니다 - 직원 당 1.000.000 가능한 일정을.
일정은 실제로 신속하게 생성되며 내 컴퓨터에서 8GB의 메모리를 사용할 수 있으므로 일정을 많이 저장할 수 있습니다. 그러나 30 ~ 40 명의 직원을위한 생성이 완료되면 내 기억이 꽉 찼습니다.
누군가 내게 준 제안은 일련의 열거 형 대신 할당 된 쉬프트를 나타내는 문자 배열을 사용하는 것입니다. 이렇게하면 공간을 덜 차지하게됩니다. 또한 그는 Schedule 개체 목록 대신 char 배열 목록을 사용하는 것이 더 좋습니다. 그러나 일정 근처의 일정 특성 (예 : 비용)을 저장할 수 없으며 자주 재 계산해야합니다. 나는 이것이 심각한 단점이 될 것이라고 생각한다.
이 관찰은 실제로 의미가 있습니까? 아니면 적은 공간을 사용하기 위해이 많은 양의 데이터를 표현하는 더 좋은 방법이 있다고 생각합니까?
생성 된 모든 일정을 동시에 메모리에 보관해야합니까? 그들과 너 뭐하고 있니? 그것들을 하나씩 생성하고 처리 할 수 없습니까 (이전의 것을 잊어 버렸습니까?)? – Thilo
이 [숙제]입니까? –
일정은 개인 취향에 따라 개별 직원에 대해 생성됩니다. 열 생성을 사용하여 선형 프로그램에 반복적으로 스케줄을 선택합니다. LP는 인력 수요가 가득 채워지도록 모든 직원의 명단을 선택하려고합니다. 그러므로 나는 모든 일정을 기억해야합니다. – user1671257