Evaluate a lookup table in a SX variable

689 views
Skip to first unread message

Alic Kaufmann

unread,
Jan 15, 2018, 10:16:13 AM1/15/18
to CasADi
Hi,

I am trying to use lookup tables with SX variables.  I boiled down the problem to the simplest example. Previously I did something like :
import casadi.*

u
= MX.sym('u',1);

xgrid
= 1 : 6 ;
V
= [-1, -1, -2, -3, 0, 2];
lut
= casadi.interpolant('LUT', 'bspline', {xgrid} ,V );

foo
= lut(u);

and this worked just fine, I get an MX expression

foo =

LUT
(u){0}




But I want to change all my variable to SX variables since I hear this is faster. But when I do :

import casadi.*

u
= MX.sym('u',1);

xgrid
= 1 : 6 ;
V
= [-1, -1, -2, -3, 0, 2];
lut
= casadi.interpolant('LUT', 'bspline', {xgrid} ,V );

foo
= lut(u);


I get the error

Error using casadi.Function/call (line 727)
.../casadi/core/function_internal.cpp:1368: 'eval_sx' not defined for BSplineInterpolant

Error in casadi.Function/paren (line 1436)
        res = self.call(varargin);

Error in casadi.Function/subsref (line 1417)
        [varargout{1:nargout}]= paren(self, s.subs{:});

So what would be the way to do this?

Best,

Alic

Alic Kaufmann

unread,
Jan 15, 2018, 10:23:27 AM1/15/18
to CasADi

Sorry, I made a mistake. In the second code it should be
u = SX.sym('u',1);


Joris Gillis

unread,
Jan 16, 2018, 6:00:13 AM1/16/18
to CasADi
Dear Alic,

We do not support lookup tables in SX graphs at present, sorry.

Best regards,
  Joris Gillis

Alic Kaufmann

unread,
Feb 12, 2018, 7:05:16 AM2/12/18
to CasADi
Hi Joris,

Would there be a workaround? if I wan't to evaluate my lookup table in an SX variable?

Best,

Alic

Greg Horn

unread,
Feb 12, 2018, 10:54:04 PM2/12/18
to Alic Kaufmann, CasADi
This is a common misunderstanding. SX are so fast precisely because they don't support things with a lot of overhead like external function calls including lookup tables.

To get the best of both worlds you have to embed SX expressions in Functions and chain those Functions together with things like lookup tables using MX function calls.

--
Sent from CasADi's user forum at http://forum.casadi.org.
---
You received this message because you are subscribed to the Google Groups "CasADi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to casadi-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/casadi-users/522d604c-4d09-40be-a51e-3bc9da765af2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Noel Cont

unread,
Jul 2, 2018, 6:13:11 AM7/2/18
to CasADi
Hello,

Has anyone solved this problem? I'm faced with the same problem, but I can't find a solution. Maybe someone could help.

Many thanks !

Joris Gillis

unread,
Jul 2, 2018, 7:28:54 AM7/2/18
to CasADi
Hi,

Incidentally, I'm working on experimental code to allow lookup tables (in fact any type of function) in an SX graph this week.
By the end of the week, there should be a branch available for try-out.
It's uncertain if this code will end up in main CasADi though..

Best,
  Joris

Noel Cont

unread,
Jul 3, 2018, 5:21:52 AM7/3/18
to CasADi
That sounds great!

I solved the problem by using MX variables. And brought them together using the casadi function(). 
Can you explain to me why this works with an MX variable? And if this can cause problems for my later nlp? 

Thanks 
Noel

Joris Gillis

unread,
Jul 9, 2018, 11:12:20 AM7/9/18
to CasADi

Noel Cont

unread,
Jul 11, 2018, 6:13:36 AM7/11/18
to CasADi
>> import casadi.*
Theta = SX.sym('Theta');
Invalid MEX-file 'C:\_data\casadi_matlab_Exp\casadiMEX.mexw64':
Missing symbol 'OpenProcess' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-Synch-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'FileTimeToSystemTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-File-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'GetNamedPipeAttribute' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-NamedPipe-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'SystemTimeToTzSpecificLocalTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'TzSpecificLocalTimeToSystemTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'GetDynamicTimeZoneInformation' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'GetTimeZoneInformationForYear' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'SystemTimeToFileTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'GetTimeZoneInformation' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\KERNEL32.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'FileTimeToSystemTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-File-L1-1-0.dll' required by
'C:\windows\system32\msvcrt.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'GetTimeZoneInformation' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\msvcrt.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'SystemTimeToFileTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\msvcrt.dll->C:\_data\casadi_matlab_Exp\libcasadi.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
Missing symbol 'FileTimeToSystemTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-File-L1-1-0.dll' required by
'C:\windows\system32\RPCRT4.dll->C:\windows\system32\ADVAPI32.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\mwboost_filesystem-vc140-mt-1_56.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwi18n.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'OpenProcess' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-Synch-L1-1-0.dll' required by
'C:\windows\system32\dbghelp.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwfl.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libut.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'LoadStringA' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-LibraryLoader-L1-1-0.dll' required by
'C:\windows\system32\WS2_32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\mwboost_log-vc140-mt-1_56.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmwfl.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libut.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'LoadStringW' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-LibraryLoader-L1-1-0.dll' required by
'C:\windows\system32\WS2_32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\mwboost_log-vc140-mt-1_56.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmwfl.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libut.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'LoadStringW' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-LibraryLoader-L1-1-0.dll' required by
'C:\windows\system32\ole32.dll->C:\windows\system32\OLEAUT32.dll->C:\windows\system32\SETUPAPI.dll->C:\windows\system32\POWRPROF.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmwfl.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libut.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'OpenProcess' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-Synch-L1-1-0.dll' required by
'C:\windows\system32\ole32.dll->C:\windows\system32\OLEAUT32.dll->C:\windows\system32\SETUPAPI.dll->C:\windows\system32\POWRPROF.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmwfl.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libut.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'SystemTimeToFileTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\ole32.dll->C:\windows\system32\OLEAUT32.dll->C:\windows\system32\SETUPAPI.dll->C:\windows\system32\POWRPROF.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmwfl.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libut.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmx.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'OpenProcess' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-Synch-L1-1-0.dll' required by
'C:\windows\system32\MSWSOCK.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwmst.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\mvm.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwservices.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmex.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'FileTimeToSystemTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-File-L1-1-0.dll' required by
'C:\windows\system32\SHELL32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwnativedialogs.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\settingscore.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwservices.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmex.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'LoadStringW' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-LibraryLoader-L1-1-0.dll' required by
'C:\windows\system32\SHELL32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwnativedialogs.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\settingscore.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwservices.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmex.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'LoadStringA' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-LibraryLoader-L1-1-0.dll' required by
'C:\windows\system32\SHELL32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwnativedialogs.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\settingscore.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwservices.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmex.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'OpenProcess' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-Synch-L1-1-0.dll' required by
'C:\windows\system32\SHELL32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwnativedialogs.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\settingscore.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwservices.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmex.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'

Missing symbol 'SystemTimeToFileTime' in 'C:\Program Files\MATLAB\R2018a/bin/win64\API-MS-Win-Core-SysInfo-L1-1-0.dll' required by
'C:\windows\system32\SHELL32.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwnativedialogs.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\settingscore.dll->C:\Program Files\MATLAB\R2018a/bin/win64\libmwservices.dll->C:\Program
Files\MATLAB\R2018a/bin/win64\libmex.dll->C:\_data\casadi_matlab_Exp\casadiMEX.mexw64'
.

Error in casadi.GenSX.sym (line 432)
     
[varargout{1:nargout}] = casadiMEX(331, varargin{:});


Hey Joel,

i tried your code (casadi-windows-matlabR2016a-c11d8b3.zip)  in Matlab R2018 and got the error above.With the master branch, I don't get the error. Thank you for your support!

Cheers
Noel
Reply all
Reply to author
Forward
0 new messages