Search in sources :

Example 6 with ExpressionsBasedModel

use of org.ojalgo.optimisation.ExpressionsBasedModel in project ojAlgo by optimatika.

the class ConvexProblems method testP20111129.

/**
 * ojAlgo could not solve this, but LOQO (and others) could. I re-implemented the problem code just to
 * verify there was no problem there. http://bugzilla.optimatika.se/show_bug.cgi?id=11
 */
@Test
public void testP20111129() {
    final Variable x1 = new Variable("X1");
    final Variable x2 = new Variable("X2").lower(BigMath.HUNDRED.negate()).upper(BigMath.HUNDRED);
    final Variable x3 = new Variable("X3").lower(BigMath.ZERO);
    final Variable x4 = new Variable("X4").lower(BigMath.ZERO);
    final Variable[] tmpVariables = new Variable[] { x1, x2, x3, x4 };
    final ExpressionsBasedModel tmpModel = new ExpressionsBasedModel(tmpVariables);
    final Expression tmpObjExpr = tmpModel.addExpression("Objective");
    tmpModel.setMinimisation();
    tmpObjExpr.set(2, 2, BigMath.HALF);
    tmpObjExpr.set(3, 3, BigMath.TWO);
    tmpObjExpr.set(2, 3, BigMath.TWO.negate());
    tmpObjExpr.set(0, BigMath.THREE);
    tmpObjExpr.set(1, BigMath.TWO.negate());
    tmpObjExpr.set(2, BigMath.ONE);
    tmpObjExpr.set(3, BigMath.FOUR.negate());
    tmpObjExpr.weight(BigMath.ONE);
    Expression tmpConstrExpr;
    tmpConstrExpr = tmpModel.addExpression("C1").lower(BigMath.FOUR);
    tmpConstrExpr.set(0, BigMath.ONE);
    tmpConstrExpr.set(1, BigMath.ONE);
    tmpConstrExpr.set(2, BigMath.FOUR.negate());
    tmpConstrExpr.set(3, BigMath.TWO);
    tmpConstrExpr = tmpModel.addExpression("C2").upper(BigMath.SIX);
    tmpConstrExpr.set(0, BigMath.THREE.negate());
    tmpConstrExpr.set(1, BigMath.ONE);
    tmpConstrExpr.set(2, BigMath.TWO.negate());
    tmpConstrExpr = tmpModel.addExpression("C3").level(BigMath.NEG);
    tmpConstrExpr.set(1, BigMath.ONE);
    tmpConstrExpr.set(3, BigMath.NEG);
    tmpConstrExpr = tmpModel.addExpression("C4").level(BigMath.ZERO);
    tmpConstrExpr.set(0, BigMath.ONE);
    tmpConstrExpr.set(1, BigMath.ONE);
    tmpConstrExpr.set(2, BigMath.NEG);
    // tmpModel.options.debug(ConvexSolver.class);
    final Result tmpResult = tmpModel.minimise();
    final double tmpObjFuncVal = tmpResult.getValue();
    TestUtils.assertEquals(-5.281249989, tmpObjFuncVal, new NumberContext(7, 6));
    final double[] tmpExpected = new double[] { -1.1875, 1.5625, 0.375, 2.5625 };
    for (int i = 0; i < tmpExpected.length; i++) {
        TestUtils.assertEquals(tmpExpected[i], tmpVariables[i].getValue().doubleValue(), new NumberContext(5, 4));
    }
    OptimisationConvexTests.assertDirectAndIterativeEquals(tmpModel, null);
}
Also used : Variable(org.ojalgo.optimisation.Variable) Expression(org.ojalgo.optimisation.Expression) NumberContext(org.ojalgo.type.context.NumberContext) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test)

Example 7 with ExpressionsBasedModel

use of org.ojalgo.optimisation.ExpressionsBasedModel in project ojAlgo by optimatika.

the class FinancePortfolioProblem method testP20170508.

/**
 * There were several problems (symptoms) related to this case. This test primarily tests that the
 * returned solution is actually valid. There was a problem (among others) that a subproblem from the
 * Markowitz model class (set up this way) did not produce a valid/feasible solution.
 */
@Test
public void testP20170508() {
    final BigDecimal raf = BigDecimal.valueOf(177.82794100389228);
    final ExpressionsBasedModel model = FinancePortfolioProblem.buildModel(P20170508.COVARIANCES, P20170508.RETURNS, raf);
    // model.options.debug(Optimisation.Solver.class);
    // model.options.validate = false;
    final BigDecimal w0 = BigDecimal.valueOf(0.9639383);
    final BigDecimal w1 = BigDecimal.valueOf(0.036061702);
    model.getVariable(0).setValue(w0);
    model.getVariable(1).setValue(w1);
    final Result result = model.minimise();
    if (DEBUG) {
        BasicLogger.debug(result);
    }
    TestUtils.assertStateNotLessThanOptimal(result);
    TestUtils.assertTrue(model.validate());
    TestUtils.assertTrue(model.validate(result));
    OptimisationConvexTests.assertDirectAndIterativeEquals(model);
}
Also used : ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) BigDecimal(java.math.BigDecimal) Result(org.ojalgo.optimisation.Optimisation.Result) Test(org.junit.jupiter.api.Test)

Example 8 with ExpressionsBasedModel

use of org.ojalgo.optimisation.ExpressionsBasedModel in project ojAlgo by optimatika.

the class P20150720 method buildModel3.

/**
 * Sent in 2015-09-03
 */
public static ExpressionsBasedModel buildModel3() {
    /*
         * 5 Products with associated Qty.
         */
    final Map<String, Integer> constraintsProduct = new HashMap<>();
    constraintsProduct.put("PRODUCT_1", 296_000);
    constraintsProduct.put("PRODUCT_2", 888_000);
    constraintsProduct.put("PRODUCT_3", 636_000);
    constraintsProduct.put("PRODUCT_4", 220_000);
    constraintsProduct.put("PRODUCT_5", 0);
    final double stockTotal = constraintsProduct.values().stream().mapToDouble(e -> e.doubleValue()).sum();
    // BasicLogger.debug("STOCK_TOTAL " + stockTotal);
    /*
         * Demand of each Customers
         */
    final Map<String, Integer> constraintsCustomer = new LinkedHashMap<>();
    constraintsCustomer.put("CUSTOMER_A_1", 72_000);
    constraintsCustomer.put("CUSTOMER_A_2", 44_000);
    constraintsCustomer.put("CUSTOMER_A_3", 12_000);
    constraintsCustomer.put("CUSTOMER_A_4", 36_000);
    constraintsCustomer.put("CUSTOMER_A_5", 0);
    constraintsCustomer.put("CUSTOMER_A_6", 36_000);
    constraintsCustomer.put("CUSTOMER_A_7", 12_000);
    constraintsCustomer.put("CUSTOMER_A_8", 0);
    constraintsCustomer.put("CUSTOMER_A_9", 0);
    constraintsCustomer.put("CUSTOMER_A_10", 12_000);
    constraintsCustomer.put("CUSTOMER_A_11", 12_000);
    constraintsCustomer.put("CUSTOMER_A_12", 0);
    constraintsCustomer.put("CUSTOMER_A_13", 0);
    constraintsCustomer.put("CUSTOMER_A_14", 0);
    constraintsCustomer.put("CUSTOMER_B_1", 24_000);
    constraintsCustomer.put("CUSTOMER_B_2", 12_000);
    constraintsCustomer.put("CUSTOMER_B_3", 300);
    constraintsCustomer.put("CUSTOMER_C_1", 24_000);
    constraintsCustomer.put("CUSTOMER_D_1", 20_000);
    constraintsCustomer.put("CUSTOMER_E_1", 12_000);
    constraintsCustomer.put("CUSTOMER_F_1", 12_000);
    constraintsCustomer.put("CUSTOMER_G_1", 72_000);
    constraintsCustomer.put("CUSTOMER_H_1", 28_000);
    constraintsCustomer.put("CUSTOMER_I_1", 24_000);
    constraintsCustomer.put("CUSTOMER_J_1", 16_000);
    constraintsCustomer.put("CUSTOMER_K_1", 24_000);
    constraintsCustomer.put("CUSTOMER_L_1", 56_000);
    final double demandTotal = constraintsCustomer.values().stream().mapToDouble(e -> e.doubleValue()).sum();
    // BasicLogger.debug("DEMAND_TOTAL " + demandTotal);
    /*
         * User constraint. In this case, user want to allocate 236_000 Qty on Customer_A_*
         */
    final double userConstraintQty = 236_000;
    final List<String> userConstraint = new ArrayList<>();
    userConstraint.add("CUSTOMER_A_1|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_2|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_3|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_4|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_5|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_6|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_7|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_8|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_9|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_10|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_11|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_12|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_13|PRODUCT_2");
    userConstraint.add("CUSTOMER_A_14|PRODUCT_2");
    // List of Variable Names
    final List<String> variablesName = new ArrayList<>();
    variablesName.add("CUSTOMER_A_1|PRODUCT_2");
    variablesName.add("CUSTOMER_A_2|PRODUCT_2");
    variablesName.add("CUSTOMER_A_3|PRODUCT_2");
    variablesName.add("CUSTOMER_A_4|PRODUCT_2");
    variablesName.add("CUSTOMER_A_5|PRODUCT_2");
    variablesName.add("CUSTOMER_A_6|PRODUCT_2");
    variablesName.add("CUSTOMER_A_7|PRODUCT_2");
    variablesName.add("CUSTOMER_A_8|PRODUCT_2");
    variablesName.add("CUSTOMER_A_9|PRODUCT_2");
    variablesName.add("CUSTOMER_A_10|PRODUCT_2");
    variablesName.add("CUSTOMER_A_11|PRODUCT_2");
    variablesName.add("CUSTOMER_A_12|PRODUCT_2");
    variablesName.add("CUSTOMER_A_13|PRODUCT_2");
    variablesName.add("CUSTOMER_A_14|PRODUCT_2");
    variablesName.add("CUSTOMER_B_1|PRODUCT_2");
    variablesName.add("CUSTOMER_B_1|PRODUCT_3");
    variablesName.add("CUSTOMER_B_2|PRODUCT_2");
    variablesName.add("CUSTOMER_B_2|PRODUCT_3");
    variablesName.add("CUSTOMER_B_3|PRODUCT_2");
    variablesName.add("CUSTOMER_B_3|PRODUCT_3");
    variablesName.add("CUSTOMER_C_1|PRODUCT_2");
    variablesName.add("CUSTOMER_C_1|PRODUCT_3");
    variablesName.add("CUSTOMER_D_1|PRODUCT_4");
    variablesName.add("CUSTOMER_D_1|PRODUCT_5");
    variablesName.add("CUSTOMER_D_1|PRODUCT_2");
    variablesName.add("CUSTOMER_D_1|PRODUCT_3");
    variablesName.add("CUSTOMER_E_1|PRODUCT_1");
    variablesName.add("CUSTOMER_F_1|PRODUCT_4");
    variablesName.add("CUSTOMER_F_1|PRODUCT_5");
    variablesName.add("CUSTOMER_F_1|PRODUCT_2");
    variablesName.add("CUSTOMER_F_1|PRODUCT_3");
    variablesName.add("CUSTOMER_G_1|PRODUCT_4");
    variablesName.add("CUSTOMER_G_1|PRODUCT_5");
    variablesName.add("CUSTOMER_G_1|PRODUCT_2");
    variablesName.add("CUSTOMER_G_1|PRODUCT_3");
    variablesName.add("CUSTOMER_H_1|PRODUCT_4");
    variablesName.add("CUSTOMER_H_1|PRODUCT_5");
    variablesName.add("CUSTOMER_H_1|PRODUCT_2");
    variablesName.add("CUSTOMER_H_1|PRODUCT_3");
    variablesName.add("CUSTOMER_I_1|PRODUCT_4");
    variablesName.add("CUSTOMER_I_1|PRODUCT_5");
    variablesName.add("CUSTOMER_I_1|PRODUCT_2");
    variablesName.add("CUSTOMER_I_1|PRODUCT_3");
    variablesName.add("CUSTOMER_J_1|PRODUCT_4");
    variablesName.add("CUSTOMER_J_1|PRODUCT_5");
    variablesName.add("CUSTOMER_J_1|PRODUCT_2");
    variablesName.add("CUSTOMER_J_1|PRODUCT_3");
    variablesName.add("CUSTOMER_K_1|PRODUCT_4");
    variablesName.add("CUSTOMER_K_1|PRODUCT_5");
    variablesName.add("CUSTOMER_K_1|PRODUCT_2");
    variablesName.add("CUSTOMER_K_1|PRODUCT_3");
    variablesName.add("CUSTOMER_L_1|PRODUCT_1");
    /*
         *
         */
    final ExpressionsBasedModel model = new ExpressionsBasedModel();
    final List<Variable> variables = new ArrayList<>();
    /*
         * Create All Variables:
         */
    // BasicLogger.debug("---- Variable creation ------");
    variablesName.forEach(name -> {
        final Variable var = Variable.make(name).lower(0.0).weight(1.0);
        model.addVariable(var);
        variables.add(var);
    // BasicLogger.debug(var);
    });
    // BasicLogger.debug("---- Constraints customers ------");
    // Apply Customers constraints.
    // CUSTOMER_A of Demand constraint because managed by user constraints.
    constraintsCustomer.entrySet().stream().filter(e -> !e.getKey().startsWith("CUSTOMER_A")).forEach(entry -> {
        final List<Variable> linked = variables.stream().filter(v -> v.getName().startsWith(entry.getKey())).collect(Collectors.toList());
        final Expression constraint = model.addExpression("CONSTRAINTS_" + entry.getKey());
        constraint.upper(entry.getValue().doubleValue());
        constraint.setLinearFactorsSimple(linked);
    // BasicLogger.debug(constraint);
    });
    // BasicLogger.debug("---- User Constraints Customers ------");
    // Apply Product Type constraints.
    final List<Variable> userLinked = variables.stream().filter(v -> userConstraint.contains(v.getName())).collect(Collectors.toList());
    final Expression constraintUser = model.addExpression("CONSTRAINTS_USER_CUSTOMER_A");
    constraintUser.level(userConstraintQty);
    constraintUser.setLinearFactorsSimple(userLinked);
    // BasicLogger.debug(constraintUser);
    // BasicLogger.debug("---- Constraints Product ------");
    // Apply Product Type constraints.
    constraintsProduct.entrySet().forEach(entry -> {
        final List<Variable> linked = variables.stream().filter(v -> v.getName().endsWith(entry.getKey())).collect(Collectors.toList());
        final Expression constraint = model.addExpression("CONSTRAINTS_" + entry.getKey());
        constraint.upper(entry.getValue().doubleValue());
        constraint.setLinearFactorsSimple(linked);
    // BasicLogger.debug(constraint);
    });
    /*
         * Objective expression. - Maximize the Sum of all variables - Minimize the Sum of square error vs
         * proportionality.
         */
    // BasicLogger.debug("---- Objective  ------");
    final Expression objective = model.addExpression("OBJECTIVE").weight(-1.0);
    // - Maximize the Sum of all variables
    // objective.setLinearFactorsSimple(variables);
    // BasicLogger.debug("---- Error formula ------");
    /*
         * Example: x1, x2, x3 linked variables for Customer X Error = ( (x1+x2+x3) / Target - 1 )^2 * ratio
         */
    constraintsCustomer.entrySet().forEach(entry -> {
        final List<Variable> linked = variables.stream().filter(v -> v.getName().startsWith(entry.getKey())).collect(Collectors.toList());
        if (!linked.isEmpty() && (entry.getValue().doubleValue() > 0)) {
            final double demand = entry.getValue();
            final double ratio = demand / demandTotal;
            final double target = stockTotal * ratio;
            linked.forEach(v1 -> {
                linked.forEach(v2 -> {
                    objective.set(v1, v2, ratio / (target * target));
                });
                objective.set(v1, (-2.0 * ratio) / target);
            });
        }
    });
    return model;
}
Also used : LinkedHashMap(java.util.LinkedHashMap) List(java.util.List) Result(org.ojalgo.optimisation.Optimisation.Result) Expression(org.ojalgo.optimisation.Expression) Map(java.util.Map) BasicLogger(org.ojalgo.netio.BasicLogger) BigDenseStore(org.ojalgo.matrix.store.BigDenseStore) Variable(org.ojalgo.optimisation.Variable) HashMap(java.util.HashMap) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) Variable(org.ojalgo.optimisation.Variable) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) LinkedHashMap(java.util.LinkedHashMap) Expression(org.ojalgo.optimisation.Expression)

Example 9 with ExpressionsBasedModel

use of org.ojalgo.optimisation.ExpressionsBasedModel in project ojAlgo by optimatika.

the class P20150720 method main.

/**
 * @param args the command line arguments Objective: allocate the maximum qty, and try to keep
 *        proportionality between customer.
 */
public static void main(final String[] args) {
    final ExpressionsBasedModel model = P20150720.buildModel3();
    // - Maximise -(Sum of Square error)
    model.relax(true);
    // model.options.debug(ConvexSolver.class);
    final Result result = model.maximise();
    BasicLogger.debug(result);
// BasicLogger.debug(model);
}
Also used : ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Result(org.ojalgo.optimisation.Optimisation.Result)

Example 10 with ExpressionsBasedModel

use of org.ojalgo.optimisation.ExpressionsBasedModel in project ojAlgo by optimatika.

the class P20150720 method buildModel1.

public static ExpressionsBasedModel buildModel1() {
    // List of Variable Names
    final List<String> variablesName = new ArrayList<>();
    variablesName.add("CUSTOMER_1|PRODUCT_TYPE_1");
    variablesName.add("CUSTOMER_2|PRODUCT_TYPE_1");
    variablesName.add("CUSTOMER_3|PRODUCT_TYPE_1");
    variablesName.add("CUSTOMER_3|PRODUCT_TYPE_2");
    variablesName.add("CUSTOMER_3|PRODUCT_TYPE_3");
    variablesName.add("CUSTOMER_3|PRODUCT_TYPE_4");
    variablesName.add("CUSTOMER_3|PRODUCT_TYPE_5");
    variablesName.add("CUSTOMER_4|PRODUCT_TYPE_1");
    variablesName.add("CUSTOMER_4|PRODUCT_TYPE_2");
    variablesName.add("CUSTOMER_5|PRODUCT_TYPE_2");
    variablesName.add("CUSTOMER_5|PRODUCT_TYPE_3");
    variablesName.add("CUSTOMER_5|PRODUCT_TYPE_4");
    variablesName.add("CUSTOMER_6|PRODUCT_TYPE_2");
    variablesName.add("CUSTOMER_6|PRODUCT_TYPE_3");
    variablesName.add("CUSTOMER_6|PRODUCT_TYPE_4");
    variablesName.add("CUSTOMER_6|PRODUCT_TYPE_5");
    /*
         * Constraints for each Customer = Demand of each Customer Sum of all variable linked to the customer
         * <= Demand.
         */
    final Map<String, Integer> constraintsCustomer = new LinkedHashMap<>();
    constraintsCustomer.put("CUSTOMER_1", 40_000);
    constraintsCustomer.put("CUSTOMER_2", 25_000);
    constraintsCustomer.put("CUSTOMER_3", 15_000);
    constraintsCustomer.put("CUSTOMER_4", 5_000);
    constraintsCustomer.put("CUSTOMER_5", 2_000);
    final double demandTotal = constraintsCustomer.values().stream().mapToDouble(e -> e.doubleValue()).sum();
    /*
         * Constraits for each product type = Stock per product type. Sum of all variable linked to this
         * product type <=
         */
    final Map<String, Integer> constraintsProduct = new HashMap<>();
    constraintsProduct.put("PRODUCT_TYPE_1", 50_000);
    constraintsProduct.put("PRODUCT_TYPE_2", 0);
    constraintsProduct.put("PRODUCT_TYPE_3", 0);
    constraintsProduct.put("PRODUCT_TYPE_4", 0);
    constraintsProduct.put("PRODUCT_TYPE_5", 0);
    final double stockTotal = constraintsProduct.values().stream().mapToDouble(e -> e.doubleValue()).sum();
    /*
         *
         */
    final ExpressionsBasedModel model = new ExpressionsBasedModel();
    final List<Variable> variables = new ArrayList<>();
    // Create All Variables:
    // BasicLogger.debug("---- Variable creation ------");
    variablesName.forEach(name -> {
        final Variable var = Variable.make(name).integer(true).lower(0.0);
        model.addVariable(var);
        variables.add(var);
    // BasicLogger.debug(var);
    });
    // BasicLogger.debug("---- Constraints customers ------");
    // Apply Customers constraints.
    constraintsCustomer.entrySet().forEach(entry -> {
        final List<Variable> linked = variables.stream().filter(v -> v.getName().startsWith(entry.getKey())).collect(Collectors.toList());
        final Expression constraint = model.addExpression("CONSTRAINTS_" + entry.getKey());
        constraint.lower(0.0).upper(entry.getValue().doubleValue());
        constraint.setLinearFactorsSimple(linked);
        linked.forEach(v -> v.upper(entry.getValue().doubleValue()));
    // BasicLogger.debug(constraint);
    });
    // BasicLogger.debug("---- Constraints Product ------");
    // Apply Product Type constraints.
    constraintsProduct.entrySet().forEach(entry -> {
        final List<Variable> linked = variables.stream().filter(v -> v.getName().endsWith(entry.getKey())).collect(Collectors.toList());
        final Expression constraint = model.addExpression("CONSTRAINTS_" + entry.getKey());
        constraint.lower(0.0).upper(entry.getValue().doubleValue());
        constraint.setLinearFactorsSimple(linked);
    // BasicLogger.debug(constraint);
    });
    /*
         * Objective expression. - Maximize the Sum of all variables - Minimize the Sum of square error vs
         * proportionality.
         */
    // BasicLogger.debug("---- Objective  ------");
    final Expression objective = model.addExpression("OBJECTIVE").weight(1.0);
    // - Maximize the Sum of all variables
    objective.setLinearFactorsSimple(variables);
    final List<Variable> errors = new ArrayList<>();
    // BasicLogger.debug("---- Error formula ------");
    constraintsCustomer.entrySet().forEach(entry -> {
        final List<Variable> linked = variables.stream().filter(v -> v.getName().startsWith(entry.getKey())).collect(Collectors.toList());
        if (!linked.isEmpty() && (entry.getValue().doubleValue() > 0)) {
            final Variable error = Variable.make("ERROR:" + entry.getKey());
            model.addVariable(error);
            errors.add(error);
            final Expression errorExp = model.addExpression("ERROR_EXP:" + entry.getKey()).level(stockTotal / demandTotal);
            linked.forEach(v -> errorExp.set(v, 1.0 / entry.getValue().doubleValue()));
            errorExp.set(error, -1.0);
            // - Squared of error.
            objective.set(error, error, -1.0);
        }
    });
    return model;
}
Also used : LinkedHashMap(java.util.LinkedHashMap) List(java.util.List) Result(org.ojalgo.optimisation.Optimisation.Result) Expression(org.ojalgo.optimisation.Expression) Map(java.util.Map) BasicLogger(org.ojalgo.netio.BasicLogger) BigDenseStore(org.ojalgo.matrix.store.BigDenseStore) Variable(org.ojalgo.optimisation.Variable) HashMap(java.util.HashMap) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) Variable(org.ojalgo.optimisation.Variable) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ExpressionsBasedModel(org.ojalgo.optimisation.ExpressionsBasedModel) LinkedHashMap(java.util.LinkedHashMap) Expression(org.ojalgo.optimisation.Expression)

Aggregations

ExpressionsBasedModel (org.ojalgo.optimisation.ExpressionsBasedModel)109 Test (org.junit.jupiter.api.Test)78 Variable (org.ojalgo.optimisation.Variable)59 Optimisation (org.ojalgo.optimisation.Optimisation)50 Result (org.ojalgo.optimisation.Optimisation.Result)49 Expression (org.ojalgo.optimisation.Expression)45 BigDecimal (java.math.BigDecimal)33 File (java.io.File)15 MathProgSysModel (org.ojalgo.optimisation.MathProgSysModel)15 PrimitiveDenseStore (org.ojalgo.matrix.store.PrimitiveDenseStore)13 BasicMatrix (org.ojalgo.matrix.BasicMatrix)11 NumberContext (org.ojalgo.type.context.NumberContext)10 ArrayList (java.util.ArrayList)9 BigArray (org.ojalgo.array.BigArray)6 List (java.util.List)5 Map (java.util.Map)5 Collectors (java.util.stream.Collectors)5 HashMap (java.util.HashMap)4 LinkedHashMap (java.util.LinkedHashMap)4 Disabled (org.junit.jupiter.api.Disabled)4