/* * Copyright 2002, 2003, 2004, 2005 - Koalog */ package com.koalog.jcs.examples; import java.util.StringTokenizer; import org.apache.log4j.Category; import com.koalog.jcs.domain.IntegerDomain; import com.koalog.jcs.scheduler.Task; import com.koalog.jcs.scheduler.Disjunctive; import com.koalog.jcs.solver.BaseVariableHeuristic; import com.koalog.jcs.solver.IncreasingOrderDomainHeuristic; import com.koalog.jcs.solver.KeepOrderVariableHeuristic; import com.koalog.jcs.solver.SplitLowDomainHeuristic; import com.koalog.jcs.solver.SplitSolver; import com.koalog.jcs.variable.BaseVariable; import com.koalog.jcs.variable.Variable; /** * This is a solver for the JSSP. * * @author Yan Georget */ public class JobShopSolver extends SplitSolver { //------------------------------------------------------------------------ // STATIC PROPERTIES //------------------------------------------------------------------------ private static Category cat = Category.getInstance(JobShopSolver.class); //------------------------------------------------------------------------ // PROPERTIES //------------------------------------------------------------------------ /** The critical machine. */ int criticalMachine; //------------------------------------------------------------------------ // CONSTRUCTORS //------------------------------------------------------------------------ /** * Sole constructor. * @param problem a JSSP */ public JobShopSolver(JobShopProblem problem) { super(problem); criticalMachine = -1; } //------------------------------------------------------------------------ // METHODS //------------------------------------------------------------------------ /** * Returns a critical machine. * @return a machine number */ private int getCriticalMachine() { JobShopProblem p = (JobShopProblem) problem; int machine = -1; int slack = Integer.MAX_VALUE; int localSlack = Integer.MAX_VALUE; for (int i=0; i