X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=TODO;h=4cbf01d47b2c813c7334cccdfb2afd3184f79309;hb=0115adecce0ea5d82facf4bd8d7276a9c51db7b3;hp=4dee0ae8fb2e832b96c845ebaef1e82f1eb89337;hpb=b1d06cfefc83b4db9d5592f7424d4ef67b9806e7;p=dunshire.git diff --git a/TODO b/TODO index 4dee0ae..4cbf01d 100644 --- a/TODO +++ b/TODO @@ -1,29 +1,66 @@ -1. Add doctests for simple examples like the ones in Dr. Gowda's paper - and the identity operator. +1. Make it work on a cartesian product of cones in the correct order. -2. Add unit testing for crazier things like random invertible matrices. - -3. Test that the primal/dual optimal values always agree (this implies - that we always get a solution). - -4. Run the tests with make test. - -5. Use pylint or whatever to perform static analysis. - -6. Add real docstrings everywhere. - -7. Try to eliminate the code in matrices.py. - -8. Make it work on a cartesian product of cones in the correct order. - -9. Make it work on a cartesian product of cones in the wrong order +2. Make it work on a cartesian product of cones in the wrong order (apply a perm utation before/after). -10. Add (strict) cone containment tests to sanity check e1,e2. +3. Make sure we have the dimensions of the PSD cone correct. + +4. Come up with a fast heuristic (like making nu huge and taking e1 as + our point) that finds a primal feasible point. -11. 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. +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. -12. Make sure we have the dimensions of the PSD cone correct. + 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. Use a positive tolerance when comparing floating point numbers. +13. Add a test to ensure that if we solve the same game twice, we get the + same answer back.