[Ipopt] Using a Third Party Software in IPOPT MA57 Interface

Senses,Begum bgmsenses at ufl.edu
Wed Aug 20 21:43:15 EDT 2014


I was just typing you an email about this. My code was working fine 
before therefore I did not even run make test. After I have started 
having troubles I have decided to run make test and you are right it 
should not work anyway because I am only adding -lcsparse into the 
matlabinterface makefile. I know I am having trouble using csparse 
functions because when I command out cparse functions I can run ipopt 
from Matlab without any trouble but when I add those functions my matlab 
crashes even before the first ipopt iteration. I am thinking maybe the 
problem is about an update I did in my computer (I dont remember doing 
any updates either but why would it stop working if I did not change 
anything.)

On Wed, 20 Aug 2014 18:34:53 -0700, Tony Kelman wrote:
> Are you sure you were running make test before, or were you just
> building the Matlab interface? To run standalone executables like 
> from
> make test then you'll need to add -lcsparse to other link flags too,
> not just in the MatlabInterface folder. I think there are some 
> ADDLIBS
> configure variables you can set for this.
>
>
> -----Original Message----- From: Senses,Begum
> Sent: Wednesday, August 20, 2014 6:18 PM
> To: Tony Kelman
> Cc: Ipopt
> Subject: Re: [Ipopt] Using a Third Party Software in IPOPT MA57 
> Interface
>
>
> Unfortunately It is still not working.
>
> On Wed, 20 Aug 2014 18:03:00 -0700, Tony Kelman wrote:
>> I don't think csparse uses pkg-config, but I could be wrong there.
>>
>> Try
>> @COIN_HAS_PKGCONFIG_TRUE at LIBS =
>> `PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@ @PKG_CONFIG@ --libs ipopt |
>> sed -e 's/-framework vecLib//g'` -lcsparse
>>
>> And if you're on a system that doesn't have pkg-config installed,
>> then you'll need to add -lcsparse to the line that starts with
>> @COIN_HAS_PKGCONFIG_FALSE at LIBS = ...
>>
>>
>>
>> -----Original Message----- From: Senses,Begum
>> Sent: Wednesday, August 20, 2014 5:59 PM
>> To: Tony Kelman
>> Cc: Ipopt
>> Subject: Re: [Ipopt] Using a Third Party Software in IPOPT MA57 
>> Interface
>>
>>
>> Hi Tony,
>>
>> I downloaded Ipopt again did all of these steps again and it still 
>> does
>> not work. I have also tried adding the changes to the Makefile.in 
>> file.
>>
>> @COIN_HAS_PKGCONFIG_TRUE at LIBS = 
>> `PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@
>> @PKG_CONFIG@ --libs ipopt | sed -e 's/-framework vecLib//g'` I 
>> changed
>> this line with
>>
>> @COIN_HAS_PKGCONFIG_TRUE at LIBS = 
>> `PKG_CONFIG_PATH=@COIN_PKG_CONFIG_PATH@
>> @PKG_CONFIG@ --libs ipopt csparse | sed -e 's/-framework vecLib//g'`
>>
>> and then ran the configure script again but it is still not working.
>>
>>
>> On Wed, 20 Aug 2014 17:45:49 -0700, Tony Kelman wrote:
>>> Begum,
>>>
>>> Sounds like you reran configure since you made that change. 
>>> Configure
>>> auto-generates the Makefiles from Makefile.in, overwriting any 
>>> changes
>>> you made. Try making the change where you add -lcsparse to LIBS in
>>> Makefile.in instead, then run configure and it should work again.
>>>
>>> -Tony
>>>
>>>
>>> -----Original Message----- From: Senses,Begum
>>> Sent: Wednesday, August 20, 2014 5:36 PM
>>> To: Ipopt
>>> Subject: [Ipopt] Using a Third Party Software in IPOPT MA57 
>>> Interface
>>>
>>>
>>> Hello everyone,
>>>
>>> I am trying to use a Third party software in
>>>
>>>
>>> 
>>> ../CoinIpopt/Ipopt/src/Algorithm/LinearSolvers/IpMa57SolverInterface.cpp.
>>> This third party software is called CSPARSE which is written by Tim
>>> Davis. I was able to use this software in this file before but it
>>> stopped working. Obviously I have changed something somewhere but I
>>> could not find it maybe one of you can think of anything.
>>>
>>> These are the steps that I am performing right now.
>>>
>>> 1) Compile the third party software and obtain libcsparse.a 
>>> library.
>>> 2) Copy this library to CoinIpopt/lib folder.
>>> 3) Copy the main .h file of CSPARSE (cs.h) to the same folder with
>>> IpMa57SolverInterface.cpp file which is in
>>> CoinIpopt/Ipopt/src/Algorithm/LinearSolvers folder.
>>> 4) Modify the makefile in 
>>> CoinIpopt/Ipopt/contrib/MatlabInterface/src .
>>> I used to have LIBS = -L/CoinIpopt/lib -lipopt . I added -lcsparse 
>>> to
>>> this line.
>>> 5) The last step is adding
>>>
>>> extern "C"
>>> {
>>>
>>> #include "cs.h"
>>>
>>> }
>>>
>>> command at the beginning of the IpMa57TSolverInterface.cpp file.
>>>
>>> As I mentioned before these steps used to work fine but now when I 
>>> run
>>> make test it gives me the following error
>>>
>>> Undefined symbols for architecture x86_64:
>>>   "_cs_amd", referenced from:
>>>       Ipopt::Ma57TSolverInterface::SymbolicFactorization(int 
>>> const*,
>>> int const*) in libipopt.a(IpMa57TSolverInterface.o)
>>>
>>> cs_amd is the function that I am trying to use from CSPARSE 
>>> software.
>>>
>>> Thank you.

-- 
Senses, Begum


More information about the Ipopt mailing list