/******************************************************** Xpress-BCL Java Example Problems ================================ file xbexpl1i.java `````````````````` BCL user guide example. Version using index sets. (c) 2008 Fair Isaac Corporation author: S.Heipcke, 2003, rev. Dec. 2011 ********************************************************/ import java.io.*; import com.dashoptimization.*; public class xbexpl1i { static final String DATAFILE = System.getProperty("XPRBDATA") + "/jobs/durations.dat"; static final int MAXNJ = 4; /* Max. number of jobs */ static final int NT = 10; /* Time limit */ /**** DATA ****/ static int NJ = 0; /* Number of jobs read in */ static double[] DUR; /* Durations of jobs */ static XPRBindexSet Jobs; /* Job names */ static XPRBvar[] start; /* Start times of jobs */ static XPRBvar[][] delta; /* Binaries for start times */ static XPRBvar z; /* Maximum completion time (makespan) */ static XPRB bcl; static XPRBprob p; /*************************************************************************/ /**** Initialize the stream tokenizer ****/ static StreamTokenizer initST(FileReader file) { StreamTokenizer st=null; st= new StreamTokenizer(file); /* Initialize the stream tokenizer */ st.commentChar('!'); /* Use the character '!' for comments */ st.eolIsSignificant(true); /* Return end-of-line character */ st.ordinaryChar(','); /* Use ',' as separator */ st.parseNumbers(); /* Read numbers as numbers (not strings)*/ return st; } /**** Read data from files ****/ static void readData() throws IOException { FileReader datafile=null; StreamTokenizer st; int i; /* Create a new index set */ Jobs = p.newIndexSet("Jobs", MAXNJ); DUR = new double[MAXNJ]; /* Read the durations data file */ datafile = new FileReader(DATAFILE); st = initST(datafile); do { do { st.nextToken(); } while(st.ttype==st.TT_EOL); /* Skip empty lines */ if(st.ttype != st.TT_WORD) break; i=Jobs.addElement(st.sval); if(st.nextToken() != ',') break; if(st.nextToken() != st.TT_NUMBER) break; DUR[i] = st.nval; NJ+=1; } while( st.nextToken() == st.TT_EOL && NJ