Search in sources :

Example 16 with Result

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);
    }
}
Also used : Variable(org.ojalgo.optimisation.Variable) NumberContext(org.ojalgo.type.context.NumberContext) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test)

Example 17 with Result

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);
    }
}
Also used : Variable(org.ojalgo.optimisation.Variable) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test)

Example 18 with Result

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);
    }
}
Also used : Variable(org.ojalgo.optimisation.Variable) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test) Disabled(org.junit.jupiter.api.Disabled)

Example 19 with Result

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));
}
Also used : Variable(org.ojalgo.optimisation.Variable) Expression(org.ojalgo.optimisation.Expression) ArrayList(java.util.ArrayList) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test)

Example 20 with Result

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());
}
Also used : BigArray(org.ojalgo.array.BigArray) Variable(org.ojalgo.optimisation.Variable) Expression(org.ojalgo.optimisation.Expression) NumberContext(org.ojalgo.type.context.NumberContext) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) BigDecimal(java.math.BigDecimal) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test)

Aggregations

Result (org.ojalgo.optimisation.Optimisation.Result)33 Test (org.junit.jupiter.api.Test)27 ExpressionsBasedModel (org.ojalgo.optimisation.ExpressionsBasedModel)27 Variable (org.ojalgo.optimisation.Variable)20 Expression (org.ojalgo.optimisation.Expression)12 Optimisation (org.ojalgo.optimisation.Optimisation)8 NumberContext (org.ojalgo.type.context.NumberContext)8 BigArray (org.ojalgo.array.BigArray)5 BigDecimal (java.math.BigDecimal)4 ArrayList (java.util.ArrayList)3 Builder (org.ojalgo.optimisation.convex.ConvexSolver.Builder)3 Disabled (org.junit.jupiter.api.Disabled)2 PrimitiveDenseStore (org.ojalgo.matrix.store.PrimitiveDenseStore)2 File (java.io.File)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 Map (java.util.Map)1 Collectors (java.util.stream.Collectors)1