00001
00002
00003
00004
00005
00006
00007
00008
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
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 }
00222 #endif
00223
00224 #endif