1    	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2    	/*                                                                           */
3    	/*                  This file is part of the program and library             */
4    	/*         SCIP --- Solving Constraint Integer Programs                      */
5    	/*                                                                           */
6    	/*  Copyright (c) 2002-2023 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   paramset.h
26   	 * @ingroup INTERNALAPI
27   	 * @brief  internal methods for handling parameter settings
28   	 * @author Tobias Achterberg
29   	 * @author Timo Berthold
30   	 */
31   	
32   	/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
33   	
34   	#ifndef __SCIP_PARAMSET_H__
35   	#define __SCIP_PARAMSET_H__
36   	
37   	
38   	#include "scip/def.h"
39   	#include "blockmemshell/memory.h"
40   	#include "scip/type_set.h"
41   	#include "scip/type_retcode.h"
42   	#include "scip/type_paramset.h"
43   	#include "scip/pub_paramset.h"
44   	#include "scip/pub_misc.h"
45   	
46   	#ifdef __cplusplus
47   	extern "C" {
48   	#endif
49   	
50   	/** creates parameter set */
51   	SCIP_RETCODE SCIPparamsetCreate(
52   	   SCIP_PARAMSET**       paramset,           /**< pointer to store the parameter set */
53   	   BMS_BLKMEM*           blkmem              /**< block memory */
54   	   );
55   	
56   	/** frees parameter set */
57   	void SCIPparamsetFree(
58   	   SCIP_PARAMSET**       paramset,           /**< pointer to the parameter set */
59   	   BMS_BLKMEM*           blkmem              /**< block memory */
60   	   );
61   	
62   	/** creates a bool parameter, sets it to its default value, and adds it to the parameter set */
63   	SCIP_RETCODE SCIPparamsetAddBool(
64   	   SCIP_PARAMSET*        paramset,           /**< parameter set */
65   	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
66   	   BMS_BLKMEM*           blkmem,             /**< block memory */
67   	   const char*           name,               /**< name of the parameter */
68   	   const char*           desc,               /**< description of the parameter */
69   	   SCIP_Bool*            valueptr,           /**< pointer to store the current parameter value, or NULL */
70   	   SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
71   	   SCIP_Bool             defaultvalue,       /**< default value of the parameter */
72   	   SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
73   	   SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
74   	   );
75   	
76   	/** creates a int parameter, sets it to its default value, and adds it to the parameter set */
77   	SCIP_RETCODE SCIPparamsetAddInt(
78   	   SCIP_PARAMSET*        paramset,           /**< parameter set */
79   	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
80   	   BMS_BLKMEM*           blkmem,             /**< block memory */
81   	   const char*           name,               /**< name of the parameter */
82   	   const char*           desc,               /**< description of the parameter */
83   	   int*                  valueptr,           /**< pointer to store the current parameter value, or NULL */
84   	   SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
85   	   int                   defaultvalue,       /**< default value of the parameter */
86   	   int                   minvalue,           /**< minimum value for parameter */
87   	   int                   maxvalue,           /**< maximum value for parameter */
88   	   SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
89   	   SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
90   	   );
91   	
92   	/** creates a SCIP_Longint parameter, sets it to its default value, and adds it to the parameter set */
93   	SCIP_RETCODE SCIPparamsetAddLongint(
94   	   SCIP_PARAMSET*        paramset,           /**< parameter set */
95   	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
96   	   BMS_BLKMEM*           blkmem,             /**< block memory */
97   	   const char*           name,               /**< name of the parameter */
98   	   const char*           desc,               /**< description of the parameter */
99   	   SCIP_Longint*         valueptr,           /**< pointer to store the current parameter value, or NULL */
100  	   SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
101  	   SCIP_Longint          defaultvalue,       /**< default value of the parameter */
102  	   SCIP_Longint          minvalue,           /**< minimum value for parameter */
103  	   SCIP_Longint          maxvalue,           /**< maximum value for parameter */
104  	   SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
105  	   SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
106  	   );
107  	
108  	/** creates a SCIP_Real parameter, sets it to its default value, and adds it to the parameter set */
109  	SCIP_RETCODE SCIPparamsetAddReal(
110  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
111  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
112  	   BMS_BLKMEM*           blkmem,             /**< block memory */
113  	   const char*           name,               /**< name of the parameter */
114  	   const char*           desc,               /**< description of the parameter */
115  	   SCIP_Real*            valueptr,           /**< pointer to store the current parameter value, or NULL */
116  	   SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
117  	   SCIP_Real             defaultvalue,       /**< default value of the parameter */
118  	   SCIP_Real             minvalue,           /**< minimum value for parameter */
119  	   SCIP_Real             maxvalue,           /**< maximum value for parameter */
120  	   SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
121  	   SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
122  	   );
123  	
124  	/** creates a char parameter, sets it to its default value, and adds it to the parameter set */
125  	SCIP_RETCODE SCIPparamsetAddChar(
126  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
127  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
128  	   BMS_BLKMEM*           blkmem,             /**< block memory */
129  	   const char*           name,               /**< name of the parameter */
130  	   const char*           desc,               /**< description of the parameter */
131  	   char*                 valueptr,           /**< pointer to store the current parameter value, or NULL */
132  	   SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
133  	   char                  defaultvalue,       /**< default value of the parameter */
134  	   const char*           allowedvalues,      /**< array with possible parameter values, or NULL if not restricted */
135  	   SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
136  	   SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
137  	   );
138  	
139  	/** creates a string parameter, sets it to its default value, and adds it to the parameter set */
140  	SCIP_RETCODE SCIPparamsetAddString(
141  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
142  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
143  	   BMS_BLKMEM*           blkmem,             /**< block memory */
144  	   const char*           name,               /**< name of the parameter */
145  	   const char*           desc,               /**< description of the parameter */
146  	   char**                valueptr,           /**< pointer to store the current parameter value, or NULL */
147  	   SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
148  	   const char*           defaultvalue,       /**< default value of the parameter */
149  	   SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
150  	   SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
151  	   );
152  	
153  	/** returns whether an existing parameter is fixed */
154  	SCIP_Bool SCIPparamsetIsFixed(
155  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
156  	   const char*           name                /**< name of the parameter */
157  	   );
158  	
159  	/** returns the pointer to an existing SCIP parameter */
160  	SCIP_PARAM* SCIPparamsetGetParam(
161  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
162  	   const char*           name                /**< name of the parameter */
163  	   );
164  	
165  	/** gets the value of an existing SCIP_Bool parameter */
166  	SCIP_RETCODE SCIPparamsetGetBool(
167  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
168  	   const char*           name,               /**< name of the parameter */
169  	   SCIP_Bool*            value               /**< pointer to store the parameter */
170  	   );
171  	
172  	/** gets the value of an existing int parameter */
173  	SCIP_RETCODE SCIPparamsetGetInt(
174  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
175  	   const char*           name,               /**< name of the parameter */
176  	   int*                  value               /**< pointer to store the parameter */
177  	   );
178  	
179  	/** gets the value of an existing SCIP_Longint parameter */
180  	SCIP_RETCODE SCIPparamsetGetLongint(
181  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
182  	   const char*           name,               /**< name of the parameter */
183  	   SCIP_Longint*         value               /**< pointer to store the parameter */
184  	   );
185  	
186  	/** gets the value of an existing SCIP_Real parameter */
187  	SCIP_RETCODE SCIPparamsetGetReal(
188  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
189  	   const char*           name,               /**< name of the parameter */
190  	   SCIP_Real*            value               /**< pointer to store the parameter */
191  	   );
192  	
193  	/** gets the value of an existing char parameter */
194  	SCIP_RETCODE SCIPparamsetGetChar(
195  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
196  	   const char*           name,               /**< name of the parameter */
197  	   char*                 value               /**< pointer to store the parameter */
198  	   );
199  	
200  	/** gets the value of an existing string parameter */
201  	SCIP_RETCODE SCIPparamsetGetString(
202  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
203  	   const char*           name,               /**< name of the parameter */
204  	   char**                value               /**< pointer to store the parameter */
205  	   );
206  	
207  	/** changes the fixing status of an existing parameter */
208  	SCIP_RETCODE SCIPparamsetFix(
209  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
210  	   const char*           name,               /**< name of the parameter */
211  	   SCIP_Bool             fixed               /**< new fixing status of the parameter */
212  	   );
213  	
214  	/** changes the value of an existing SCIP_Bool parameter */
215  	SCIP_RETCODE SCIPparamsetSetBool(
216  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
217  	   SCIP_SET*             set,                /**< global SCIP settings */
218  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
219  	   const char*           name,               /**< name of the parameter */
220  	   SCIP_Bool             value               /**< new value of the parameter */
221  	   );
222  	
223  	/** changes the value of an existing int parameter */
224  	SCIP_RETCODE SCIPparamsetSetInt(
225  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
226  	   SCIP_SET*             set,                /**< global SCIP settings */
227  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
228  	   const char*           name,               /**< name of the parameter */
229  	   int                   value               /**< new value of the parameter */
230  	   );
231  	
232  	/** changes the value of an existing SCIP_Longint parameter */
233  	SCIP_RETCODE SCIPparamsetSetLongint(
234  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
235  	   SCIP_SET*             set,                /**< global SCIP settings */
236  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
237  	   const char*           name,               /**< name of the parameter */
238  	   SCIP_Longint          value               /**< new value of the parameter */
239  	   );
240  	
241  	/** changes the value of an existing SCIP_Real parameter */
242  	SCIP_RETCODE SCIPparamsetSetReal(
243  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
244  	   SCIP_SET*             set,                /**< global SCIP settings */
245  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
246  	   const char*           name,               /**< name of the parameter */
247  	   SCIP_Real             value               /**< new value of the parameter */
248  	   );
249  	
250  	/** changes the value of an existing char parameter */
251  	SCIP_RETCODE SCIPparamsetSetChar(
252  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
253  	   SCIP_SET*             set,                /**< global SCIP settings */
254  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
255  	   const char*           name,               /**< name of the parameter */
256  	   char                  value               /**< new value of the parameter */
257  	   );
258  	
259  	/** changes the value of an existing string parameter */
260  	SCIP_RETCODE SCIPparamsetSetString(
261  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
262  	   SCIP_SET*             set,                /**< global SCIP settings */
263  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
264  	   const char*           name,               /**< name of the parameter */
265  	   const char*           value               /**< new value of the parameter */
266  	   );
267  	
268  	/** changes the value of an existing parameter */
269  	SCIP_RETCODE SCIPparamsetSet(
270  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
271  	   SCIP_SET*             set,                /**< global SCIP settings */
272  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
273  	   const char*           name,               /**< name of the parameter */
274  	   const char*           value,              /**< new value of the parameter as string */
275  	   SCIP_Bool             fix                 /**< whether to fix parameter */
276  	   );
277  	
278  	/** changes the default value of an existing SCIP_Bool parameter */
279  	SCIP_RETCODE SCIPparamsetSetDefaultBool(
280  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
281  	   const char*           name,               /**< name of the parameter */
282  	   SCIP_Bool             defaultvalue        /**< new default value of the parameter */
283  	   );
284  	
285  	/** changes the default value of an existing int parameter */
286  	SCIP_RETCODE SCIPparamsetSetDefaultInt(
287  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
288  	   const char*           name,               /**< name of the parameter */
289  	   int                   defaultvalue        /**< new default value of the parameter */
290  	   );
291  	
292  	/** changes the default value of an existing SCIP_Longint parameter */
293  	SCIP_RETCODE SCIPparamsetSetDefaultLongint(
294  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
295  	   const char*           name,               /**< name of the parameter */
296  	   SCIP_Longint          defaultvalue        /**< new default value of the parameter */
297  	   );
298  	
299  	/** changes the default value of an existing SCIP_Real parameter */
300  	SCIP_RETCODE SCIPparamsetSetDefaultReal(
301  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
302  	   const char*           name,               /**< name of the parameter */
303  	   SCIP_Real             defaultvalue        /**< new default value of the parameter */
304  	   );
305  	
306  	/** changes the default value of an existing char parameter */
307  	SCIP_RETCODE SCIPparamsetSetDefaultChar(
308  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
309  	   const char*           name,               /**< name of the parameter */
310  	   char                  defaultvalue        /**< new default value of the parameter */
311  	   );
312  	
313  	/** changes the default value of an existing string parameter */
314  	SCIP_RETCODE SCIPparamsetSetDefaultString(
315  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
316  	   const char*           name,               /**< name of the parameter */
317  	   const char*           defaultvalue        /**< new default value of the parameter */
318  	   );
319  	
320  	/** reads parameters from a file */
321  	SCIP_RETCODE SCIPparamsetRead(
322  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
323  	   SCIP_SET*             set,                /**< global SCIP settings */
324  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
325  	   const char*           filename            /**< file name */
326  	   );
327  	
328  	/** writes all parameters in the parameter set to a file */
329  	SCIP_RETCODE SCIPparamsetWrite(
330  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
331  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
332  	   const char*           filename,           /**< file name, or NULL for stdout */
333  	   SCIP_Bool             comments,           /**< should parameter descriptions be written as comments? */
334  	   SCIP_Bool             onlychanged         /**< should only the parameters been written, that are changed from default? */
335  	   );
336  	
337  	/** installs default values for all parameters */
338  	SCIP_RETCODE SCIPparamsetSetToDefaults(
339  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
340  	   SCIP_SET*             set,                /**< global SCIP settings */
341  	   SCIP_MESSAGEHDLR*     messagehdlr         /**< message handler */
342  	   );
343  	
344  	/** installs default value for a single parameter */
345  	SCIP_RETCODE SCIPparamsetSetToDefault(
346  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
347  	   SCIP_SET*             set,                /**< global SCIP settings */
348  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
349  	   const char*           paramname           /**< name of the parameter */
350  	   );
351  	
352  	/** sets parameters to 
353  	 *
354  	 *  - \ref SCIP_PARAMEMPHASIS_DEFAULT to use default values (see also SCIPparamsetSetToDefault())
355  	 *  - \ref SCIP_PARAMEMPHASIS_COUNTER to get feasible and "fast" counting process
356  	 *  - \ref SCIP_PARAMEMPHASIS_CPSOLVER to get CP like search (e.g. no LP relaxation)
357  	 *  - \ref SCIP_PARAMEMPHASIS_EASYCIP to solve easy problems fast
358  	 *  - \ref SCIP_PARAMEMPHASIS_FEASIBILITY to detect feasibility fast
359  	 *  - \ref SCIP_PARAMEMPHASIS_HARDLP to be capable to handle hard LPs
360  	 *  - \ref SCIP_PARAMEMPHASIS_OPTIMALITY to prove optimality fast
361  	 *  - \ref SCIP_PARAMEMPHASIS_PHASEFEAS to find feasible solutions during a 3 phase solution process
362  	 *  - \ref SCIP_PARAMEMPHASIS_PHASEIMPROVE to find improved solutions during a 3 phase solution process
363  	 *  - \ref SCIP_PARAMEMPHASIS_PHASEPROOF to proof optimality during a 3 phase solution process
364  	 *  - \ref SCIP_PARAMEMPHASIS_NUMERICS to solve problems which cause numerical issues
365  	 */
366  	SCIP_RETCODE SCIPparamsetSetEmphasis(
367  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
368  	   SCIP_SET*             set,                /**< global SCIP settings */
369  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
370  	   SCIP_PARAMEMPHASIS    paramemphasis,      /**< parameter emphasis */
371  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
372  	   );
373  	
374  	/** sets parameters to deactivate separators and heuristics that use auxiliary SCIP instances; should be called for
375  	 *  auxiliary SCIP instances to avoid recursion
376  	 */
377  	SCIP_RETCODE SCIPparamsetSetToSubscipsOff(
378  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
379  	   SCIP_SET*             set,                /**< global SCIP settings */
380  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
381  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
382  	   );
383  	
384  	/** sets heuristic parameters values to 
385  	 *  - SCIP_PARAMSETTING_DEFAULT which are the default values of all heuristic parameters 
386  	 *  - SCIP_PARAMSETTING_FAST such that the time spend for heuristic is decreased
387  	 *  - SCIP_PARAMSETTING_AGGRESSIVE such that the heuristic are called more aggregative
388  	 *  - SCIP_PARAMSETTING_OFF which turn off all heuristics
389  	 */
390  	SCIP_RETCODE SCIPparamsetSetHeuristics(
391  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
392  	   SCIP_SET*             set,                /**< global SCIP settings */
393  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
394  	   SCIP_PARAMSETTING     paramsetting,       /**< parameter settings */
395  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
396  	   );
397  	
398  	/** sets presolving parameters to 
399  	 *  - SCIP_PARAMSETTING_DEFAULT which are the default values of all presolving parameters 
400  	 *  - SCIP_PARAMSETTING_FAST such that the time spend for presolving is decreased
401  	 *  - SCIP_PARAMSETTING_AGGRESSIVE such that the presolving is more aggregative
402  	 *  - SCIP_PARAMSETTING_OFF which turn off all presolving
403  	 */
404  	SCIP_RETCODE SCIPparamsetSetPresolving(
405  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
406  	   SCIP_SET*             set,                /**< global SCIP settings */
407  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
408  	   SCIP_PARAMSETTING     paramsetting,       /**< parameter settings */
409  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
410  	   );
411  	
412  	/** sets separating parameters to 
413  	 *  - SCIP_PARAMSETTING_DEFAULT which are the default values of all separating parameters 
414  	 *  - SCIP_PARAMSETTING_FAST such that the time spend for separating is decreased
415  	 *  - SCIP_PARAMSETTING_AGGRESSIVE such that the separating is done more aggregative
416  	 *  - SCIP_PARAMSETTING_OFF which turn off all separating
417  	 */
418  	SCIP_RETCODE SCIPparamsetSetSeparating(
419  	   SCIP_PARAMSET*        paramset,           /**< parameter set */
420  	   SCIP_SET*             set,                /**< global SCIP settings */
421  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
422  	   SCIP_PARAMSETTING     paramsetting,       /**< parameter settings */
423  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
424  	   );
425  	
426  	/** returns the array of parameters */
427  	SCIP_PARAM** SCIPparamsetGetParams(
428  	   SCIP_PARAMSET*        paramset            /**< parameter set */
429  	   );
430  	
431  	/** returns the number of parameters in the parameter set */
432  	int SCIPparamsetGetNParams(
433  	   SCIP_PARAMSET*        paramset            /**< parameter set */
434  	   );
435  	
436  	/** copies all parameter values of the source parameter set to the corresponding parameters in the target set */
437  	SCIP_RETCODE SCIPparamsetCopyParams(
438  	   SCIP_PARAMSET*        sourceparamset,     /**< source parameter set */
439  	   SCIP_PARAMSET*        targetparamset,     /**< target parameter set */
440  	   SCIP_SET*             set,                /**< global SCIP settings of target SCIP */
441  	   SCIP_MESSAGEHDLR*     messagehdlr         /**< message handler of target SCIP */
442  	   );
443  	
444  	/** checks whether value of SCIP_Bool parameter is valid */
445  	SCIP_Bool SCIPparamIsValidBool(
446  	   SCIP_PARAM*           param,              /**< parameter */
447  	   SCIP_Bool             value               /**< value to check */
448  	   );
449  	
450  	/** checks whether value of integer parameter is valid */
451  	SCIP_Bool SCIPparamIsValidInt(
452  	   SCIP_PARAM*           param,              /**< parameter */
453  	   int                   value               /**< value to check */
454  	   );
455  	
456  	/** checks whether value of SCIP_Longint parameter is valid */
457  	SCIP_Bool SCIPparamIsValidLongint(
458  	   SCIP_PARAM*           param,              /**< parameter */
459  	   SCIP_Longint          value               /**< value to check */
460  	   );
461  	
462  	/** checks whether value of SCIP_Real parameter is valid */
463  	SCIP_Bool SCIPparamIsValidReal(
464  	   SCIP_PARAM*           param,              /**< parameter */
465  	   SCIP_Real             value               /**< value to check */
466  	   );
467  	
468  	/** checks whether value of char parameter is valid */
469  	SCIP_Bool SCIPparamIsValidChar(
470  	   SCIP_PARAM*           param,              /**< parameter */
471  	   const char            value               /**< value to check */
472  	   );
473  	
474  	/** checks whether value of string parameter is valid */
475  	SCIP_Bool SCIPparamIsValidString(
476  	   SCIP_PARAM*           param,              /**< parameter */
477  	   const char*           value               /**< value to check */
478  	   );
479  	
480  	/** sets value of SCIP_Bool parameter */
481  	SCIP_RETCODE SCIPparamSetBool(
482  	   SCIP_PARAM*           param,              /**< parameter */
483  	   SCIP_SET*             set,                /**< global SCIP settings, or NULL if param change method should not be called */
484  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
485  	   SCIP_Bool             value,              /**< new value of the parameter */
486  	   SCIP_Bool             initialize,         /**< is this the initialization of the parameter? */
487  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
488  	   );
489  	
490  	/** sets value of int parameter */
491  	SCIP_RETCODE SCIPparamSetInt(
492  	   SCIP_PARAM*           param,              /**< parameter */
493  	   SCIP_SET*             set,                /**< global SCIP settings, or NULL if param change method should not be called */
494  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
495  	   int                   value,              /**< new value of the parameter */
496  	   SCIP_Bool             initialize,         /**< is this the initialization of the parameter? */
497  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
498  	   );
499  	
500  	/** sets value of SCIP_Longint parameter */
501  	SCIP_RETCODE SCIPparamSetLongint(
502  	   SCIP_PARAM*           param,              /**< parameter */
503  	   SCIP_SET*             set,                /**< global SCIP settings, or NULL if param change method should not be called */
504  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
505  	   SCIP_Longint          value,              /**< new value of the parameter */
506  	   SCIP_Bool             initialize,         /**< is this the initialization of the parameter? */
507  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
508  	   );
509  	
510  	/** sets value of SCIP_Real parameter */
511  	SCIP_RETCODE SCIPparamSetReal(
512  	   SCIP_PARAM*           param,              /**< parameter */
513  	   SCIP_SET*             set,                /**< global SCIP settings, or NULL if param change method should not be called */
514  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
515  	   SCIP_Real             value,              /**< new value of the parameter */
516  	   SCIP_Bool             initialize,         /**< is this the initialization of the parameter? */
517  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
518  	   );
519  	
520  	/** sets value of char parameter */
521  	SCIP_RETCODE SCIPparamSetChar(
522  	   SCIP_PARAM*           param,              /**< parameter */
523  	   SCIP_SET*             set,                /**< global SCIP settings, or NULL if param change method should not be called */
524  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
525  	   char                  value,              /**< new value of the parameter */
526  	   SCIP_Bool             initialize,         /**< is this the initialization of the parameter? */
527  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
528  	   );
529  	
530  	/** sets value of string parameter */
531  	SCIP_RETCODE SCIPparamSetString(
532  	   SCIP_PARAM*           param,              /**< parameter */
533  	   SCIP_SET*             set,                /**< global SCIP settings, or NULL if param change method should not be called */
534  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
535  	   const char*           value,              /**< new value of the parameter */
536  	   SCIP_Bool             initialize,         /**< is this the initialization of the parameter? */
537  	   SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
538  	   );
539  	
540  	/** sets default value of SCIP_Bool parameter */
541  	void SCIPparamSetDefaultBool(
542  	   SCIP_PARAM*           param,              /**< parameter */
543  	   SCIP_Bool             defaultvalue        /**< new default value */
544  	   );
545  	
546  	/** sets default value of int parameter */
547  	void SCIPparamSetDefaultInt(
548  	   SCIP_PARAM*           param,              /**< parameter */
549  	   int                   defaultvalue        /**< new default value */
550  	   );
551  	
552  	/** sets default value of SCIP_Longint parameter */
553  	void SCIPparamSetDefaultLongint(
554  	   SCIP_PARAM*           param,              /**< parameter */
555  	   SCIP_Longint          defaultvalue        /**< new default value */
556  	   );
557  	
558  	/** sets default value of SCIP_Real parameter */
559  	void SCIPparamSetDefaultReal(
560  	   SCIP_PARAM*           param,              /**< parameter */
561  	   SCIP_Real             defaultvalue        /**< new default value */
562  	   );
563  	
564  	/** sets default value of char parameter */
565  	void SCIPparamSetDefaultChar(
566  	   SCIP_PARAM*           param,              /**< parameter */
567  	   char                  defaultvalue        /**< new default value */
568  	   );
569  	
570  	/** sets default value of string parameter */
571  	void SCIPparamSetDefaultString(
572  	   SCIP_PARAM*           param,              /**< parameter */
573  	   const char*           defaultvalue        /**< new default value */
574  	   );
575  	
576  	/** sets the parameter to its default setting */
577  	SCIP_RETCODE SCIPparamSetToDefault(
578  	   SCIP_PARAM*           param,              /**< parameter */
579  	   SCIP_SET*             set,                /**< global SCIP settings */
580  	   SCIP_MESSAGEHDLR*     messagehdlr         /**< message handler */
581  	   );
582  	
583  	/** writes a single parameter to a file */
584  	SCIP_RETCODE SCIPparamWrite(
585  	   SCIP_PARAM*           param,              /**< parameter */
586  	   SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
587  	   const char*           filename,           /**< file name, or NULL for stdout */
588  	   SCIP_Bool             comments,           /**< should parameter descriptions be written as comments? */
589  	   SCIP_Bool             onlychanged         /**< should only the parameters been written, that are changed from default? */
590  	   );
591  	
592  	#ifdef __cplusplus
593  	}
594  	#endif
595  	
596  	#endif
597