Scippy

SCIP

Solving Constraint Integer Programs

struct_nlpi.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (c) 2002-2024 Zuse Institute Berlin (ZIB) */
7 /* */
8 /* Licensed under the Apache License, Version 2.0 (the "License"); */
9 /* you may not use this file except in compliance with the License. */
10 /* You may obtain a copy of the License at */
11 /* */
12 /* http://www.apache.org/licenses/LICENSE-2.0 */
13 /* */
14 /* Unless required by applicable law or agreed to in writing, software */
15 /* distributed under the License is distributed on an "AS IS" BASIS, */
16 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17 /* See the License for the specific language governing permissions and */
18 /* limitations under the License. */
19 /* */
20 /* You should have received a copy of the Apache-2.0 license */
21 /* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22 /* */
23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24 
25 /**@file struct_nlpi.h
26  * @ingroup INTERNALAPI
27  * @brief data definitions for an NLP solver interface
28  * @author Stefan Vigerske
29  * @author Thorsten Gellermann
30  */
31 
32 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
33 
34 #ifndef __SCIP_STRUCT_NLPI_H__
35 #define __SCIP_STRUCT_NLPI_H__
36 
37 #include "scip/def.h"
38 #include "scip/type_nlpi.h"
39 #include "scip/type_clock.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /** NLP interface data */
46 struct SCIP_Nlpi
47 {
48  char* name; /**< name of NLP solver */
49  char* description; /**< description of NLP solver */
50  int priority; /**< priority of NLP interface */
51  SCIP_DECL_NLPICOPY ((*nlpicopy)); /**< copy an NLPI */
52  SCIP_DECL_NLPIFREE ((*nlpifree)); /**< free NLPI user data */
53  SCIP_DECL_NLPIGETSOLVERPOINTER ((*nlpigetsolverpointer)); /**< get solver pointer */
54  SCIP_DECL_NLPICREATEPROBLEM ((*nlpicreateproblem)); /**< create a new problem instance */
55  SCIP_DECL_NLPIFREEPROBLEM ((*nlpifreeproblem)); /**< free a problem instance */
56  SCIP_DECL_NLPIGETPROBLEMPOINTER ((*nlpigetproblempointer)); /**< get problem pointer */
57  SCIP_DECL_NLPIADDVARS ((*nlpiaddvars)); /**< add variables to a problem */
58  SCIP_DECL_NLPIADDCONSTRAINTS ((*nlpiaddconstraints)); /**< add constraints to a problem */
59  SCIP_DECL_NLPISETOBJECTIVE ((*nlpisetobjective)); /**< set objective of a problem */
60  SCIP_DECL_NLPICHGVARBOUNDS ((*nlpichgvarbounds)); /**< change variable bounds in a problem */
61  SCIP_DECL_NLPICHGCONSSIDES ((*nlpichgconssides)); /**< change constraint sides in a problem */
62  SCIP_DECL_NLPIDELVARSET ((*nlpidelvarset)); /**< delete a set of variables from a problem */
63  SCIP_DECL_NLPIDELCONSSET ((*nlpidelconsset)); /**< delete a set of constraints from a problem */
64  SCIP_DECL_NLPICHGLINEARCOEFS ((*nlpichglinearcoefs)); /**< change coefficients in linear part of a constraint or objective */
65  SCIP_DECL_NLPICHGEXPR ((*nlpichgexpr)); /**< change nonlinear expression a constraint or objective */
66  SCIP_DECL_NLPICHGOBJCONSTANT ((*nlpichgobjconstant)); /**< change the constant offset in the objective */
67  SCIP_DECL_NLPISETINITIALGUESS ((*nlpisetinitialguess)); /**< set initial guess */
68  SCIP_DECL_NLPISOLVE ((*nlpisolve)); /**< solve a problem */
69  SCIP_DECL_NLPIGETSOLSTAT ((*nlpigetsolstat)); /**< get solution status for a problem */
70  SCIP_DECL_NLPIGETTERMSTAT ((*nlpigettermstat)); /**< get termination status for a problem */
71  SCIP_DECL_NLPIGETSOLUTION ((*nlpigetsolution)); /**< get solution of a problem */
72  SCIP_DECL_NLPIGETSTATISTICS ((*nlpigetstatistics)); /**< get solve statistics for a problem */
73  SCIP_NLPIDATA* nlpidata; /**< NLP interface local data */
74 
75  /* statistics */
76  int nproblems; /**< number of problems created */
77  int nsolves; /**< number of solves */
78  SCIP_CLOCK* problemtime; /**< time spend in problem setup and modification */
79  SCIP_Real solvetime; /**< time spend in solve as reported by solver */
80  SCIP_Real evaltime; /**< time spend in function evaluation during solve */
81  SCIP_Longint niter; /**< total number of iterations */
82  int ntermstat[SCIP_NLPTERMSTAT_OTHER+1]; /**< number of times a specific termination status occurred */
83  int nsolstat[SCIP_NLPSOLSTAT_UNKNOWN+1]; /**< number of times a specific solution status occurred */
84 };
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif /* __SCIP_STRUCT_NLPI_H__ */
SCIP_CLOCK * problemtime
Definition: struct_nlpi.h:78
char * name
Definition: struct_nlpi.h:48
int ntermstat[SCIP_NLPTERMSTAT_OTHER+1]
Definition: struct_nlpi.h:82
SCIP_DECL_NLPIGETSOLUTION((*nlpigetsolution))
SCIP_DECL_NLPIFREE((*nlpifree))
SCIP_DECL_NLPIFREEPROBLEM((*nlpifreeproblem))
SCIP_DECL_NLPISETOBJECTIVE((*nlpisetobjective))
SCIP_DECL_NLPIGETTERMSTAT((*nlpigettermstat))
SCIP_DECL_NLPICREATEPROBLEM((*nlpicreateproblem))
SCIP_DECL_NLPICHGCONSSIDES((*nlpichgconssides))
SCIP_DECL_NLPIADDVARS((*nlpiaddvars))
struct SCIP_NlpiData SCIP_NLPIDATA
Definition: type_nlpi.h:52
SCIP_Real solvetime
Definition: struct_nlpi.h:79
int nproblems
Definition: struct_nlpi.h:76
SCIP_DECL_NLPIGETSOLVERPOINTER((*nlpigetsolverpointer))
SCIP_DECL_NLPICHGOBJCONSTANT((*nlpichgobjconstant))
SCIP_DECL_NLPIGETPROBLEMPOINTER((*nlpigetproblempointer))
SCIP_DECL_NLPIDELCONSSET((*nlpidelconsset))
type definitions for clocks and timing issues
SCIP_DECL_NLPIADDCONSTRAINTS((*nlpiaddconstraints))
SCIP_DECL_NLPIGETSTATISTICS((*nlpigetstatistics))
SCIP_NLPIDATA * nlpidata
Definition: struct_nlpi.h:73
int nsolves
Definition: struct_nlpi.h:77
SCIP_DECL_NLPICHGEXPR((*nlpichgexpr))
#define SCIP_Real
Definition: def.h:173
SCIP_DECL_NLPICHGLINEARCOEFS((*nlpichglinearcoefs))
#define SCIP_Longint
Definition: def.h:158
SCIP_Real evaltime
Definition: struct_nlpi.h:80
int priority
Definition: struct_nlpi.h:50
SCIP_DECL_NLPICHGVARBOUNDS((*nlpichgvarbounds))
SCIP_DECL_NLPISOLVE((*nlpisolve))
char * description
Definition: struct_nlpi.h:49
common defines and data types used in all packages of SCIP
SCIP_DECL_NLPICOPY((*nlpicopy))
int nsolstat[SCIP_NLPSOLSTAT_UNKNOWN+1]
Definition: struct_nlpi.h:83
SCIP_Longint niter
Definition: struct_nlpi.h:81
SCIP_DECL_NLPIGETSOLSTAT((*nlpigetsolstat))
SCIP_DECL_NLPISETINITIALGUESS((*nlpisetinitialguess))
SCIP_DECL_NLPIDELVARSET((*nlpidelvarset))
type definitions for NLP solver interfaces