SimplexSolver solver = new SimplexSolver(0.01); solver.setMaxIterations(this.MAXITERATIONS); RealPointValuePair r = null;
public IValue llOptimize(IBool minimize, IBool nonNegative, ISet constraints, IConstructor f) { SimplexSolver solver = new SimplexSolver(); ArrayList<LinearConstraint> constraintsJ = new ArrayList<LinearConstraint>(constraints.size()); for(IValue v : constraints ){ constraintsJ.add(convertConstraint((IConstructor)v)); } LinearObjectiveFunction fJ = convertLinObjFun(f); GoalType goal = minimize.getValue() ? GoalType.MINIMIZE : GoalType.MAXIMIZE; IValueFactory vf = values; boolean nonNegativeJ = nonNegative.getValue(); try { RealPointValuePair res = solver.optimize(fJ, constraintsJ, goal,nonNegativeJ); return vf.constructor(Maybe_just, vf.constructor( LLSolution_llSolution, convertToRealList(res.getPoint(), vf), vf.real(res.getValue()) ) ); } catch (Exception e) { return vf.constructor(Maybe_nothing); } } }