if (con[i].type==ConstraintType.GE) {
if (con[i].type.equals(ConstraintType.GE)) {
    private ModelAndVars setupModel() throws IloException, IOException {	// make model	IloCplex model = new IloCplex();	// if there's any timeout, put emphasis on finding a feasible	// solution quickly instead of proving the optimality of the	// solution.	if (this.timeout!=MAX_TIMEOUT) {	    model.setParam(IloCplex.IntParam.MIPEmphasis, IloCplex.MIPEmphasis.Feasibility);	}		// construct types	IloNumVarType[] types = new IloNumVarType[numVars];	for (int i=0; i<numVars; i++) {	    if (boolVar[i]) {		types[i] = IloNumVarType.Bool;	    } else {		types[i] = IloNumVarType.Float;	    }	}	// construct bounds for vars	double[] lb = new double[numVars];	double[] ub = new double[numVars];	for (int i=0; i<numVars; i++) {	    // give 0-1 range for bool vars solely to avoid warning	    // from cplex; the important part of the bool var is the	    // type decided above.	    if (boolVar[i]) {		lb[i] = 0.0;		ub[i] = 1.0;	    } else {		lb[i] = Double.MIN_VALUE;		ub[i] = Double.MAX_VALUE;	    }	}	// construct vars <x>	IloNumVar[] x = model.numVarArray(numVars, lb, ub, types);	// construct objective function	model.addMinimize(model.scalProd(x, obj));	// add constraints	Constraint[] con = (Constraint[])constraints.toArray(new Constraint[0]);	for (int i=0; i<con.length; i++) {	    if (con[i].type==ConstraintType.GE) {		model.add(model.addGe(model.scalProd(x, con[i].lhs), con[i].rhs));	    } else if (con[i].type==ConstraintType.EQ) {		model.add(model.addEq(model.scalProd(x, con[i].lhs), con[i].rhs));	    } else {		Utils.fail("Unrecognized constraint type: " + con[i].type);	    }	}	return new ModelAndVars(model, x);    }