cvxgrp / miqp_admm

ADMM for Mixed-Integer Quadratic Programming
41 stars 19 forks source link

Missing function: norms #2

Open alexvoronov opened 6 years ago

alexvoronov commented 6 years ago

In solver_miqp_admm.m there is a call to function norms:

https://github.com/cvxgrp/miqp_admm/blob/5d9d5c8434c0bc7d4dcf3f6d2c949f4833f7f260/matlab/solver_miqp_admm.m#L83

I first thought it is a typo, but when I change it to norm, the code fails to compute an answer (Assertion failed f_admm < Inf). I guess it is some special norm? Could you add this function to the repository?

alexvoronov commented 6 years ago

It might still be a typo... When I increased maxiter to 10000, the assertion error f_admm < Inf disappeared: https://github.com/cvxgrp/miqp_admm/blob/5d9d5c8434c0bc7d4dcf3f6d2c949f4833f7f260/matlab/vehicle.m#L26

I also modified res to be 1e-4: https://github.com/cvxgrp/miqp_admm/blob/5d9d5c8434c0bc7d4dcf3f6d2c949f4833f7f260/matlab/vehicle.m#L32

Even with those modifications, I can't get the graphs to look like the ones shown in the papers at www.stanford.edu/~boyd/papers/miqp_admm.html . Is there a possibility to upload the code and parameters that give such "nice" graphs?

yputter commented 6 years ago

If you study the void inv_norms_t(csc *As, double *z) in his C code then I think that the missing function Norms() is basically an L1 norm per row, only computed slightly differently due to his defined Compressed Sparse Column matrix. In Matlab this can be easily computed by,

norms = sum(abs(A),2)
E = 1./norms

Unfortunately, using the solver_miqp_admm parameters mentioned in the paper for the Matlab syn example, then the results are not the same as mentioned in the paper. Worse, the assertion throws the error.

ghost commented 6 years ago

It is stated that the cvx package is needed to run the code and the "norms" function can be found there. Here is the link to the download page: http://cvxr.com/cvx/download/