N 개의 동일한 프로세서에서 작업 일정에 대한 최상의 솔루션을 찾는 정확한 알고리즘을 찾고 있습니다.N 개의 동일한 프로세서에서의 작업 스케줄링을위한 정확한 알고리즘은 무엇입니까?
이 알고리즘의 시간은 중요하지 않습니다. 가장 중요한 해결 방법은 마지막 작업이 완료 될 때 모든 프로세서의 시간입니다. P || Cmax는
을 누군가가 내가 도움을 grathefull 될 것이다 (특히 자바) 알고리즘 또는 의사가있는 경우 다음과 같이이 알고리즘을 설명하는 이론 방정식에서
이다.
난 내 자신의 정확한 알고리즘으로 쓰기하지만 ID가 permUtil 아래 코드에서 :(작동하지 않습니다 시도는 순열에 해당하는 클래스
메소드의 인수입니다 :..
- 작업 -> 모든 작업 여기서 인덱스 ID는 작업 및 값 시간
- op -> 할당 프로세서 (작업을 할당하는 프로세서)
//이 프로세서의 인덱스는 ID이고 값은 작업 스케줄 시간이되는 글로벌 어레이 op 프로세서입니다.
public void schedule(Byte[] tasks, int op)
{
PermUtil<Byte> permA = new PermUtil<Byte>(tasks);
Byte[] a;
// permutation of all tasks
while ((a = permA.next()) != null)
{
// assign tasks
for(int i=1; i< a.length; i++)
{
// get the b set from i to end
Byte[] b = Arrays.copyOfRange(a, i, a.length);
// all permutations off b set
PermUtil<Byte> permB = new PermUtil<Byte>(b);
while ((b = permB.next()) != null)
{
// task on assign processor
proc[op] = sum(Arrays.copyOfRange(a, 0, i));
if (op < proc.length)
schedule(b, ++op);
else
{
proc[++op] = sum(b);
}
}
}
}
}
왜 특정 프로세서에 작업을 할당합니까? 최적의 솔루션을 원한다면 각 작업을 다음 사용 가능한 스레드에 할당하는 Executor를 사용하지 않는 것이 좋습니다. –
if (op = proc.length 여야한다고 판단하므로 else 절은 항상 예외를 throw해야합니다. –
귀하의 의견은 왜 이중 언어입니까? – rownage