payload: {"action":"created","issue":{"url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/issues/150","repository_url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl","labels_url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/issues/150/labels{/name}","comments_url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/issues/150/comments","events_url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/issues/150/events","html_url":"https://github.com/lanl-ansi/PowerModelsDistribution.jl/pull/150","id":463105606,"node_id":"MDExOlB1bGxSZXF1ZXN0MjkzNjUwMDc1","number":150,"title":"matrix variables","user":{"login":"sanderclaeys","id":2726873,"node_id":"MDQ6VXNlcjI3MjY4NzM=","avatar_url":"https://avatars1.githubusercontent.com/u/2726873?v=4","gravatar_id":"","url":"https://api.github.com/users/sanderclaeys","html_url":"https://github.com/sanderclaeys","followers_url":"https://api.github.com/users/sanderclaeys/followers","following_url":"https://api.github.com/users/sanderclaeys/following{/other_user}","gists_url":"https://api.github.com/users/sanderclaeys/gists{/gist_id}","starred_url":"https://api.github.com/users/sanderclaeys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sanderclaeys/subscriptions","organizations_url":"https://api.github.com/users/sanderclaeys/orgs","repos_url":"https://api.github.com/users/sanderclaeys/repos","events_url":"https://api.github.com/users/sanderclaeys/events{/privacy}","received_events_url":"https://api.github.com/users/sanderclaeys/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2019-07-02T08:57:27Z","updated_at":"2019-07-02T10:38:26Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/pulls/150","html_url":"https://github.com/lanl-ansi/PowerModelsDistribution.jl/pull/150","diff_url":"https://github.com/lanl-ansi/PowerModelsDistribution.jl/pull/150.diff","patch_url":"https://github.com/lanl-ansi/PowerModelsDistribution.jl/pull/150.patch"},"body":"This is the first major part of the matrix update; I decided to open a PR already for discussion, the matrix version of KCL will be added later this week. I did a first iteration with Frederik already, looking forward to your input.\r\n\r\n`variable_mx.jl` contains the newly added utility matrix variable functions. These depend only on JuMP, and not on PM/PMD. I documented the file heavily. Also, I attached [here](https://github.com/lanl-ansi/PowerModelsDistribution.jl/files/3349164/mx_demo.txt) a script that demonstrates all the accepted variations of creating matrix variables:\r\n- real, symmetric (real), skewsymmetric (real)\r\n- complex, hermitian\r\n- upper and lower bound, symmetrical bounds, no bounds, special bound for hermitian\r\n\r\nI updated the BF code to use these matrix variable functions instead of explicitly creating them in place each time they are needed. \r\n\r\nFor Mosek with default settings, this did not affect the numerical results. For SCS however, I had to additionally pass the argument `eps=1e-6` to the solver for the unit tests to keep on working.\r\n"},"comment":{"url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/issues/comments/507620463","html_url":"https://github.com/lanl-ansi/PowerModelsDistribution.jl/pull/150#issuecomment-507620463","issue_url":"https://api.github.com/repos/lanl-ansi/PowerModelsDistribution.jl/issues/150","id":507620463,"node_id":"MDEyOklzc3VlQ29tbWVudDUwNzYyMDQ2Mw==","user":{"login":"sanderclaeys","id":2726873,"node_id":"MDQ6VXNlcjI3MjY4NzM=","avatar_url":"https://avatars1.githubusercontent.com/u/2726873?v=4","gravatar_id":"","url":"https://api.github.com/users/sanderclaeys","html_url":"https://github.com/sanderclaeys","followers_url":"https://api.github.com/users/sanderclaeys/followers","following_url":"https://api.github.com/users/sanderclaeys/following{/other_user}","gists_url":"https://api.github.com/users/sanderclaeys/gists{/gist_id}","starred_url":"https://api.github.com/users/sanderclaeys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sanderclaeys/subscriptions","organizations_url":"https://api.github.com/users/sanderclaeys/orgs","repos_url":"https://api.github.com/users/sanderclaeys/repos","events_url":"https://api.github.com/users/sanderclaeys/events{/privacy}","received_events_url":"https://api.github.com/users/sanderclaeys/received_events","type":"User","site_admin":false},"created_at":"2019-07-02T10:38:26Z","updated_at":"2019-07-02T10:38:26Z","author_association":"CONTRIBUTOR","body":"Part of the pain is caused by the current naming scheme. For example, take the voltage at network 0, bus 1, element 2 (conductor): \r\n`0_2_vm[1]`.\r\n\r\nNow take the lifted variable Wre, at network 0, bus 1, element [2,3]. By creating the matrices element per element, I managed to get printed names which follow the same convention as before:\r\n`0_23_Wre[1]`\r\n\r\nJuMP also has a way to create symmetric matrix variables, through\r\n`JuMP.@variable(model, [c in 1:N, d in 1:N], PSD)`\r\n\r\nThis would create names of the form `W[c,d]`, incompatible with the current naming scheme. So either we stick to the workaround I created or we should change the naming scheme altogether."}}
other: {"actor":{"display_login":"sanderclaeys"}}