-
Notifications
You must be signed in to change notification settings - Fork 9
Description
I should preface this by saying that I'm a novice when it comes to optimization in Julia and JuMP.
I ran into some problems when using CSDP to solve a set of LMIs related H-infinity synthesis in robust control. To illustrate the problem, I have created a short script (see CSDP_issue_malloc.txt) which solves the same problem over and over again in a for-loop. It generates the correct solution repeatedly, until it eventually fails due to one of two reasons: a malloc issue (see printout 1), or not being able to find a feasible solution (see printout 2).
Typically these failures occur after 50-100 correctly solved problems. I have solved the same problem using CVX, as well as the and the interior-point methods by Nesterov used in Matlab's LMI solvers, in both cases yielding a gain of gamma=1.45. So the CSDP solver seems to work nicely, apart from the two sporadically occurring errors. I have run the same experiments with using SCS in Julia, and this works wihthout malloc errors, so the problem seems to be related to CSDP.jl and not JuMP.jl.
The first error might be related to your issue #2 , with the malloc leading to a segfault in my case, but I know too little about the internals of your CSDP-wrapper to accurately debug it. I thought I'd alert you to this issue, and would be thankful for any ideas on what may be causing the problems.
printout 1
~~~ Run 71 ~~~
CSDP 6.2.0
Iter: 0 Ap: 0.00e+00 Pobj: -5.0377634e+02 Ad: 0.00e+00 Dobj: 0.0000000e+00
Iter: 1 Ap: 1.00e+00 Pobj: -5.9563600e+02 Ad: 7.35e-01 Dobj: -2.4754075e-01
Iter: 2 Ap: 1.00e+00 Pobj: -5.9529382e+02 Ad: 9.48e-01 Dobj: 2.6619412e-03
julia(35362,0x7fff75c76000) malloc: *** error for object 0x7fdbbad12008:
incorrect checksum for freed object - object was probably modified after being
freed. *** set a breakpoint in malloc_error_break to debug
signal (6): Abort trap: 6
in expression starting at no file:0
__pthread_kill at /usr/lib/system/libsystem_kernel.dylib (unknown line)
Allocations: 98455385 (Pool: 98433939; Big: 21446); GC: 291
Abort trap: 6
printout 2
~~~ Run 49 ~~~
CSDP 6.2.0
Iter: 0 Ap: 0.00e+00 Pobj: -5.0377634e+02 Ad: 0.00e+00 Dobj: 0.0000000e+00
Iter: 1 Ap: 1.00e+00 Pobj: -5.9695547e+02 Ad: 7.35e-01 Dobj: -8.6584995e-01
.
.
.
Iter: 50 Ap: 7.86e-09 Pobj: -1.1346790e+18 Ad: 2.32e-08 Dobj: -8.7559876e+03
Stuck at edge of primal feasibility, giving up.
Test Failed at REPL[10]:6
Expression: abs(G - γ) <= 0.001
Evaluated: 595.502673809033 <= 0.001
ERROR: There was an error during testing