13-09-2011

15:50 -> Added to the file hessianAN.m the line
"Tj=kron(T,ones(1,ng));"
at line 109.
(this is needed if: variable final time; number of path constraints different from number of the dynamic equations)

17-08-2011

15:50 -> Uploaded this guide to compile ipopt under Windows 7 64bit with a 32 bit targer MATLAB interface.
Please contact me if you have any questions.

15:50 -> Using ICLOCS with parameters
Modified line 50 and 52 of gradientConst.m:
"dLp=data.map.W*(tf-t0)*dL.dp(:,i);"
-> "dLp=data.map.W*(tf-t0)*dL.dp(:,i-nt);"
"JaL{i}=dL.dp(:,i-nt);"
-> "JaL{i}=dL.dp(:,i-nt);"

11-08-2011

15:50 -> Using ICLOCS with parameters
Modified line 101 of jacConstz.m:
"gz=gz+sparse(1:M*ng,idx(:,i),reshape(dg.dp{i}',M*ng,1),M*ng,nz);"
-> "gz=gz+sparse(1:M*ng,idx(:,i),reshape(dg.dp{i-1}',M*ng,1),M*ng,nz);"

05-08-2011

13:42 -> The OrbitRising example doesn't work, have to comment the cvodes settings.
Modified line 273 of hessianAN.m:
"bzz=bzz+sparse(idx(:,i),idx(:,j),Hb{j,i}'.*adjoint,nz,nz);"
-> "bzz=bzz+sparse(idx(:,i),idx(:,j),Hb{j,i}'.*adjoint',nz,nz);"

19-07-2011

22:08 -> In ICLOCS it seems that if one defines the x0 then it cannot be chnged as an optimisation variable.
It would be useful to have x0 as a variable and at the same time beibg able to provide a guess value for x0.
To do so I changed the line 116 in transcribeOCP: "cx0=1;" -> "cx0=0;"

18:17 -> Modified line 290 of hessianAN.m
"bt=(bpp-bp2+bo-bp1).*adjoint'/e2;" -> "bt=(bpp-bp2+bo-bp1).*adjoint/e2;"

18:12 -> Modified line 94 of jacConstz.m
"idx=data.FD.index.f;nfd=size(idx,2);" -> "idx=data.FD.index.g;nfd=size(idx,2);"

18-07-2011

20:15 -> Had to modify 2 lines of a file when including boundary constraints

29-06-2011

12:25 -> Change line 94 of jacConstz.m from
idx=data.FD.index.f;nfd=size(idx,2);
to
idx=data.FD.index.g;nfd=size(idx,2); %from "index.f" to "index.g"

27-06-2011

15:47 -> Bycicle problem started.

14:22 -> The optimisation works worse suplying the analytic formulation of the hessian of the path constraints Hg. (why?)

13:30 -> If an H element (cell) is empty, the correspoding value is calculated numerically:
Yet to understand whether using a "central" or "forward" method.

13:27 -> Just noticed that the field .flag does not appear to be used when choosing between the numeric or analytic derivation of the Hessian.
The hessianAN function only checks whether the H cells are empty.

13:10 -> It works after modifying the line:
adjoint=data.lambda(n*M+M*ng+(~~nb):n*M+M*ng+nb);
to
adjoint=data.lambda(n*M+M*ng+(~~nb):n*M+M*ng+nb)'; % transpose needed

12:02 -> The numeric evaluation of the hessian in hessianAN returns an error, this maybe
has to do with the problem experienced before in hessianCD -> see the differences in hessianCD1

22-06-2011

16:33 -> Received and tested the compiled MATLAB librarier from Rodrigo.
For licencing reasons the libraries do not include the linear solver ma57 and use MUMPS instead (Ipopt should work faster with m57).
The BangBang ICLOCS example works.

Nth attempt to compile the MATLAB interface of Ipopt under Windows 7 (64 bit)

17-06-2011

17:31 -> have a look at http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII4.0/cygwin.htm

19:18 -> completely useless... now looking at http://web.mit.edu/ipopt_v3.8/doc/documentation.pdf (with some godly help form MastroTux)
the MUMPS package requires gfortran; it has to be added in the cygwin setup

19:38 -> got the fixed version of the make 3.81 and replaced in the bin folder of cygwin; seems to work better
or (after MastroTux's suggestion) use the mingw-make (maybe needs to be installed at the cygwin setup)

22:30 -> found the mailing list topic http://list.coin-or.org/pipermail/ipopt/2010-November/002203.html
looks promising... following the instructions http://www.mingw.org/wiki/msys
might not need to download MSYS Core 1.0.11 as it is already included in MSYS 1.0.11
using the Ipopt-3.9.3 with all the thirdparty packages obtained with wget
in the Ipopt-3.9.3 directory use:
./configure -C --enable-doscompile --enable-static --disable-shared > ADD_CXXFLAGS="-fexceptions" ADD_CFLAGS="-fexceptions" ADD_FFLAGS="-fexceptions">

22:38 -> configure was successful... running make...
... which miserably failed...

18-06-2011

01:11 -> Downloaded and installed all the CUR packages of the latest version of cygwin;
Downloaded (again) the latest version of Ipopt (3.9.3);
Downloaded all the ThirdParty software using the scripts get.*, plus ma27ad.f and mc19ad.f in the HSL folder;
Substituted the make.exe with a patched one, moved the folder ipopt-3.9.3 to /home and created /home/ipopt/install (mkdir -p ipopt/install)
Run: ./configure -C --enable-doscompile --enable-static --disable-shared ADD_CXXFLAGS="-fexceptions" ADD_CFLAGS="-fexceptions" ADD_FFLAGS="-fexceptions" --prefix=$HOME/ipopt/install
"make" "make test" "make install" ...
... and amazingly everything worked fine

08:43 -> The MATLAB interface compilation has been a nightmare and eventually...
Linux has won...

09:43 -> The ipopt.mexglx has been successfully compiled with Ubuntu 10.04 following the instructions on
http://www.coin-or.org/Ipopt/documentation/documentation.html and https://projects.coin-or.org/Ipopt/wiki/MatlabInterface

21-06-2011

12:40 -> Trying to compile using MinGW and MSYS:
followed the installation instruction at http://www.mingw.org/wiki/MSYS
(got a strange error about missing make)
installing wget wget following the instructions here

13:06 -> the installation of wget doesn't work.

13:16 -> just copied the wget.exe in the bin directory and it works.
Now trying to configure Ipopt with '../configure -C --enable-doscompile --enable-static --disable-shared ADD_CXXFLAGS="-fexceptions" ADD_CFLAGS="-fexceptions" ADD_FFLAGS="-fexceptions"'

13:47 -> configure succesful ... make launched.

13:32 -> Starting the definition of the optimisation problem:
constant speed sleigh with nonholonomic no-slip constraint, constant speed and elliptical track.

20:29 -> To avoid an error reporting inconsistent matrix dimensions using IPOPT
I had do modify the line 113 of the file directCollocation.m:
"b(x0,xf,u0,uf,p,tf,vdat)];" -> "b(x0,xf,u0,uf,p,tf,vdat)'];"