您的位置:首页 > 其它

装配线调度问题

2013-06-15 16:35 281 查看
/*装配线调度问题*/
public class AssemblyLine {
public static final int N = 6;
public static void main(String[] args) {
int[] f1 = new int[N+1];
int[] f2 = new int[N+1];
int[] l1 = new int[N+1];
int[] l2 = new int[N+1];
int[] a1 = new int[]{0,7,9,3,4,8,4};
int[] a2 = new int[]{0,8,5,6,4,5,7};
int[] t1 = new int[]{0,2,3,1,3,4};
int[] t2 = new int[]{0,2,1,2,2,1};
int x1=3, x2=2;
int e1=2, e2=4;
int f;
int l;
f1[1] = e1 + a1[1];
f2[1] = e2 + a2[1];
for(int i=2; i<=N; i++) {
if(f1[i-1] + a1[i] <= f2[i-1] + t2[i-1] + a1[i]) {
f1[i] = f1[i-1] + a1[i];
l1[i] = 1;
} else {
f1[i] = f2[i-1] + t2[i-1] + a1[i];
l1[i] = 2;
}

if(f2[i-1] + a2[i] <= f1[i-1] + t1[i-1] + a2[i]) {
f2[i] = f2[i-1] + a2[i];
l2[i] = 2;
} else {
f2[i] = f1[i-1] + t1[i-1] + a2[i];
l2[i] = 1;
}
}
if(f1
+ x1 <= f2
+ x2) {
f = f1
+ x1;
l = 1;
} else {
f = f2
+ x2;
l = 2;
}

int j = l;
System.out.println("line: " + j + ",station " + N);
for(int i=N; i>=2; i--) {
if(j == 1) j = l1[i];
else j = l2[i];
System.out.println("line: " + j + ",station " + (i-1));
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: