批处理作业调度分支限界算法
(1)问题分析:
给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。
2)程序源代码:
import java.util.Collections;
import java.util.LinkedList;
/**
* 批处理作业调度问题--优先队列式分支限界法
*/
public class BBFlow {
public int n;//作业数
public int bestc;//最小完成时间和
public int [][]m;//个作业所需的处理时间数组
public int [][]b;//个作业所需的处理时间排序数组
public int[][] a;//数组m和b的对应关系数组
public int[] bestx;//最优解
public boolean[][] y;//工作数组
public BBFlow(int n,int[][] m){
this.n=n;
bestc=10000;
this.m=m;
b=new int[n][2];
a=new int[n][2];
bestx=new int[n];
y=new boolean[n][2];
}
public void swap(int[][] b,int i,int j,int k,int