use of org.ojalgo.optimisation.Optimisation.Result in project ojAlgo by optimatika.
the class MarketShareCase method testMipButSomeConstainedToOptimatl.
@Test
public void testMipButSomeConstainedToOptimatl() {
final ExpressionsBasedModel tmpModel = MarketShareCase.makeModel();
// tmpModel.options.debug(IntegerSolver.class);
// 37, 20
final int tmpConstrLimit = 20;
int tmpConstrCount = 0;
for (final Variable tmpVariable : tmpModel.getVariables()) {
final String tmpName = tmpVariable.getName();
if (tmpConstrCount < tmpConstrLimit) {
tmpVariable.level(SOLUTION.get(tmpName));
tmpConstrCount++;
}
}
final Result tmpResult = tmpModel.minimise();
TestUtils.assertStateNotLessThanOptimal(tmpResult);
TestUtils.assertTrue(tmpModel.validate(tmpModel.options.feasibility));
TestUtils.assertTrue(tmpModel.validate(tmpResult, tmpModel.options.feasibility));
TestUtils.assertEquals("OBJECTIVE_MIP", OBJECTIVE_MIP.doubleValue(), tmpResult.getValue(), tmpModel.options.feasibility);
final NumberContext tmpContext = tmpModel.options.solution.newScale(13);
for (final Variable tmpVariable : tmpModel.getVariables()) {
final String tmpName = tmpVariable.getName();
final double tmpExpected = SOLUTION.get(tmpName).doubleValue();
final double tmpActual = tmpVariable.getValue().doubleValue();
TestUtils.assertEquals(tmpName, tmpExpected, tmpActual, tmpContext);
}
}
use of org.ojalgo.optimisation.Optimisation.Result in project ojAlgo by optimatika.
the class MarketShareCase method testRelaxedButAllConstrainedToOptimal.
@Test
public void testRelaxedButAllConstrainedToOptimal() {
final ExpressionsBasedModel tmpModel = MarketShareCase.makeModel();
tmpModel.relax(true);
for (final Variable tmpVariable : tmpModel.getVariables()) {
tmpVariable.level(SOLUTION.get(tmpVariable.getName()));
}
final Result tmpResult = tmpModel.minimise();
TestUtils.assertEquals("OBJECTIVE_MIP", OBJECTIVE_MIP.doubleValue(), tmpResult.getValue(), 1E-14 / PrimitiveMath.THREE);
for (final Variable tmpVariable : tmpModel.getVariables()) {
TestUtils.assertEquals(tmpVariable.getName(), SOLUTION.get(tmpVariable.getName()).doubleValue(), tmpVariable.getValue().doubleValue(), 1E-14 / PrimitiveMath.THREE);
}
}
use of org.ojalgo.optimisation.Optimisation.Result in project ojAlgo by optimatika.
the class MarketShareCase method testFullMIP.
@Test
@Disabled("Underscored before JUnit 5")
public void testFullMIP() {
final ExpressionsBasedModel tmpModel = MarketShareCase.makeModel();
// tmpModel.options.debug_stream = BasicLogger.DEBUG;
// tmpModel.options.debug_solver = IntegerSolver.class;
// tmpModel.options.validate = true;
final Result tmpResult = tmpModel.minimise();
TestUtils.assertEquals("OBJECTIVE_MIP", OBJECTIVE_MIP.doubleValue(), tmpResult.getValue(), 1E-14 / PrimitiveMath.THREE);
for (final Variable tmpVariable : tmpModel.getVariables()) {
TestUtils.assertEquals(tmpVariable.getName(), SOLUTION.get(tmpVariable.getName()).doubleValue(), tmpVariable.getValue().doubleValue(), 1E-14 / PrimitiveMath.THREE);
}
}
use of org.ojalgo.optimisation.Optimisation.Result in project ojAlgo by optimatika.
the class DesignCase method testFacilityLocation.
/**
* http://www.ohio.edu/people/melkonia/math3050/slides/IPextendedintro.ppt Slide 8
*/
@Test
public void testFacilityLocation() {
final ArrayList<Variable> tmpVariables = new ArrayList<>();
tmpVariables.add(Variable.makeBinary("Factory in LA").weight(9));
tmpVariables.add(Variable.makeBinary("Factory in SF").weight(5));
tmpVariables.add(Variable.makeBinary("Warehouse in LA").weight(6));
tmpVariables.add(Variable.makeBinary("Warehouse in SF").weight(4));
final ExpressionsBasedModel tmpModel = new ExpressionsBasedModel();
tmpModel.addVariables(tmpVariables);
final Expression tmpBudgetCost = tmpModel.addExpression("Budget").upper(10);
tmpBudgetCost.set(tmpVariables.get(0), 6);
tmpBudgetCost.set(tmpVariables.get(1), 3);
tmpBudgetCost.set(tmpVariables.get(2), 5);
tmpBudgetCost.set(tmpVariables.get(3), 2);
// tmpModel.options.debug(GenericSolver.class);
final Result tmpResult = tmpModel.maximise();
TestUtils.assertStateNotLessThanOptimal(tmpResult);
TestUtils.assertEquals(15.0, tmpResult.getValue());
TestUtils.assertEquals(0.0, tmpResult.doubleValue(0));
TestUtils.assertEquals(1.0, tmpResult.doubleValue(1));
TestUtils.assertEquals(1.0, tmpResult.doubleValue(2));
TestUtils.assertEquals(1.0, tmpResult.doubleValue(3));
}
use of org.ojalgo.optimisation.Optimisation.Result in project ojAlgo by optimatika.
the class IntegerProblems method testP20130409a.
/**
* apete's implementation of the original problem description.
* <a href="http://bugzilla.optimatika.se/show_bug.cgi?id=178">BugZilla</a>
*/
@Test
public void testP20130409a() {
final Variable[] tmpVariables = new Variable[] { new Variable("x1").lower(BigMath.ZERO).weight(BigMath.ONE), new Variable("x2013").lower(BigMath.ZERO).integer(true), new Variable("x2014").lower(BigMath.ZERO).integer(true) };
final ExpressionsBasedModel tmpModel = new ExpressionsBasedModel(tmpVariables);
final Expression tmpExpr1 = tmpModel.addExpression("Expr1");
tmpExpr1.set(0, -1);
tmpExpr1.set(1, 5100);
tmpExpr1.set(2, -5000);
tmpExpr1.upper(BigMath.ZERO);
final Expression tmpExpr2 = tmpModel.addExpression("Expr2");
tmpExpr2.set(0, 1);
tmpExpr2.set(1, 5100);
tmpExpr2.set(2, -5000);
tmpExpr2.lower(BigMath.ZERO);
final Expression tmpExpr3 = tmpModel.addExpression("Expr3");
tmpExpr3.set(1, 5000);
tmpExpr3.set(2, 5000);
tmpExpr3.level(new BigDecimal(19105000));
final BigArray tmpExpSol = BigArray.wrap(new BigDecimal[] { BigDecimal.valueOf(4200.000000000075), BigDecimal.valueOf(1892), BigDecimal.valueOf(1929) });
TestUtils.assertTrue("Expected Solution Not Valid", tmpModel.validate(tmpExpSol));
// tmpModel.options.debug(GenericSolver.class);
// tmpModel.options.problem = NumberContext.getGeneral(12);
final Result tmpResult = tmpModel.minimise();
// BasicLogger.debug(tmpResult.toString());
TestUtils.assertEquals("Solution Not Correct", tmpExpSol, tmpResult, new NumberContext(8, 8));
TestUtils.assertTrue("Solver State Not Optimal", tmpResult.getState().isOptimal());
}
Aggregations