{"action":"created","issue":{"url":"https://api.github.com/repos/cvxopt/cvxopt/issues/36","labels_url":"https://api.github.com/repos/cvxopt/cvxopt/issues/36/labels{/name}","comments_url":"https://api.github.com/repos/cvxopt/cvxopt/issues/36/comments","events_url":"https://api.github.com/repos/cvxopt/cvxopt/issues/36/events","html_url":"https://github.com/cvxopt/cvxopt/issues/36","id":69963574,"number":36,"title":"failure to solve a feasible GP","user":{"login":"whoburg","id":6042395,"avatar_url":"https://avatars.githubusercontent.com/u/6042395?v=3","gravatar_id":"","url":"https://api.github.com/users/whoburg","html_url":"https://github.com/whoburg","followers_url":"https://api.github.com/users/whoburg/followers","following_url":"https://api.github.com/users/whoburg/following{/other_user}","gists_url":"https://api.github.com/users/whoburg/gists{/gist_id}","starred_url":"https://api.github.com/users/whoburg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whoburg/subscriptions","organizations_url":"https://api.github.com/users/whoburg/orgs","repos_url":"https://api.github.com/users/whoburg/repos","events_url":"https://api.github.com/users/whoburg/events{/privacy}","received_events_url":"https://api.github.com/users/whoburg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-04-21T22:04:08Z","updated_at":"2015-08-02T18:13:36Z","closed_at":null,"body":"Hi cvxopt developers,\r\n\r\nHere is a simple geometric program:\r\n\r\n```python\r\nfrom cvxopt import matrix, log, exp, solvers\r\n\r\n# attempt to solve the following gp:\r\n# minimize    x*y\r\n# subject to  x*y >= 12\r\n\r\nF = matrix( [[1, -1.],\r\n             [1, -1.]])\r\ng = log( matrix( [1.0, 12.]) )\r\nK = [1, 1]\r\nres = solvers.gp(K, F, g)\r\n```\r\n\r\nAlthough the optimal values of `x` and `y` are not unique, this problem is feasible and has an optimal value of `12.0`, achieved by any combination of `x` and `y` satisfying `x*y = 12`.\r\n\r\nIt's clear that the matrix `F` is singular, but note that mosek solves this problem successfully. CVXOPT, on the other hand, raises a ValueError due to the rank of `F`:\r\n\r\n```python\r\n\r\n---------------------------------------------------------------------------\r\nValueError                                Traceback (most recent call last)\r\n<ipython-input-6-41ea23c15185> in <module>()\r\n      9 g = log( matrix( [1.0, 12.]) )\r\n     10 K = [1, 1]\r\n---> 11 res = solvers.gp(K, F, g)\r\n\r\nanaconda/envs/gpkit/lib/python2.7/site-packages/cvxopt-1.1.7-py2.7-macosx-10.5-x86_64.egg/cvxopt/cvxprog.pyc in gp(K, F, g, G, h, A, b)\r\n   2160         else: return f, Df, H\r\n   2161 \r\n-> 2162     return cp(Fgp, G, h, dims, A, b)\r\n\r\nanaconda/envs/gpkit/lib/python2.7/site-packages/cvxopt-1.1.7-py2.7-macosx-10.5-x86_64.egg/cvxopt/cvxprog.pyc in cp(F, G, h, dims, A, b, kktsolver, xnewcopy, xdot, xaxpy, xscal, ynewcopy, ydot, yaxpy, yscal)\r\n   1967 \r\n   1968     sol = cpl(c, F_e, G_e, h, dims, A_e, b, kktsolver_e, xnewcopy_e, \r\n-> 1969          xdot_e, xaxpy_e, xscal_e)\r\n   1970 \r\n   1971     sol['x'] = sol['x'][0]\r\n\r\nanaconda/envs/gpkit/lib/python2.7/site-packages/cvxopt-1.1.7-py2.7-macosx-10.5-x86_64.egg/cvxopt/cvxprog.pyc in cpl(c, F, G, h, dims, A, b, kktsolver, xnewcopy, xdot, xaxpy, xscal, ynewcopy, ydot, yaxpy, yscal)\r\n    786             singular_kkt_matrix = False\r\n    787             if iters == 0:\r\n--> 788                 raise ValueError(\"Rank(A) < p or \"\\\r\n    789                     \"Rank([H(x); A; Df(x); G]) < n\")\r\n    790 \r\n\r\nValueError: Rank(A) < p or Rank([H(x); A; Df(x); G]) < n\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/cvxopt/cvxopt/issues/comments/127051630","html_url":"https://github.com/cvxopt/cvxopt/issues/36#issuecomment-127051630","issue_url":"https://api.github.com/repos/cvxopt/cvxopt/issues/36","id":127051630,"user":{"login":"whoburg","id":6042395,"avatar_url":"https://avatars.githubusercontent.com/u/6042395?v=3","gravatar_id":"","url":"https://api.github.com/users/whoburg","html_url":"https://github.com/whoburg","followers_url":"https://api.github.com/users/whoburg/followers","following_url":"https://api.github.com/users/whoburg/following{/other_user}","gists_url":"https://api.github.com/users/whoburg/gists{/gist_id}","starred_url":"https://api.github.com/users/whoburg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whoburg/subscriptions","organizations_url":"https://api.github.com/users/whoburg/orgs","repos_url":"https://api.github.com/users/whoburg/repos","events_url":"https://api.github.com/users/whoburg/events{/privacy}","received_events_url":"https://api.github.com/users/whoburg/received_events","type":"User","site_admin":false},"created_at":"2015-08-02T18:13:36Z","updated_at":"2015-08-02T18:13:36Z","body":"Thanks Martin! Are there plans for the default `solvers.gp` settings to fall back on this when there are rank issues?\r\n\r\nAre there performance or other reasons not to *always* use the ldl KKT solver?"}}