/usr/include/coin/IpStdCInterface.h is in coinor-libipopt-dev 3.11.9-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | /*************************************************************************
Copyright (C) 2004, 2010 International Business Machines and others.
All Rights Reserved.
This code is published under the Eclipse Public License.
$Id: IpStdCInterface.h 2082 2012-02-16 03:00:34Z andreasw $
Authors: Carl Laird, Andreas Waechter IBM 2004-09-02
*************************************************************************/
#ifndef __IPSTDCINTERFACE_H__
#define __IPSTDCINTERFACE_H__
#ifndef IPOPT_EXPORT
#ifdef _MSC_VER
#ifdef IPOPT_DLL
#define IPOPT_EXPORT(type) __declspec(dllexport) type __cdecl
#else
#define IPOPT_EXPORT(type) type __cdecl
#endif
#else
#define IPOPT_EXPORT(type) type
#endif
#endif
#ifdef __cplusplus
extern "C"
{
#endif
/** Type for all number. We need to make sure that this is
identical with what is defined in Common/IpTypes.hpp */
typedef double Number;
/** Type for all incides. We need to make sure that this is
identical with what is defined in Common/IpTypes.hpp */
typedef int Index;
/** Type for all integers. We need to make sure that this is
identical with what is defined in Common/IpTypes.hpp */
typedef int Int;
/* This includes the SolverReturn enum type */
#include "IpReturnCodes.h"
/** Structure collecting all information about the problem
* definition and solve statistics etc. This is defined in the
* source file. */
struct IpoptProblemInfo;
/** Pointer to a Ipopt Problem. */
typedef struct IpoptProblemInfo* IpoptProblem;
/** define a boolean type for C */
typedef int Bool;
#ifndef TRUE
# define TRUE (1)
#endif
#ifndef FALSE
# define FALSE (0)
#endif
/** A pointer for anything that is to be passed between the called
* and individual callback function */
typedef void * UserDataPtr;
/** Type defining the callback function for evaluating the value of
* the objective function. Return value should be set to false if
* there was a problem doing the evaluation. */
typedef Bool (*Eval_F_CB)(Index n, Number* x, Bool new_x,
Number* obj_value, UserDataPtr user_data);
/** Type defining the callback function for evaluating the gradient of
* the objective function. Return value should be set to false if
* there was a problem doing the evaluation. */
typedef Bool (*Eval_Grad_F_CB)(Index n, Number* x, Bool new_x,
Number* grad_f, UserDataPtr user_data);
/** Type defining the callback function for evaluating the value of
* the constraint functions. Return value should be set to false if
* there was a problem doing the evaluation. */
typedef Bool (*Eval_G_CB)(Index n, Number* x, Bool new_x,
Index m, Number* g, UserDataPtr user_data);
/** Type defining the callback function for evaluating the Jacobian of
* the constrant functions. Return value should be set to false if
* there was a problem doing the evaluation. */
typedef Bool (*Eval_Jac_G_CB)(Index n, Number *x, Bool new_x,
Index m, Index nele_jac,
Index *iRow, Index *jCol, Number *values,
UserDataPtr user_data);
/** Type defining the callback function for evaluating the Hessian of
* the Lagrangian function. Return value should be set to false if
* there was a problem doing the evaluation. */
typedef Bool (*Eval_H_CB)(Index n, Number *x, Bool new_x, Number obj_factor,
Index m, Number *lambda, Bool new_lambda,
Index nele_hess, Index *iRow, Index *jCol,
Number *values, UserDataPtr user_data);
/** Type defining the callback function for giving intermediate
* execution control to the user. If set, it is called once per
* iteration, providing the user with some information on the state
* of the optimization. This can be used to print some
* user-defined output. It also gives the user a way to terminate
* the optimization prematurely. If this method returns false,
* Ipopt will terminate the optimization. */
typedef Bool (*Intermediate_CB)(Index alg_mod, /* 0 is regular, 1 is resto */
Index iter_count, Number obj_value,
Number inf_pr, Number inf_du,
Number mu, Number d_norm,
Number regularization_size,
Number alpha_du, Number alpha_pr,
Index ls_trials, UserDataPtr user_data);
/** Function for creating a new Ipopt Problem object. This function
* returns an object that can be passed to the IpoptSolve call. It
* contains the basic definition of the optimization problem, such
* as number of variables and constraints, bounds on variables and
* constraints, information about the derivatives, and the callback
* function for the computation of the optimization problem
* functions and derivatives. During this call, the options file
* PARAMS.DAT is read as well.
*
* If NULL is returned, there was a problem with one of the inputs
* or reading the options file. */
IPOPT_EXPORT(IpoptProblem) CreateIpoptProblem(
Index n /** Number of optimization variables */
, Number* x_L /** Lower bounds on variables. This array of
size n is copied internally, so that the
caller can change the incoming data after
return without that IpoptProblem is
modified. Any value less or equal than
the number specified by option
'nlp_lower_bound_inf' is interpreted to
be minus infinity. */
, Number* x_U /** Upper bounds on variables. This array of
size n is copied internally, so that the
caller can change the incoming data after
return without that IpoptProblem is
modified. Any value greater or equal
than the number specified by option
'nlp_upper_bound_inf' is interpreted to
be plus infinity. */
, Index m /** Number of constraints. */
, Number* g_L /** Lower bounds on constraints. This array of
size m is copied internally, so that the
caller can change the incoming data after
return without that IpoptProblem is
modified. Any value less or equal than
the number specified by option
'nlp_lower_bound_inf' is interpreted to
be minus infinity. */
, Number* g_U /** Upper bounds on constraints. This array of
size m is copied internally, so that the
caller can change the incoming data after
return without that IpoptProblem is
modified. Any value greater or equal
than the number specified by option
'nlp_upper_bound_inf' is interpreted to
be plus infinity. */
, Index nele_jac /** Number of non-zero elements in constraint
Jacobian. */
, Index nele_hess /** Number of non-zero elements in Hessian of
Lagrangian. */
, Index index_style /** indexing style for iRow & jCol,
0 for C style, 1 for Fortran style */
, Eval_F_CB eval_f /** Callback function for evaluating
objective function */
, Eval_G_CB eval_g /** Callback function for evaluating
constraint functions */
, Eval_Grad_F_CB eval_grad_f
/** Callback function for evaluating gradient
of objective function */
, Eval_Jac_G_CB eval_jac_g
/** Callback function for evaluating Jacobian
of constraint functions */
, Eval_H_CB eval_h /** Callback function for evaluating Hessian
of Lagrangian function */
);
/** Method for freeing a previously created IpoptProblem. After
freeing an IpoptProblem, it cannot be used anymore. */
IPOPT_EXPORT(void) FreeIpoptProblem(IpoptProblem ipopt_problem);
/** Function for adding a string option. Returns FALSE the option
* could not be set (e.g., if keyword is unknown) */
IPOPT_EXPORT(Bool) AddIpoptStrOption(IpoptProblem ipopt_problem, char* keyword, char* val);
/** Function for adding a Number option. Returns FALSE the option
* could not be set (e.g., if keyword is unknown) */
IPOPT_EXPORT(Bool) AddIpoptNumOption(IpoptProblem ipopt_problem, char* keyword, Number val);
/** Function for adding an Int option. Returns FALSE the option
* could not be set (e.g., if keyword is unknown) */
IPOPT_EXPORT(Bool) AddIpoptIntOption(IpoptProblem ipopt_problem, char* keyword, Int val);
/** Function for opening an output file for a given name with given
* printlevel. Returns false, if there was a problem opening the
* file. */
IPOPT_EXPORT(Bool) OpenIpoptOutputFile(IpoptProblem ipopt_problem, char* file_name,
Int print_level);
/** Optional function for setting scaling parameter for the NLP.
* This corresponds to the get_scaling_parameters method in TNLP.
* If the pointers x_scaling or g_scaling are NULL, then no scaling
* for x resp. g is done. */
IPOPT_EXPORT(Bool) SetIpoptProblemScaling(IpoptProblem ipopt_problem,
Number obj_scaling,
Number* x_scaling,
Number* g_scaling);
/** Setting a callback function for the "intermediate callback"
* method in the TNLP. This gives control back to the user once
* per iteration. If set, it provides the user with some
* information on the state of the optimization. This can be used
* to print some user-defined output. It also gives the user a way
* to terminate the optimization prematurely. If the callback
* method returns false, Ipopt will terminate the optimization.
* Calling this set method to set the CB pointer to NULL disables
* the intermediate callback functionality. */
IPOPT_EXPORT(Bool) SetIntermediateCallback(IpoptProblem ipopt_problem,
Intermediate_CB intermediate_cb);
/** Function calling the Ipopt optimization algorithm for a problem
previously defined with CreateIpoptProblem. The return
specified outcome of the optimization procedure (e.g., success,
failure etc).
*/
IPOPT_EXPORT(enum ApplicationReturnStatus) IpoptSolve(
IpoptProblem ipopt_problem
/** Problem that is to be optimized. Ipopt
will use the options previously specified with
AddIpoptOption (etc) for this problem. */
, Number* x /** Input: Starting point
Output: Optimal solution */
, Number* g /** Values of constraint at final point
(output only - ignored if set to NULL) */
, Number* obj_val /** Final value of objective function
(output only - ignored if set to NULL) */
, Number* mult_g /** Input: Initial values for the constraint
multipliers (only if warm start option
is chosen)
Output: Final multipliers for constraints
(ignored if set to NULL) */
, Number* mult_x_L /** Input: Initial values for the multipliers for
lower variable bounds (only if warm start
option is chosen)
Output: Final multipliers for lower variable
bounds (ignored if set to NULL) */
, Number* mult_x_U /** Input: Initial values for the multipliers for
upper variable bounds (only if warm start
option is chosen)
Output: Final multipliers for upper variable
bounds (ignored if set to NULL) */
, UserDataPtr user_data
/** Pointer to user data. This will be
passed unmodified to the callback
functions. */
);
/**
void IpoptStatisticsCounts;
void IpoptStatisticsInfeasibilities; */
#ifdef __cplusplus
} /* extern "C" { */
#endif
#endif
|