2012-05-13 2 views
0

개발자가 서로 다른 프로젝트로 구성된 의 팀으로 일하는 소프트웨어 회사가 있다고 가정합니다. 프로젝트는 할당 된 개발자에게 일정 기술이 필요합니다. 제 목적으로는 간단하게 유지하고 이것을 하나의 기술, 즉 프로그래밍 언어로 제한하고 싶습니다. 따라서 일부 프로젝트는 Java가 필요하고 다른 프로젝트는 등이 필요합니다. 프로젝트의 기간은 고정되어 있으며 각 프로젝트에는 두 명의 개발자가 있어야합니다. .작업장 일정 : 어떤 솔루션을 고려해야합니까?

어느 시점에서든 일부 프로젝트가 진행 중이며 새로운 프로젝트는 에 있으며 향후 어느 시점에서 계획해야합니다. 개발자가 어떤 프로젝트에서 언제 작업해야하는지 일정을 계산하고 싶습니다.

최적의 솔루션을 찾는 것이 아닙니다 (가능한 경우). 나는 인간 관리자가 만들 수있는 일정으로 을 처리하고 있습니다.

리소스 제한 스케줄링 문제 및 할당 문제에 대한 기사를 읽었지만 공식 CS 교육이 거의 없었으며, 은 종종 이러한 다양한 문제의 모든 뉘앙스에서 손실되었습니다.

내 문제는 작업이 개의 프로젝트 인 곳에서 작업 가게 스케줄링의 단순한 변형이라고 생각하며 개발자는 컴퓨터이므로 에 여러 컴퓨터가 필요합니다. 실행중인 프로젝트 을 중단 할 수 없으므로 먼저 완료해야한다는 점에서 선행 조건은 하나뿐입니다.

내가 읽을 수있는 가능한 모든 솔루션에서 유전 알고리즘을 사용하려고합니다. 주로 사람들이 과 함께 좋은 결과를 얻었고 다른 프로젝트를 사용했기 때문에 유전 알고리즘을 사용했습니다. . 선형 프로그래밍을 사용하여 좋은 결과를 읽었지만, 그것에 대해서는 거의 알지 못했습니다. .

유전 알고리즘은 이러한 유형의 문제에 대한 가능한 해결책입니까? 아니면 더 나은 해결책이 있습니까?

+0

작업이 서로 종속되어 있습니까? (I.E. 작업 7은 작업 2가 완료되기 전에 완료되어야 함). 과제가 미리 알려지지 않았습니까? – amit

+0

작업을 할 때 프로젝트 자체를 의미합니까? 프로젝트는 서로 의존하지 않습니다. 그리고 스케줄 생성 시간에 모든 프로젝트가 알려집니다. 명확성을 위해 프로젝트의 개별 작업은이 문제에서 중요하지 않습니다. 프로젝트는 SCRUM 프로젝트 에서처럼 미리 결정된 기간이 경과하면 완료된 것으로 간주됩니다. – mrdg

답변

1

한쪽에는 개발자가 있고 다른쪽에는 필요한 프로젝트 멤버가있는 2 부분 그래프를 만듭니다. "필요한 프로젝트 멤버"라는 말은 프로젝트가 P 인 경우 개발자가 3 명인 경우 P0, P1 및 이라는 3 개의 노드를 추가한다는 것을 의미합니다.

개발자가 프로젝트에 필요한 모든 기술을 보유하고있는 경우 개발자와 필요한 프로젝트 멤버 사이에 경계를 그립니 다. 그런 다음 문제는이 그래프에서 matching을 찾습니다. 이 작업을 수행하는 데 사용할 수있는 표준 알고리즘이 있습니다.

+0

나는 이것을 조사 할 것이다. 이 솔루션은 또한 내 문제의 타이밍/일정 부분을 처리 할 수 ​​있습니까? – mrdg

+0

타이밍을 정확히 처리하지는 않지만 모든 프로젝트가 포함 된 그래프에서 일치하는 항목을 발견하면 해당 일치가 스케줄링 제약 조건을 준수합니다. 문제는 너무 제한적이라는 것입니다. 일치하는 그래프는 없지만 한 명의 개발자가 하나의 프로젝트를 수행 한 다음 나중에 다른 하나의 프로젝트를 수행 할 수있는 일정을 가질 수 있습니다. Doug의 대답을 통해 당신은 반복적으로 한 번에 하나의 프로젝트를 매칭합니다. 그런 다음 바쁜 개발자를 제외하여 개발자 풀을 제어 할 수 있습니다. – phs

0

유전 알고리즘을 사용하는 것이 가능한 방법이지만 매우 야심적입니다.

시작은 greedy algorithm입니다.