]> gitweb.michael.orlitzky.com - dunshire.git/blobdiff - TODO
Remove the "unknown" solution TODO, our new heuristic seems to always work.
[dunshire.git] / TODO
diff --git a/TODO b/TODO
index 25beb4a3d326b8e9ef058c6df97b0c3a41083e50..6ba8caa46d665291faaa07ad4668ee1906c2e1d9 100644 (file)
--- a/TODO
+++ b/TODO
-1. Add unit testing for crazier things like random invertible matrices.
+1. Make it work on a cartesian product of cones in the correct order.
 
-2. Add real docstrings everywhere.
+2. Make it work on a cartesian product of cones in the wrong order
+   (apply a perm utation before/after).
 
-3. Try to eliminate the code in matrices.py.
+3. Make sure we have the dimensions of the PSD cone correct.
 
-4. Make it work on a cartesian product of cones in the correct order.
+4. Come up with a fast heuristic (like making nu huge and taking e1 as
+   our point) that finds a primal feasible point.
 
-5. Make it work on a cartesian product of cones in the wrong order
-   (apply a perm utation before/after).
+7. Figure out why this happens, too:
 
-6. Rename all of my variables so that they don't conflict with CVXOPT.
-   Maybe x -> xi and y -> gamma in my paper, if that works out.
+  FAIL: test_scaling_icecream (test.symmetric_linear_game_test
+                               .SymmetricLinearGameTest)
+  ----------------------------------------------------------------------
+  Traceback (most recent call last):
+    File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+    line 336, in test_scaling_icecream
+      self.assert_scaling_works(L, K, e1, e2)
+    File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+    line 318, in assert_scaling_works
+      self.assert_within_tol(alpha*value1, value2)
+    File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+    line 254, in assert_within_tol
+      self.assertTrue(abs(first - second) < options.ABS_TOL)
+  AssertionError: False is not true
 
-7. Make sure we have the dimensions of the PSD cone correct.
 
-8. Use a positive tolerance when comparing floating point numbers.
+  FAIL: test_translation_orthant (test.symmetric_linear_game_test
+                                  SymmetricLinearGameTest)
+  ----------------------------------------------------------------------
+  Traceback (most recent call last):
+    File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+    line 374, in test_translation_orthant
+      self.assert_translation_works(L, K, e1, e2)
+    File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+    line 366, in assert_translation_works
+      self.assert_within_tol(value2, inner_product(M*x_bar, y_bar))
+    File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+    line 254, in assert_within_tol
+      self.assertTrue(abs(first - second) < options.ABS_TOL)
+  AssertionError: False is not true
 
-9. Come up with a fast heuristic (like making nu huge and taking e1 as
-   our point) that finds a primal feasible point.
+
+12. Investigate this test failure too. It looks like it was really
+    close to being solved, but we would have needed a fudge factor
+    of three instead of two.
+
+    ERROR: test_positive_operator_value (test.symmetric_linear_game_test
+                                         .SymmetricLinearGameTest)
+    ----------------------------------------------------------------------
+    Traceback (most recent call last):
+      File "/home/mjo/src/dunshire/test/symmetric_linear_game_test.py",
+      line 550, in test_positive_operator_value
+       self.assertTrue(G.solution().game_value() >= -options.ABS_TOL)
+      File "/home/mjo/src/dunshire/dunshire/games.py", line 515, in solution
+       raise GameUnsolvableException(self, soln_dict)
+    dunshire.errors.GameUnsolvableException: Solution failed with result
+    "unknown."
+    The linear game (L, K, e1, e2) where
+      L = [8.0814704 3.5584693]
+         [3.9986814 9.3381562],
+      K = Nonnegative orthant in the real 2-space,
+      e1 = [1.3288182]
+          [0.7458942],
+      e2 = [0.6814326]
+          [3.3799082],
+      Condition((L, K, e1, e2)) = 41.093597.
+    CVXOPT returned:
+      dual infeasibility: 2.368640021750079e-06
+      dual objective: -7.867137172157051
+      dual slack: 1.1314089173606103e-07
+      gap: 1.1404410161224882e-06
+      iterations: 6
+      primal infeasibility: 1.379959981010593e-07
+      primal objective: -7.867137449574777
+      primal slack: 1.0550559882036034e-08
+      relative gap: 1.4496264027827932e-07
+      residual as dual infeasibility certificate: 0.12711103707156543
+      residual as primal infeasibility certificate: None
+      s:
+       [1.4674968]
+       [0.0000000]
+       [1.4055364]
+       [0.0000000]
+      status: unknown
+      x:
+       [ 7.8671374]
+       [ 1.4674968]
+       [-0.0000000]
+      y:
+       [7.8671372]
+      z:
+       [ 0.0000001]
+       [14.0707905]
+       [ 0.0000002]
+       [ 1.3406728]
+
+13. Add a test to ensure that if we solve the same game twice, we get the
+    same answer back.