SCIP-SDP  2.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
disp_sdpfastsettings.c
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of SCIPSDP - a solving framework for mixed-integer */
4 /* semidefinite programms based on SCIP. */
5 /* */
6 /* Copyright (C) 2011-2013 Discrete Optimization, TU Darmstadt */
7 /* EDOM, FAU Erlangen-Nürnberg */
8 /* 2014-2016 Discrete Optimization, TU Darmstadt */
9 /* */
10 /* */
11 /* This program is free software; you can redistribute it and/or */
12 /* modify it under the terms of the GNU Lesser General Public License */
13 /* as published by the Free Software Foundation; either version 3 */
14 /* of the License, or (at your option) any later version. */
15 /* */
16 /* This program is distributed in the hope that it will be useful, */
17 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
18 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
19 /* GNU Lesser General Public License for more details. */
20 /* */
21 /* You should have received a copy of the GNU Lesser General Public License */
22 /* along with this program; if not, write to the Free Software */
23 /* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.*/
24 /* */
25 /* */
26 /* Based on SCIP - Solving Constraint Integer Programs */
27 /* Copyright (C) 2002-2016 Zuse Institute Berlin */
28 /* SCIP is distributed under the terms of the SCIP Academic Licence, */
29 /* see file COPYING in the SCIP distribution. */
30 /* */
31 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
32 
38 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
39 
40 #include <assert.h>
41 
42 #include "disp_sdpfastsettings.h"
43 #include "relax_sdp.h"
44 
45 /* turn off lint warnings for whole file: */
46 /*lint --e{788,818}*/
47 
48 #define DISP_NAME "sdpfastsettings"
49 #define DISP_DESC "percentage of fastsettings for SDP solver"
50 #define DISP_HEADER "SDP fast"
51 #define DISP_WIDTH 8
52 #define DISP_PRIORITY 1000
53 #define DISP_POSITION 1425
54 #define DISP_STRIPLINE TRUE
59 /*
60  * Data structures
61  */
62 
64 struct SCIP_DispData
65 {
66  SCIP_RELAX* relaxSDP;
67 };
68 
69 
70 
71 /*
72  * Callback methods of display column
73  */
74 
76 static
77 SCIP_DECL_DISPCOPY(dispCopySdpfastsettings)
78 { /*lint --e{715}*/
79  assert(scip != NULL);
80  assert(disp != NULL);
81 
82  /* call inclusion method of dialog */
83  SCIP_CALL( SCIPincludeDispSdpfastsettings(scip) );
84 
85  return SCIP_OKAY;
86 }
87 
89 static
90 SCIP_DECL_DISPFREE(dispFreeSdpfastsettings)
91 {
92  SCIP_DISPDATA* dispdata;
93 
94  assert( scip != NULL );
95  assert( disp != NULL );
96  dispdata = SCIPdispGetData(disp);
97  assert( dispdata != NULL );
98 
99  SCIPfreeMemory(scip, &dispdata);
100  SCIPdispSetData(disp, NULL);
101 
102  return SCIP_OKAY;
103 }
104 
106 static
107 SCIP_DECL_DISPINITSOL(dispInitsolSdpfastsettings)
108 { /*lint --e{715}*/
109  SCIP_DISPDATA* dispdata;
110 
111  assert( disp != NULL );
112  dispdata = SCIPdispGetData(disp);
113  assert( dispdata != NULL );
114 
115  dispdata->relaxSDP = SCIPfindRelax(scip, "SDP");
116  assert( dispdata->relaxSDP != NULL );
117 
118  return SCIP_OKAY;
119 }
120 
122 static
123 SCIP_DECL_DISPOUTPUT(dispOutputSdpfastsettings)
124 { /*lint --e{715}*/
125  SCIP_DISPDATA* dispdata;
126 
127 
128  assert( scip != NULL );
129  assert( disp != NULL );
130 
131  dispdata = SCIPdispGetData(disp);
132 
133  assert( dispdata != NULL );
134  assert( dispdata->relaxSDP != NULL );
135 
136  if ( SCIPrelaxSdpGetNSdpCalls(dispdata->relaxSDP) == 0 )
137  {
138  SCIPinfoMessage(scip, file, " -- ");
139  }
140  else
141  {
142  SCIP_Real fastpercent;
143  fastpercent = (SCIP_Real) SCIPrelaxSdpGetNSdpFast(dispdata->relaxSDP) / (SCIP_Real) SCIPrelaxSdpGetNSdpCalls(dispdata->relaxSDP);
144  SCIPinfoMessage(scip, file, "%7.2f%%", 100.0 * fastpercent);
145  }
146 
147  return SCIP_OKAY;
148 }
149 
150 
151 /*
152  * display column specific interface methods
153  */
154 
157  SCIP* scip
158  )
159 {
160  SCIP_DISPDATA* dispdata = NULL;
161 
162  assert( scip != NULL );
163 
164  /* create display column data */
165  SCIP_CALL( SCIPallocMemory(scip, &dispdata) );
166 
167  /* include display column */
168  SCIP_CALL( SCIPincludeDisp(scip, DISP_NAME, DISP_DESC, DISP_HEADER, SCIP_DISPSTATUS_AUTO,
169  dispCopySdpfastsettings,
170  dispFreeSdpfastsettings, NULL, NULL,
171  dispInitsolSdpfastsettings, NULL, dispOutputSdpfastsettings,
173 
174  return SCIP_OKAY;
175 }
static SCIP_DECL_DISPOUTPUT(dispOutputSdpfastsettings)
SCIP_RETCODE SCIPincludeDispSdpfastsettings(SCIP *scip)
#define DISP_HEADER
Column to display the percentage of SDP-relaxations that were solved using fast settings.
#define DISP_WIDTH
#define DISP_DESC
SDP-relaxator.
#define DISP_NAME
#define DISP_POSITION
int SCIPrelaxSdpGetNSdpCalls(SCIP_RELAX *relax)
Definition: relax_sdp.c:1896
static SCIP_DECL_DISPFREE(dispFreeSdpfastsettings)
static SCIP_DECL_DISPINITSOL(dispInitsolSdpfastsettings)
int SCIPrelaxSdpGetNSdpFast(SCIP_RELAX *relax)
Definition: relax_sdp.c:1907
static SCIP_DECL_DISPCOPY(dispCopySdpfastsettings)
#define DISP_STRIPLINE
#define DISP_PRIORITY