1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.hipparchus.optim.nonlinear.vector.constrained;
18
19 import org.hipparchus.optim.OptimizationData;
20 import org.hipparchus.optim.nonlinear.scalar.ObjectiveFunction;
21 import org.junit.jupiter.api.Test;
22
23 import static org.junit.jupiter.api.Assertions.assertEquals;
24
25 class SQPOptimizerGMTest extends AbstractTestAbstractSQPOptimizerTest {
26
27 protected ConstraintOptimizer buildOptimizer() {
28 return new SQPOptimizerGM();
29 }
30
31 @Test
32 void testWithEqualityConstraintsOnly() {
33 final QuadraticFunction q = new QuadraticFunction(new double[][] { { 1.0, 0.0 }, { 0.0, 1.0 } },
34 new double[] { 1.0, 0.0 },
35 0.0);
36
37 final LinearEqualityConstraint eqc = new LinearEqualityConstraint(new double[][] { { 1.0, 0.0 } },
38 new double[] { 1.0 });
39
40 final ConstraintOptimizer optimizer = buildOptimizer();
41 final OptimizationData[] data = new OptimizationData[] { new ObjectiveFunction(q), eqc };
42 final LagrangeSolution solution = optimizer.optimize(data);
43
44 assertEquals(1.5, solution.getValue(), 1.e-4);
45 }
46
47 @Test
48 void testWithInequalityConstraintsOnly() {
49 final QuadraticFunction q = new QuadraticFunction(new double[][] { { 1.0, 0.0 }, { 0.0, 1.0 } },
50 new double[] { 1.0, 0.0 },
51 0.0);
52
53 final LinearInequalityConstraint eqc = new LinearInequalityConstraint(new double[][] { { 1.0, 0.0 } },
54 new double[] { 1.0 });
55
56 final ConstraintOptimizer optimizer = buildOptimizer();
57 final OptimizationData[] data = new OptimizationData[] { new ObjectiveFunction(q), eqc };
58 final LagrangeSolution solution = optimizer.optimize(data);
59
60 assertEquals(1.5, solution.getValue(), 1.e-4);
61 }
62
63 }