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 table_default.c 26 * @ingroup DEFPLUGINS_TABLE 27 * @brief default statistics tables 28 * @author Tristan Gally 29 */ 30 31 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 32 33 #include "scip/pub_message.h" 34 #include "scip/pub_table.h" 35 #include "scip/scip_solvingstats.h" 36 #include "scip/scip_table.h" 37 #include "scip/table_default.h" 38 39 40 #define TABLE_NAME_STATUS "status" 41 #define TABLE_DESC_STATUS "status statistics table" 42 #define TABLE_POSITION_STATUS 0 /**< the position of the statistics table */ 43 #define TABLE_EARLIEST_STAGE_STATUS SCIP_STAGE_INIT /**< output of the statistics table is only printed from this stage onwards */ 44 45 #define TABLE_NAME_TIMING "timing" 46 #define TABLE_DESC_TIMING "timing statistics table" 47 #define TABLE_POSITION_TIMING 1000 /**< the position of the statistics table */ 48 #define TABLE_EARLIEST_STAGE_TIMING SCIP_STAGE_PROBLEM /**< output of the statistics table is only printed from this stage onwards */ 49 50 #define TABLE_NAME_ORIGPROB "origprob" 51 #define TABLE_DESC_ORIGPROB "original problem statistics table" 52 #define TABLE_POSITION_ORIGPROB 2000 /**< the position of the statistics table */ 53 #define TABLE_EARLIEST_STAGE_ORIGPROB SCIP_STAGE_PROBLEM /**< output of the statistics table is only printed from this stage onwards */ 54 55 #define TABLE_NAME_TRANSPROB "presolvedprob" 56 #define TABLE_DESC_TRANSPROB "presolved problem statistics table" 57 #define TABLE_POSITION_TRANSPROB 3000 /**< the position of the statistics table */ 58 #define TABLE_EARLIEST_STAGE_TRANSPROB SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 59 60 #define TABLE_NAME_PRESOL "presolver" 61 #define TABLE_DESC_PRESOL "presolver statistics table" 62 #define TABLE_POSITION_PRESOL 4000 /**< the position of the statistics table */ 63 #define TABLE_EARLIEST_STAGE_PRESOL SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 64 65 #define TABLE_NAME_CONS "constraint" 66 #define TABLE_DESC_CONS "constraint statistics table" 67 #define TABLE_POSITION_CONS 5000 /**< the position of the statistics table */ 68 #define TABLE_EARLIEST_STAGE_CONS SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 69 70 #define TABLE_NAME_CONSTIMING "constiming" 71 #define TABLE_DESC_CONSTIMING "constraint timing statistics table" 72 #define TABLE_POSITION_CONSTIMING 6000 /**< the position of the statistics table */ 73 #define TABLE_EARLIEST_STAGE_CONSTIMING SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 74 75 #define TABLE_NAME_PROP "propagator" 76 #define TABLE_DESC_PROP "propagator statistics table" 77 #define TABLE_POSITION_PROP 7000 /**< the position of the statistics table */ 78 #define TABLE_EARLIEST_STAGE_PROP SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 79 80 #define TABLE_NAME_CONFLICT "conflict" 81 #define TABLE_DESC_CONFLICT "conflict statistics table" 82 #define TABLE_POSITION_CONFLICT 8000 /**< the position of the statistics table */ 83 #define TABLE_EARLIEST_STAGE_CONFLICT SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 84 85 #define TABLE_NAME_SEPA "separator" 86 #define TABLE_DESC_SEPA "separator statistics table" 87 #define TABLE_POSITION_SEPA 9000 /**< the position of the statistics table */ 88 #define TABLE_EARLIEST_STAGE_SEPA SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 89 90 #define TABLE_NAME_CUTSEL "cutsel" 91 #define TABLE_DESC_CUTSEL "cutsel statistics table" 92 #define TABLE_POSITION_CUTSEL 9500 /**< the position of the statistics table */ 93 #define TABLE_EARLIEST_STAGE_CUTSEL SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 94 95 #define TABLE_NAME_PRICER "pricer" 96 #define TABLE_DESC_PRICER "pricer statistics table" 97 #define TABLE_POSITION_PRICER 10000 /**< the position of the statistics table */ 98 #define TABLE_EARLIEST_STAGE_PRICER SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 99 100 #define TABLE_NAME_BRANCH "branchrules" 101 #define TABLE_DESC_BRANCH "branching rules statistics table" 102 #define TABLE_POSITION_BRANCH 11000 /**< the position of the statistics table */ 103 #define TABLE_EARLIEST_STAGE_BRANCH SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 104 105 #define TABLE_NAME_HEUR "heuristics" 106 #define TABLE_DESC_HEUR "heuristics statistics table" 107 #define TABLE_POSITION_HEUR 12000 /**< the position of the statistics table */ 108 #define TABLE_EARLIEST_STAGE_HEUR SCIP_STAGE_PRESOLVING /**< output of the statistics table is only printed from this stage onwards */ 109 110 #define TABLE_NAME_COMPRESSION "compression" 111 #define TABLE_DESC_COMPRESSION "compression statistics table" 112 #define TABLE_POSITION_COMPRESSION 13000 /**< the position of the statistics table */ 113 #define TABLE_EARLIEST_STAGE_COMPRESSION SCIP_STAGE_PRESOLVING /**< output of the statistics table is only printed from this stage onwards */ 114 115 #define TABLE_NAME_BENDERS "benders" 116 #define TABLE_DESC_BENDERS "benders' decomposition statistics table" 117 #define TABLE_POSITION_BENDERS 14000 /**< the position of the statistics table */ 118 #define TABLE_EARLIEST_STAGE_BENDERS SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 119 120 #define TABLE_NAME_EXPRHDLRS "exprhdlr" 121 #define TABLE_DESC_EXPRHDLRS "expression handlers statistics table" 122 #define TABLE_POSITION_EXPRHDLRS 14500 /**< the position of the statistics table */ 123 #define TABLE_EARLIEST_STAGE_EXPRHDLRS SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 124 125 #define TABLE_NAME_LP "lp" 126 #define TABLE_DESC_LP "lp statistics table" 127 #define TABLE_POSITION_LP 15000 /**< the position of the statistics table */ 128 #define TABLE_EARLIEST_STAGE_LP SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 129 130 #define TABLE_NAME_NLP "nlp" 131 #define TABLE_DESC_NLP "nlp statistics table" 132 #define TABLE_POSITION_NLP 16000 /**< the position of the statistics table */ 133 #define TABLE_EARLIEST_STAGE_NLP SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 134 135 #define TABLE_NAME_NLPIS "nlpi" 136 #define TABLE_DESC_NLPIS "NLP solver interfaces statistics table" 137 #define TABLE_POSITION_NLPIS 16500 /**< the position of the statistics table */ 138 #define TABLE_EARLIEST_STAGE_NLPIS SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 139 140 #define TABLE_NAME_RELAX "relaxator" 141 #define TABLE_DESC_RELAX "relaxator statistics table" 142 #define TABLE_POSITION_RELAX 17000 /**< the position of the statistics table */ 143 #define TABLE_EARLIEST_STAGE_RELAX SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 144 145 #define TABLE_NAME_TREE "tree" 146 #define TABLE_DESC_TREE "tree statistics table" 147 #define TABLE_POSITION_TREE 18000 /**< the position of the statistics table */ 148 #define TABLE_EARLIEST_STAGE_TREE SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 149 150 #define TABLE_NAME_ROOT "root" 151 #define TABLE_DESC_ROOT "root statistics table" 152 #define TABLE_POSITION_ROOT 19000 /**< the position of the statistics table */ 153 #define TABLE_EARLIEST_STAGE_ROOT SCIP_STAGE_SOLVING /**< output of the statistics table is only printed from this stage onwards */ 154 155 #define TABLE_NAME_SOL "solution" 156 #define TABLE_DESC_SOL "solution statistics table" 157 #define TABLE_POSITION_SOL 20000 /**< the position of the statistics table */ 158 #define TABLE_EARLIEST_STAGE_SOL SCIP_STAGE_PRESOLVING /**< output of the statistics table is only printed from this stage onwards */ 159 160 #define TABLE_NAME_CONC "concurrentsolver" 161 #define TABLE_DESC_CONC "concurrent solver statistics table" 162 #define TABLE_POSITION_CONC 21000 /**< the position of the statistics table */ 163 #define TABLE_EARLIEST_STAGE_CONC SCIP_STAGE_TRANSFORMED /**< output of the statistics table is only printed from this stage onwards */ 164 165 /* 166 * Callback methods of statistics table 167 */ 168 169 /** copy method for statistics table plugins (called when SCIP copies plugins) */ 170 static 171 SCIP_DECL_TABLECOPY(tableCopyDefault) 172 { /*lint --e{715}*/ 173 assert(scip != NULL); 174 assert(table != NULL); 175 176 /* call inclusion method of statistics tables (unless it has already been included by the copy call of the first default table) */ 177 if( SCIPfindTable(scip, SCIPtableGetName(table)) == NULL ) 178 { 179 SCIP_CALL( SCIPincludeTableDefault(scip) ); 180 } 181 182 return SCIP_OKAY; 183 } 184 185 /** output method of statistics table to output file stream 'file' */ 186 static 187 SCIP_DECL_TABLEOUTPUT(tableOutputStatus) 188 { /*lint --e{715}*/ 189 assert(scip != NULL); 190 assert(table != NULL); 191 192 SCIPprintStatusStatistics(scip, file); 193 194 return SCIP_OKAY; 195 } 196 197 /** output method of statistics table to output file stream 'file' */ 198 static 199 SCIP_DECL_TABLEOUTPUT(tableOutputTiming) 200 { /*lint --e{715}*/ 201 assert(scip != NULL); 202 assert(table != NULL); 203 204 SCIPprintTimingStatistics(scip, file); 205 206 return SCIP_OKAY; 207 } 208 209 /** output method of statistics table to output file stream 'file' */ 210 static 211 SCIP_DECL_TABLEOUTPUT(tableOutputOrigProb) 212 { /*lint --e{715}*/ 213 assert(scip != NULL); 214 assert(table != NULL); 215 216 SCIPprintOrigProblemStatistics(scip, file); 217 218 return SCIP_OKAY; 219 } 220 221 /** output method of statistics table to output file stream 'file' */ 222 static 223 SCIP_DECL_TABLEOUTPUT(tableOutputTransProb) 224 { /*lint --e{715}*/ 225 assert(scip != NULL); 226 assert(table != NULL); 227 228 SCIPprintTransProblemStatistics(scip, file); 229 230 return SCIP_OKAY; 231 } 232 233 /** output method of statistics table to output file stream 'file' */ 234 static 235 SCIP_DECL_TABLEOUTPUT(tableOutputPresol) 236 { /*lint --e{715}*/ 237 assert(scip != NULL); 238 assert(table != NULL); 239 240 SCIPprintPresolverStatistics(scip, file); 241 242 return SCIP_OKAY; 243 } 244 245 /** output method of statistics table to output file stream 'file' */ 246 static 247 SCIP_DECL_TABLEOUTPUT(tableOutputCons) 248 { /*lint --e{715}*/ 249 assert(scip != NULL); 250 assert(table != NULL); 251 252 SCIPprintConstraintStatistics(scip, file); 253 254 return SCIP_OKAY; 255 } 256 257 /** output method of statistics table to output file stream 'file' */ 258 static 259 SCIP_DECL_TABLEOUTPUT(tableOutputConstiming) 260 { /*lint --e{715}*/ 261 assert(scip != NULL); 262 assert(table != NULL); 263 264 SCIPprintConstraintTimingStatistics(scip, file); 265 266 return SCIP_OKAY; 267 } 268 269 /** output method of statistics table to output file stream 'file' */ 270 static 271 SCIP_DECL_TABLEOUTPUT(tableOutputProp) 272 { /*lint --e{715}*/ 273 assert(scip != NULL); 274 assert(table != NULL); 275 276 SCIPprintPropagatorStatistics(scip, file); 277 278 return SCIP_OKAY; 279 } 280 281 /** output method of statistics table to output file stream 'file' */ 282 static 283 SCIP_DECL_TABLEOUTPUT(tableOutputConflict) 284 { /*lint --e{715}*/ 285 assert(scip != NULL); 286 assert(table != NULL); 287 288 SCIPprintConflictStatistics(scip, file); 289 290 return SCIP_OKAY; 291 } 292 293 /** output method of statistics table to output file stream 'file' */ 294 static 295 SCIP_DECL_TABLEOUTPUT(tableOutputSepa) 296 { /*lint --e{715}*/ 297 assert(scip != NULL); 298 assert(table != NULL); 299 300 SCIPprintSeparatorStatistics(scip, file); 301 302 return SCIP_OKAY; 303 } 304 305 /** output method of statistics table to output file stream 'file' */ 306 static 307 SCIP_DECL_TABLEOUTPUT(tableOutputCutsel) 308 { /*lint --e{715}*/ 309 assert(scip != NULL); 310 assert(table != NULL); 311 312 SCIPprintCutselectorStatistics(scip, file); 313 314 return SCIP_OKAY; 315 } 316 317 /** output method of statistics table to output file stream 'file' */ 318 static 319 SCIP_DECL_TABLEOUTPUT(tableOutputPricer) 320 { /*lint --e{715}*/ 321 assert(scip != NULL); 322 assert(table != NULL); 323 324 SCIPprintPricerStatistics(scip, file); 325 326 return SCIP_OKAY; 327 } 328 329 /** output method of statistics table to output file stream 'file' */ 330 static 331 SCIP_DECL_TABLEOUTPUT(tableOutputBranch) 332 { /*lint --e{715}*/ 333 assert(scip != NULL); 334 assert(table != NULL); 335 336 SCIPprintBranchruleStatistics(scip, file); 337 338 return SCIP_OKAY; 339 } 340 341 /** output method of statistics table to output file stream 'file' */ 342 static 343 SCIP_DECL_TABLEOUTPUT(tableOutputHeur) 344 { /*lint --e{715}*/ 345 assert(scip != NULL); 346 assert(table != NULL); 347 348 SCIPprintHeuristicStatistics(scip, file); 349 350 return SCIP_OKAY; 351 } 352 353 /** output method of statistics table to output file stream 'file' */ 354 static 355 SCIP_DECL_TABLEOUTPUT(tableOutputCompression) 356 { /*lint --e{715}*/ 357 assert(scip != NULL); 358 assert(table != NULL); 359 360 SCIPprintCompressionStatistics(scip, file); 361 362 return SCIP_OKAY; 363 } 364 365 /** output method of statistics table to output file stream 'file' */ 366 static 367 SCIP_DECL_TABLEOUTPUT(tableOutputLP) 368 { /*lint --e{715}*/ 369 assert(scip != NULL); 370 assert(table != NULL); 371 372 SCIPprintLPStatistics(scip, file); 373 374 return SCIP_OKAY; 375 } 376 377 /** output method of statistics table to output file stream 'file' */ 378 static 379 SCIP_DECL_TABLEOUTPUT(tableOutputNLP) 380 { /*lint --e{715}*/ 381 assert(scip != NULL); 382 assert(table != NULL); 383 384 SCIPprintNLPStatistics(scip, file); 385 386 return SCIP_OKAY; 387 } 388 389 /** output method of statistics table to output file stream 'file' */ 390 static 391 SCIP_DECL_TABLEOUTPUT(tableOutputRelax) 392 { /*lint --e{715}*/ 393 assert(scip != NULL); 394 assert(table != NULL); 395 396 SCIPprintRelaxatorStatistics(scip, file); 397 398 return SCIP_OKAY; 399 } 400 401 /** output method of statistics table to output file stream 'file' */ 402 static 403 SCIP_DECL_TABLEOUTPUT(tableOutputTree) 404 { /*lint --e{715}*/ 405 assert(scip != NULL); 406 assert(table != NULL); 407 408 SCIPprintTreeStatistics(scip, file); 409 410 return SCIP_OKAY; 411 } 412 413 /** output method of statistics table to output file stream 'file' */ 414 static 415 SCIP_DECL_TABLEOUTPUT(tableOutputRoot) 416 { /*lint --e{715}*/ 417 assert(scip != NULL); 418 assert(table != NULL); 419 420 SCIPprintRootStatistics(scip, file); 421 422 return SCIP_OKAY; 423 } 424 425 /** output method of statistics table to output file stream 'file' */ 426 static 427 SCIP_DECL_TABLEOUTPUT(tableOutputSol) 428 { /*lint --e{715}*/ 429 assert(scip != NULL); 430 assert(table != NULL); 431 432 SCIPprintSolutionStatistics(scip, file); 433 434 return SCIP_OKAY; 435 } 436 437 /** output method of statistics table to output file stream 'file' */ 438 static 439 SCIP_DECL_TABLEOUTPUT(tableOutputConc) 440 { /*lint --e{715}*/ 441 assert(scip != NULL); 442 assert(table != NULL); 443 444 SCIPprintConcsolverStatistics(scip, file); 445 446 return SCIP_OKAY; 447 } 448 449 /** output method of statistics table to output file stream 'file' */ 450 static 451 SCIP_DECL_TABLEOUTPUT(tableOutputBenders) 452 { /*lint --e{715}*/ 453 assert(scip != NULL); 454 assert(table != NULL); 455 456 SCIPprintBendersStatistics(scip, file); 457 458 return SCIP_OKAY; 459 } 460 461 /** output method of statistics table to output file stream 'file' */ 462 static 463 SCIP_DECL_TABLEOUTPUT(tableOutputExprhdlrs) 464 { /*lint --e{715}*/ 465 assert(scip != NULL); 466 assert(table != NULL); 467 468 SCIPprintExpressionHandlerStatistics(scip, file); 469 470 return SCIP_OKAY; 471 } 472 473 /** output method of statistics table to output file stream 'file' */ 474 static 475 SCIP_DECL_TABLEOUTPUT(tableOutputNlpis) 476 { /*lint --e{715}*/ 477 assert(scip != NULL); 478 assert(table != NULL); 479 480 SCIPprintNLPIStatistics(scip, file); 481 482 return SCIP_OKAY; 483 } 484 485 486 /* 487 * statistics table specific interface methods 488 */ 489 490 /** creates the default statistics tables and includes them in SCIP */ 491 SCIP_RETCODE SCIPincludeTableDefault( 492 SCIP* scip /**< SCIP data structure */ 493 ) 494 { 495 SCIP_TABLE* tmptable; 496 497 tmptable = SCIPfindTable(scip, TABLE_NAME_STATUS); 498 499 /* since the default statistics tables are always included all at once in this method, 500 * they should all be included already if the first one is */ 501 if( tmptable != NULL ) 502 { 503 assert(SCIPfindTable(scip, TABLE_NAME_TIMING) != NULL ); 504 assert(SCIPfindTable(scip, TABLE_NAME_ORIGPROB) != NULL ); 505 assert(SCIPfindTable(scip, TABLE_NAME_TRANSPROB) != NULL ); 506 assert(SCIPfindTable(scip, TABLE_NAME_PRESOL) != NULL ); 507 assert(SCIPfindTable(scip, TABLE_NAME_CONS) != NULL ); 508 assert(SCIPfindTable(scip, TABLE_NAME_CONSTIMING) != NULL ); 509 assert(SCIPfindTable(scip, TABLE_NAME_PROP) != NULL ); 510 assert(SCIPfindTable(scip, TABLE_NAME_CONFLICT) != NULL ); 511 assert(SCIPfindTable(scip, TABLE_NAME_SEPA) != NULL ); 512 assert(SCIPfindTable(scip, TABLE_NAME_PRICER) != NULL ); 513 assert(SCIPfindTable(scip, TABLE_NAME_BRANCH) != NULL ); 514 assert(SCIPfindTable(scip, TABLE_NAME_HEUR) != NULL ); 515 assert(SCIPfindTable(scip, TABLE_NAME_COMPRESSION) != NULL ); 516 assert(SCIPfindTable(scip, TABLE_NAME_LP) != NULL ); 517 assert(SCIPfindTable(scip, TABLE_NAME_NLP) != NULL ); 518 assert(SCIPfindTable(scip, TABLE_NAME_RELAX) != NULL ); 519 assert(SCIPfindTable(scip, TABLE_NAME_TREE) != NULL ); 520 assert(SCIPfindTable(scip, TABLE_NAME_ROOT) != NULL ); 521 assert(SCIPfindTable(scip, TABLE_NAME_SOL) != NULL ); 522 assert(SCIPfindTable(scip, TABLE_NAME_CONC) != NULL ); 523 assert(SCIPfindTable(scip, TABLE_NAME_BENDERS) != NULL ); 524 assert(SCIPfindTable(scip, TABLE_NAME_EXPRHDLRS) != NULL ); 525 assert(SCIPfindTable(scip, TABLE_NAME_NLPIS) != NULL ); 526 527 return SCIP_OKAY; 528 } 529 530 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_STATUS, TABLE_DESC_STATUS, TRUE, 531 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputStatus, 532 NULL, TABLE_POSITION_STATUS, TABLE_EARLIEST_STAGE_STATUS) ); 533 534 assert(SCIPfindTable(scip, TABLE_NAME_TIMING) == NULL); 535 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_TIMING, TABLE_DESC_TIMING, TRUE, 536 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputTiming, 537 NULL, TABLE_POSITION_TIMING, TABLE_EARLIEST_STAGE_TIMING) ); 538 539 assert(SCIPfindTable(scip, TABLE_NAME_ORIGPROB) == NULL); 540 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_ORIGPROB, TABLE_DESC_ORIGPROB, TRUE, 541 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputOrigProb, 542 NULL, TABLE_POSITION_ORIGPROB, TABLE_EARLIEST_STAGE_ORIGPROB) ); 543 544 assert(SCIPfindTable(scip, TABLE_NAME_TRANSPROB) == NULL); 545 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_TRANSPROB, TABLE_DESC_TRANSPROB, TRUE, 546 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputTransProb, 547 NULL, TABLE_POSITION_TRANSPROB, TABLE_EARLIEST_STAGE_TRANSPROB) ); 548 549 assert(SCIPfindTable(scip, TABLE_NAME_PRESOL) == NULL); 550 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_PRESOL, TABLE_DESC_PRESOL, TRUE, 551 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputPresol, 552 NULL, TABLE_POSITION_PRESOL, TABLE_EARLIEST_STAGE_PRESOL) ); 553 554 assert(SCIPfindTable(scip, TABLE_NAME_CONS) == NULL); 555 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_CONS, TABLE_DESC_CONS, TRUE, 556 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputCons, 557 NULL, TABLE_POSITION_CONS, TABLE_EARLIEST_STAGE_CONS) ); 558 559 assert(SCIPfindTable(scip, TABLE_NAME_CONSTIMING) == NULL); 560 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_CONSTIMING, TABLE_DESC_CONSTIMING, TRUE, 561 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputConstiming, 562 NULL, TABLE_POSITION_CONSTIMING, TABLE_EARLIEST_STAGE_CONSTIMING) ); 563 564 assert(SCIPfindTable(scip, TABLE_NAME_PROP) == NULL); 565 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_PROP, TABLE_DESC_PROP, TRUE, 566 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputProp, 567 NULL, TABLE_POSITION_PROP, TABLE_EARLIEST_STAGE_PROP) ); 568 569 assert(SCIPfindTable(scip, TABLE_NAME_CONFLICT) == NULL); 570 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_CONFLICT, TABLE_DESC_CONFLICT, TRUE, 571 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputConflict, 572 NULL, TABLE_POSITION_CONFLICT, TABLE_EARLIEST_STAGE_CONFLICT) ); 573 574 assert(SCIPfindTable(scip, TABLE_NAME_SEPA) == NULL); 575 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_SEPA, TABLE_DESC_SEPA, TRUE, 576 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputSepa, 577 NULL, TABLE_POSITION_SEPA, TABLE_EARLIEST_STAGE_SEPA) ); 578 579 assert(SCIPfindTable(scip, TABLE_NAME_CUTSEL) == NULL); 580 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_CUTSEL, TABLE_DESC_CUTSEL, TRUE, 581 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputCutsel, 582 NULL, TABLE_POSITION_CUTSEL, TABLE_EARLIEST_STAGE_CUTSEL) ); 583 584 assert(SCIPfindTable(scip, TABLE_NAME_PRICER) == NULL); 585 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_PRICER, TABLE_DESC_PRICER, TRUE, 586 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputPricer, 587 NULL, TABLE_POSITION_PRICER, TABLE_EARLIEST_STAGE_PRICER) ); 588 589 assert(SCIPfindTable(scip, TABLE_NAME_BRANCH) == NULL); 590 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_BRANCH, TABLE_DESC_BRANCH, TRUE, 591 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputBranch, 592 NULL, TABLE_POSITION_BRANCH, TABLE_EARLIEST_STAGE_BRANCH) ); 593 594 assert(SCIPfindTable(scip, TABLE_NAME_HEUR) == NULL); 595 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_HEUR, TABLE_DESC_HEUR, TRUE, 596 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputHeur, 597 NULL, TABLE_POSITION_HEUR, TABLE_EARLIEST_STAGE_HEUR) ); 598 599 assert(SCIPfindTable(scip, TABLE_NAME_COMPRESSION) == NULL); 600 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_COMPRESSION, TABLE_DESC_COMPRESSION, TRUE, 601 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputCompression, 602 NULL, TABLE_POSITION_COMPRESSION, TABLE_EARLIEST_STAGE_COMPRESSION) ); 603 604 assert(SCIPfindTable(scip, TABLE_NAME_BENDERS) == NULL); 605 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_BENDERS, TABLE_DESC_BENDERS, TRUE, 606 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputBenders, 607 NULL, TABLE_POSITION_BENDERS, TABLE_EARLIEST_STAGE_BENDERS) ); 608 609 assert(SCIPfindTable(scip, TABLE_NAME_EXPRHDLRS) == NULL); 610 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_EXPRHDLRS, TABLE_DESC_EXPRHDLRS, TRUE, 611 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputExprhdlrs, 612 NULL, TABLE_POSITION_EXPRHDLRS, TABLE_EARLIEST_STAGE_EXPRHDLRS) ); 613 614 assert(SCIPfindTable(scip, TABLE_NAME_LP) == NULL); 615 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_LP, TABLE_DESC_LP, TRUE, 616 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputLP, 617 NULL, TABLE_POSITION_LP, TABLE_EARLIEST_STAGE_LP) ); 618 619 assert(SCIPfindTable(scip, TABLE_NAME_NLP) == NULL); 620 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_NLP, TABLE_DESC_NLP, TRUE, 621 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputNLP, 622 NULL, TABLE_POSITION_NLP, TABLE_EARLIEST_STAGE_NLP) ); 623 624 assert(SCIPfindTable(scip, TABLE_NAME_NLPIS) == NULL); 625 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_NLPIS, TABLE_DESC_NLPIS, TRUE, 626 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputNlpis, 627 NULL, TABLE_POSITION_NLPIS, TABLE_EARLIEST_STAGE_NLPIS) ); 628 629 assert(SCIPfindTable(scip, TABLE_NAME_RELAX) == NULL); 630 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_RELAX, TABLE_DESC_RELAX, TRUE, 631 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputRelax, 632 NULL, TABLE_POSITION_RELAX, TABLE_EARLIEST_STAGE_RELAX) ); 633 634 assert(SCIPfindTable(scip, TABLE_NAME_TREE) == NULL); 635 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_TREE, TABLE_DESC_TREE, TRUE, 636 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputTree, 637 NULL, TABLE_POSITION_TREE, TABLE_EARLIEST_STAGE_TREE) ); 638 639 assert(SCIPfindTable(scip, TABLE_NAME_ROOT) == NULL); 640 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_ROOT, TABLE_DESC_ROOT, TRUE, 641 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputRoot, 642 NULL, TABLE_POSITION_ROOT, TABLE_EARLIEST_STAGE_ROOT) ); 643 644 assert(SCIPfindTable(scip, TABLE_NAME_SOL) == NULL); 645 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_SOL, TABLE_DESC_SOL, TRUE, 646 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputSol, 647 NULL, TABLE_POSITION_SOL, TABLE_EARLIEST_STAGE_SOL) ); 648 649 assert(SCIPfindTable(scip, TABLE_NAME_CONC) == NULL); 650 SCIP_CALL( SCIPincludeTable(scip, TABLE_NAME_CONC, TABLE_DESC_CONC, TRUE, 651 tableCopyDefault, NULL, NULL, NULL, NULL, NULL, tableOutputConc, 652 NULL, TABLE_POSITION_CONC, TABLE_EARLIEST_STAGE_CONC) ); 653 654 return SCIP_OKAY; 655 } 656