/home/coin/SVN-release/CoinAll-1.1.0/Ipopt/src/Interfaces/IpStdCInterface.h

Go to the documentation of this file.
00001 /*************************************************************************
00002    Copyright (C) 2004, 2006 International Business Machines and others.
00003    All Rights Reserved.
00004    This code is published under the Common Public License.
00005  
00006    $Id: IpStdCInterface.h 822 2006-12-19 01:24:42Z andreasw $
00007  
00008    Authors:  Carl Laird, Andreas Waechter     IBM    2004-09-02
00009  *************************************************************************/
00010 
00011 #ifndef __IPSTDCINTERFACE_H__
00012 #define __IPSTDCINTERFACE_H__
00013 
00014 #ifdef __cplusplus
00015 extern "C"
00016 {
00017 #endif
00018 
00021   typedef double Number;
00022 
00025   typedef int Index;
00026 
00029   typedef int Int;
00030 
00031   /* This includes the SolverReturn enum type */
00032 #include "IpReturnCodes.h"
00033 
00037   struct IpoptProblemInfo;
00038 
00040   typedef struct IpoptProblemInfo* IpoptProblem;
00041 
00043   typedef int Bool;
00044 #ifndef TRUE
00045 # define TRUE (1)
00046 #endif
00047 #ifndef FALSE
00048 # define FALSE (0)
00049 #endif
00050 
00053   typedef void * UserDataPtr;
00054 
00058   typedef Bool (*Eval_F_CB)(Index n, Number* x, Bool new_x,
00059                             Number* obj_value, UserDataPtr user_data);
00060 
00064   typedef Bool (*Eval_Grad_F_CB)(Index n, Number* x, Bool new_x,
00065                                  Number* grad_f, UserDataPtr user_data);
00066 
00070   typedef Bool (*Eval_G_CB)(Index n, Number* x, Bool new_x,
00071                             Index m, Number* g, UserDataPtr user_data);
00072 
00076   typedef Bool (*Eval_Jac_G_CB)(Index n, Number *x, Bool new_x,
00077                                 Index m, Index nele_jac,
00078                                 Index *iRow, Index *jCol, Number *values,
00079                                 UserDataPtr user_data);
00080 
00084   typedef Bool (*Eval_H_CB)(Index n, Number *x, Bool new_x, Number obj_factor,
00085                             Index m, Number *lambda, Bool new_lambda,
00086                             Index nele_hess, Index *iRow, Index *jCol,
00087                             Number *values, UserDataPtr user_data);
00088 
00100   IpoptProblem CreateIpoptProblem(
00101       Index n             
00102     , Number* x_L         
00110     , Number* x_U         
00118     , Index m             
00119     , Number* g_L         
00127     , Number* g_U         
00135     , Index nele_jac      
00137     , Index nele_hess     
00139     , Index index_style   
00141     , Eval_F_CB eval_f    
00143     , Eval_G_CB eval_g    
00145     , Eval_Grad_F_CB eval_grad_f
00148     , Eval_Jac_G_CB eval_jac_g
00151     , Eval_H_CB eval_h    
00153   );
00154 
00157   void FreeIpoptProblem(IpoptProblem ipopt_problem);
00158 
00159 
00162   Bool AddIpoptStrOption(IpoptProblem ipopt_problem, char* keyword, char* val);
00163 
00166   Bool AddIpoptNumOption(IpoptProblem ipopt_problem, char* keyword, Number val);
00167 
00170   Bool AddIpoptIntOption(IpoptProblem ipopt_problem, char* keyword, Int val);
00171 
00175   Bool OpenIpoptOutputFile(IpoptProblem ipopt_problem, char* file_name,
00176                            Int print_level);
00177 
00182   Bool SetIpoptProblemScaling(IpoptProblem ipopt_problem,
00183                               Number obj_scaling,
00184                               Number* x_scaling,
00185                               Number* g_scaling);
00186 
00192   enum ApplicationReturnStatus IpoptSolve(
00193       IpoptProblem ipopt_problem
00197     , Number* x          
00199     , Number* g          
00201     , Number* obj_val    
00203     , Number* mult_g     
00205     , Number* mult_x_L   
00207     , Number* mult_x_U   
00209     , UserDataPtr user_data
00213   );
00214 
00220 #ifdef __cplusplus
00221 } /* extern "C" { */
00222 #endif
00223 
00224 #endif

Generated on Sun Nov 14 14:06:36 2010 for Coin-All by  doxygen 1.4.7