Home > matlab > acado > packages > +acado > @OCP > getInstructions.m

getInstructions

PURPOSE ^

Used to generate CPP file

SYNOPSIS ^

function getInstructions(obj, cppobj, get)

DESCRIPTION ^

Used to generate CPP file

  Licence:
    This file is part of ACADO Toolkit  - (http://www.acadotoolkit.org/)

    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
    Copyright (C) 2008-2009 by Boris Houska and Hans Joachim Ferreau, K.U.Leuven.
    Developed within the Optimization in Engineering Center (OPTEC) under
    supervision of Moritz Diehl. All rights reserved.

    ACADO Toolkit is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 3 of the License, or (at your option) any later version.

    ACADO Toolkit is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with ACADO Toolkit; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

    Author: David Ariens
    Date: 2010

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function getInstructions(obj, cppobj, get)
0002 %Used to generate CPP file
0003 %
0004 %  Licence:
0005 %    This file is part of ACADO Toolkit  - (http://www.acadotoolkit.org/)
0006 %
0007 %    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
0008 %    Copyright (C) 2008-2009 by Boris Houska and Hans Joachim Ferreau, K.U.Leuven.
0009 %    Developed within the Optimization in Engineering Center (OPTEC) under
0010 %    supervision of Moritz Diehl. All rights reserved.
0011 %
0012 %    ACADO Toolkit is free software; you can redistribute it and/or
0013 %    modify it under the terms of the GNU Lesser General Public
0014 %    License as published by the Free Software Foundation; either
0015 %    version 3 of the License, or (at your option) any later version.
0016 %
0017 %    ACADO Toolkit is distributed in the hope that it will be useful,
0018 %    but WITHOUT ANY WARRANTY; without even the implied warranty of
0019 %    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0020 %    Lesser General Public License for more details.
0021 %
0022 %    You should have received a copy of the GNU Lesser General Public
0023 %    License along with ACADO Toolkit; if not, write to the Free Software
0024 %    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
0025 %
0026 %    Author: David Ariens
0027 %    Date: 2010
0028 %
0029 
0030 
0031 
0032 if (get == 'B')
0033     
0034     % HEADER
0035     
0036     if (~isempty(obj.grid))  % GRID
0037         
0038         fprintf(cppobj.fileMEX,sprintf('    Grid grid_%s(%s);\n', obj.grid.name, obj.grid.name));
0039         fprintf(cppobj.fileMEX,sprintf('    OCP %s(grid_%s);\n', obj.name, obj.grid.name));
0040 
0041 
0042     elseif(~isempty(obj.tStart)) % NORMAL
0043 
0044         if (~isempty(obj.N))
0045             fprintf(cppobj.fileMEX,sprintf('    OCP %s(%s, %s, %s);\n', obj.name, obj.tStart.name, obj.tEnd.name, obj.N.name));
0046         else
0047             fprintf(cppobj.fileMEX,sprintf('    OCP %s(%s, %s);\n', obj.name, obj.tStart.name, obj.tEnd.name));
0048         end
0049     
0050     else % NO ARGUMENTS
0051         fprintf(cppobj.fileMEX,sprintf('    OCP %s;\n', obj.name));
0052         
0053     end
0054     
0055     
0056     
0057     % COST FUNCTION
0058 
0059     for i=1:length(obj.minMayerTerms)   % MIN MAYER
0060         fprintf(cppobj.fileMEX,sprintf('    %s.minimizeMayerTerm(%s);\n', obj.name, obj.minMayerTerms{i}.toString));
0061     end
0062     
0063     for i=1:length(obj.maxMayerTerms)   % MAX MAYER
0064         fprintf(cppobj.fileMEX,sprintf('    %s.maximizeMayerTerm(%s);\n', obj.name, obj.maxMayerTerms{i}.toString));
0065     end
0066     
0067     for i=1:length(obj.minLagrangeTerms)% MIN LAGRANGE
0068         fprintf(cppobj.fileMEX,sprintf('    %s.minimizeLagrangeTerm(%s);\n', obj.name, obj.minLagrangeTerms{i}.toString));
0069     end
0070     
0071     for i=1:length(obj.maxLagrangeTerms)% MAX LAGRANGE
0072         fprintf(cppobj.fileMEX,sprintf('    %s.maximizeLagrangeTerm(%s);\n', obj.name, obj.maxLagrangeTerms{i}.toString));
0073     end
0074     
0075     for i=1:length(obj.minLSQTermh)     % MIN LSQ
0076         if (~isempty(obj.minLSQTermS{i}) && ~isempty(obj.minLSQTermr{i})) % S,h,r
0077             fprintf(cppobj.fileMEX,sprintf('    %s.minimizeLSQ(%s, %s, %s);\n', obj.name, obj.minLSQTermS{i}.name_m, obj.minLSQTermh{i}.name, obj.minLSQTermr{i}.name));
0078         elseif (~isempty(obj.minLSQTermr{i})) % h,r
0079             fprintf(cppobj.fileMEX,sprintf('    %s.minimizeLSQ(%s, %s);\n', obj.name, obj.minLSQTermh{i}.name, obj.minLSQTermr{i}.name));
0080         else % h
0081             fprintf(cppobj.fileMEX,sprintf('    %s.minimizeLSQ(%s);\n', obj.name, obj.minLSQTermh{i}.name));
0082         end
0083     end
0084     
0085     for i=1:length(obj.minLSQEndTermh)  % MIN LSQ END TERM
0086         if (~isempty(obj.minLSQEndTermS{i}) && ~isempty(obj.minLSQEndTermr{i})) % S,h,r
0087             fprintf(cppobj.fileMEX,sprintf('    %s.minimizeLSQEndTerm(%s, %s, %s);\n', obj.name, obj.minLSQEndTermS{i}.name_m, obj.minLSQEndTermh{i}.name, obj.minLSQEndTermr{i}.name));
0088         elseif (~isempty(obj.minLSQEndTermr{i})) % h,r
0089             fprintf(cppobj.fileMEX,sprintf('    %s.minimizeLSQEndTerm(%s, %s);\n', obj.name, obj.minLSQEndTermh{i}.name, obj.minLSQEndTermr{i}.name));
0090         else % h
0091             error('error minimizeLSQEndTerm write');
0092         end
0093     end
0094     
0095     
0096     
0097     % SUBJECT TO
0098     
0099     for i=1:length(obj.subjectoItems)
0100         fprintf(cppobj.fileMEX,sprintf('    %s.subjectTo(%s);\n', obj.name, obj.subjectoItems{i}));
0101     end
0102 
0103     fprintf(cppobj.fileMEX,'\n');
0104 end 
0105 end

www.acadotoolkit.org/matlab
Generated on Tue 01-Jun-2010 20:14:12 by m2html © 2005