1 1. Make it work on a cartesian product of cones in the correct order.
3 2. Make it work on a cartesian product of cones in the wrong order
4 (apply a perm utation before/after).
6 3. Make sure we have the dimensions of the PSD cone correct.
8 4. Come up with a fast heuristic (like making nu huge and taking e1 as
9 our point) that finds a primal feasible point.
11 5. Fix the solve failures that we get in the translation tests. For example,
13 ERROR: test_translation_orthant (test.symmetric_linear_game_test.
14 SymmetricLinearGameTest)
15 ----------------------------------------------------------------------
16 Traceback (most recent call last):
17 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
18 line 374, in test_translation_orthant
19 self.assert_translation_works(L, K, e1, e2)
20 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
21 line 361, in assert_translation_works
22 value2 = game2.solution().game_value()
23 File "/home/mjo/src/dunshire/dunshire/games.py", line 458, in solution
24 raise GameUnsolvableException(self, soln_dict)
25 dunshire.errors.GameUnsolvableException: Solution failed with result
27 The linear game (L, K, e1, e2) where
28 L = [352.0763359 267.0812248 300.8004888 307.8135853]
29 [429.8303135 324.8322824 361.6866231 372.1748983]
30 [390.6592961 286.8039007 320.7409227 330.1854235]
31 [316.0538913 247.7440818 276.9063990 274.9871772],
32 K = Nonnegative orthant in the real 4-space,
42 dual infeasibility: 0.053819211766446585
43 dual objective: -5.369636805607942
44 dual slack: 2.105806354638527e-17
45 gap: 2.6823510532777825e-16
47 primal infeasibility: 4.71536776301359e-15
48 primal objective: -5.3799616179161
49 primal slack: 1.0328930392495263e-17
50 relative gap: 4.985818196816016e-17
51 residual as dual infeasibility certificate: 0.18587493201993227
52 residual as primal infeasibility certificate: None
82 7. Figure out why this happens, too:
84 FAIL: test_scaling_icecream (test.symmetric_linear_game_test
85 .SymmetricLinearGameTest)
86 ----------------------------------------------------------------------
87 Traceback (most recent call last):
88 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
89 line 336, in test_scaling_icecream
90 self.assert_scaling_works(L, K, e1, e2)
91 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
92 line 318, in assert_scaling_works
93 self.assert_within_tol(alpha*value1, value2)
94 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
95 line 254, in assert_within_tol
96 self.assertTrue(abs(first - second) < options.ABS_TOL)
97 AssertionError: False is not true
100 FAIL: test_translation_orthant (test.symmetric_linear_game_test
101 SymmetricLinearGameTest)
102 ----------------------------------------------------------------------
103 Traceback (most recent call last):
104 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
105 line 374, in test_translation_orthant
106 self.assert_translation_works(L, K, e1, e2)
107 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
108 line 366, in assert_translation_works
109 self.assert_within_tol(value2, inner_product(M*x_bar, y_bar))
110 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
111 line 254, in assert_within_tol
112 self.assertTrue(abs(first - second) < options.ABS_TOL)
113 AssertionError: False is not true
116 12. Investigate this test failure too. It looks like it was really
117 close to being solved, but we would have needed a fudge factor
118 of three instead of two.
120 ERROR: test_positive_operator_value (test.symmetric_linear_game_test
121 .SymmetricLinearGameTest)
122 ----------------------------------------------------------------------
123 Traceback (most recent call last):
124 File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
125 line 550, in test_positive_operator_value
126 self.assertTrue(G.solution().game_value() >= -options.ABS_TOL)
127 File "/home/mjo/src/dunshire/dunshire/games.py", line 515, in solution
128 raise GameUnsolvableException(self, soln_dict)
129 dunshire.errors.GameUnsolvableException: Solution failed with result
131 The linear game (L, K, e1, e2) where
132 L = [8.0814704 3.5584693]
133 [3.9986814 9.3381562],
134 K = Nonnegative orthant in the real 2-space,
139 Condition((L, K, e1, e2)) = 41.093597.
141 dual infeasibility: 2.368640021750079e-06
142 dual objective: -7.867137172157051
143 dual slack: 1.1314089173606103e-07
144 gap: 1.1404410161224882e-06
146 primal infeasibility: 1.379959981010593e-07
147 primal objective: -7.867137449574777
148 primal slack: 1.0550559882036034e-08
149 relative gap: 1.4496264027827932e-07
150 residual as dual infeasibility certificate: 0.12711103707156543
151 residual as primal infeasibility certificate: None
170 13. Add a test to ensure that if we solve the same game twice, we get the