43 #include "scip/pub_dialog.h"
44 #include "scip/type_dialog.h"
45 #include "scip/dialog_default.h"
70 SCIP_READER** readers;
74 assert( scip != NULL );
76 readers = SCIPgetReaders(scip);
77 nreaders = SCIPgetNReaders(scip);
80 SCIPdialogMessage(scip, NULL,
"\n");
81 SCIPdialogMessage(scip, NULL,
" file reader extension description\n");
82 SCIPdialogMessage(scip, NULL,
" ----------- --------- -----------\n");
83 for( r = 0; r < nreaders; ++r )
85 if( (reader && SCIPreaderCanRead(readers[r])) || (writer && SCIPreaderCanWrite(readers[r])) )
87 SCIPdialogMessage(scip, NULL,
" %-20s ", SCIPreaderGetName(readers[r]));
88 if( strlen(SCIPreaderGetName(readers[r])) > 20 )
89 SCIPdialogMessage(scip, NULL,
"\n %20s ",
"-->");
90 SCIPdialogMessage(scip, NULL,
"%9s ", SCIPreaderGetExtension(readers[r]));
91 SCIPdialogMessage(scip, NULL,
"%s", SCIPreaderGetDesc(readers[r]));
92 SCIPdialogMessage(scip, NULL,
"\n");
95 SCIPdialogMessage(scip, NULL,
"\n");
105 SCIP_DIALOGHDLR* dialoghdlr,
106 SCIP_DIALOG** nextdialog,
112 char extension[SCIP_MAXSTRLEN];
113 char dirname[SCIP_MAXSTRLEN];
119 SCIPdialogMessage(scip, NULL,
"No decomposition to write, please read or detect one first.\n");
120 SCIPdialoghdlrClearBuffer(dialoghdlr);
125 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter directory: ", &tmp, &endoffile) );
134 SCIPdebugMessage(
"dirname: %s\n", tmp);
136 snprintf(dirname,
sizeof(dirname),
"%s", tmp);
138 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, tmp, TRUE) );
141 if( dirname[0] ==
'\0' )
143 strcpy(dirname,
"alldecompositions/");
147 mkdir(dirname, S_IRWXU | S_IRWXG | S_IRWXO);
149 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter extension: ", &tmp, &endoffile) );
150 snprintf(extension,
sizeof(extension),
"%s", tmp);
152 if( extension[0] !=
'\0' )
154 SCIP_RETCODE retcode;
156 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, extension, TRUE) );
160 if( retcode == SCIP_FILECREATEERROR )
162 SCIPdialogMessage(scip, NULL,
"error creating files\n");
163 SCIPdialoghdlrClearBuffer(dialoghdlr);
165 else if( retcode == SCIP_WRITEERROR )
167 SCIPdialogMessage(scip, NULL,
"error writing files\n");
168 SCIPdialoghdlrClearBuffer(dialoghdlr);
170 else if( retcode == SCIP_PLUGINNOTFOUND )
172 SCIPdialogMessage(scip, NULL,
"The chosen output format (%s) is unknown.\n", extension);
173 SCIPdialogMessage(scip, NULL,
"The following readers are available for writing:\n");
179 SCIP_CALL( retcode );
182 SCIPdialogMessage(scip, NULL,
"All decompositions were written (directory: %s, format: %s).\n",
196 SCIP_DIALOGHDLR* dialoghdlr,
197 SCIP_DIALOG** nextdialog
200 char extension[SCIP_MAXSTRLEN];
201 char dirname[SCIP_MAXSTRLEN];
207 SCIPdialogMessage(scip, NULL,
"No decomposition to write, please read or detect one first.\n");
208 SCIPdialoghdlrClearBuffer(dialoghdlr);
213 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter directory: ", &tmp, &endoffile) );
221 SCIPdebugMessage(
"dirname: %s\n", tmp);
223 snprintf(dirname,
sizeof(dirname),
"%s", tmp);
225 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, tmp, TRUE) );
228 if( dirname[0] ==
'\0' )
230 strcpy(dirname,
"selecteddecompositions/");
234 mkdir(dirname, S_IRWXU | S_IRWXG | S_IRWXO);
236 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter extension: ", &tmp, &endoffile) );
237 snprintf(extension,
sizeof(extension),
"%s", tmp);
239 if( extension[0] !=
'\0' )
241 SCIP_RETCODE retcode;
243 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, extension, TRUE) );
247 if( retcode == SCIP_FILECREATEERROR )
249 SCIPdialogMessage(scip, NULL,
"error creating files\n");
250 SCIPdialoghdlrClearBuffer(dialoghdlr);
252 else if( retcode == SCIP_WRITEERROR )
254 SCIPdialogMessage(scip, NULL,
"error writing files\n");
255 SCIPdialoghdlrClearBuffer(dialoghdlr);
257 else if( retcode == SCIP_PLUGINNOTFOUND )
259 SCIPdialogMessage(scip, NULL,
"The chosen output format (%s) is unknown.\n", extension);
260 SCIPdialogMessage(scip, NULL,
"The following readers are available for writing:\n");
266 SCIP_CALL( retcode );
269 SCIPdialogMessage(scip, NULL,
"All selected decompositions were written (directory: %s, format: %s).\n",
284 SCIP_DIALOGHDLR* dialoghdlr,
285 SCIP_DIALOG** nextdialog,
286 SCIP_Bool originalmatrix
290 SCIP_RETCODE retcode;
293 const char* extension =
"gp";
294 char dirname[SCIP_MAXSTRLEN];
295 char probnamepath[SCIP_MAXSTRLEN];
296 char filename[SCIP_MAXSTRLEN];
297 char outname[SCIP_MAXSTRLEN];
300 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"Enter directory for output (e.g. ../path/to/directory):\n",
301 &tmpstring, &endoffile) );
308 strncpy(dirname, tmpstring, SCIP_MAXSTRLEN);
311 if( dirname[0] ==
'\0' )
313 strcpy(dirname,
"./");
317 if( dirname != NULL )
319 mkdir(dirname, S_IRWXU | S_IRWXG | S_IRWXO);
322 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, dirname, TRUE) );
324 (void) SCIPsnprintf(probnamepath, SCIP_MAXSTRLEN,
"%s", SCIPgetProbName(scip));
325 SCIPsplitFilename(probnamepath, NULL, &probname, NULL, NULL);
326 (void) SCIPsnprintf(filename, SCIP_MAXSTRLEN,
"matrix-%s", probname);
329 for(
size_t i = 0; i < strlen(filename); i++)
331 if(filename[i] ==
'.')
335 (void) SCIPsnprintf(outname, SCIP_MAXSTRLEN,
"%s/%s.%s", dirname, filename, extension);
340 if( retcode == SCIP_FILECREATEERROR )
342 SCIPdialogMessage(scip, NULL,
"error creating file\n");
343 SCIPdialoghdlrClearBuffer(dialoghdlr);
345 else if( retcode == SCIP_WRITEERROR )
347 SCIPdialogMessage(scip, NULL,
"error writing file\n");
348 SCIPdialoghdlrClearBuffer(dialoghdlr);
353 SCIP_CALL( retcode );
356 SCIPdialogMessage(scip, NULL,
357 "Matrix file is written to %s. \n ", outname);
370 SCIP_DIALOGHDLR* dialoghdlr,
371 SCIP_DIALOG** nextdialog
378 const char* nameinfix =
"report_";
379 const char* extension =
"tex";
380 char ppath[SCIP_MAXSTRLEN];
381 char outname[SCIP_MAXSTRLEN];
387 ndecswritten = ndecs;
391 SCIPdialogMessage(scip, NULL,
"No decomposition to write, please read or detect one first.\n");
392 SCIPdialoghdlrClearBuffer(dialoghdlr);
398 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter a directory: ", &dirname, &endoffile) );
404 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, dirname, TRUE) );
407 if( dirname[0] ==
'\0' )
409 strcpy(dirname,
"report/");
413 if( dirname != NULL )
415 mkdir(dirname, S_IRWXU | S_IRWXG | S_IRWXO);
419 SCIPsnprintf(ppath, SCIP_MAXSTRLEN,
"%s", SCIPgetProbName(scip));
420 SCIPsplitFilename(ppath, NULL, &pname, NULL, NULL);
422 (void) SCIPsnprintf(outname, SCIP_MAXSTRLEN,
"%s/%s%s.%s", dirname, nameinfix, pname, extension);
425 file = fopen(outname,
"w");
428 SCIPdialogMessage(scip, NULL,
"error creating report file\n");
429 SCIPdialoghdlrClearBuffer(dialoghdlr);
433 SCIPallocBlockMemoryArray(scip, &decids, ndecs);
439 SCIPfreeBlockMemoryArray(scip, &decids, ndecs);
442 SCIPdialogMessage(scip, NULL,
443 "Report on %d decompositions is written to file '%s'.\nFor compilation read the README in the same folder.\n", ndecswritten, outname);
451 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
455 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
464 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
468 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
480 char tempstr[SCIP_MAXSTRLEN];
485 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
487 (void) SCIPsnprintf(tempstr, SCIP_MAXSTRLEN,
"Please type the block number candidates you want to add (as white space separated list): ");
488 SCIP_CALL( SCIPdialoghdlrGetLine(dialoghdlr, dialog, (
char*)tempstr, &blocknrchar, &endoffile) );
490 token = strtok(blocknrchar,
" ");
494 blocknr = atoi( token );
497 SCIPdialogMessage(scip, NULL,
498 "%s is not a compatible number; no new block number candidate added. \n", token);
503 token = strtok(NULL,
" ");
506 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
515 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
517 if( SCIPgetStage(scip) < SCIP_STAGE_PROBLEM )
518 SCIPdialogMessage(scip, NULL,
"no problem exists\n");
519 else if( SCIPgetStage(scip) < SCIP_STAGE_PRESOLVED )
520 SCIPwriteOrigProblem(scip, NULL,
"dec", FALSE);
522 SCIPwriteTransProblem(scip, NULL,
"dec", FALSE);
524 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
532 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
536 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
549 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
550 if( SCIPgetStage(scip) == SCIP_STAGE_SOLVING || SCIPgetStage(scip) == SCIP_STAGE_SOLVED )
554 SCIPmessageFPrintInfo(SCIPgetMessagehdlr(scip), NULL,
"No Dantzig-Wolfe reformulation applied. No decomposition statistics available.\n");
555 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
559 SCIPmessageFPrintInfo(SCIPgetMessagehdlr(scip), NULL,
"\nAdditional statistics:\n");
563 SCIPmessageFPrintInfo(SCIPgetMessagehdlr(
GCGgetMasterprob(scip)), NULL,
"\n");
570 SCIPmessageFPrintInfo(SCIPgetMessagehdlr(
GCGgetMasterprob(scip)), NULL,
"\n");
578 SCIPdialogMessage(scip, NULL,
"Problem needs to solved first for additional statistics");
580 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
589 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
592 SCIPdialogMessage(scip, NULL,
"\n");
594 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
602 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
605 SCIPdialogMessage(scip, NULL,
"\n");
607 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
615 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
619 SCIPverbMessage(scip, SCIP_VERBLEVEL_DIALOG, NULL,
"switching to the master problem shell is only possible before the solving process is started\n");
621 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
626 SCIPverbMessage(scip, SCIP_VERBLEVEL_DIALOG, NULL,
"switching to the master problem...\n");
628 SCIPverbMessage(scip, SCIP_VERBLEVEL_DIALOG, NULL,
"back in the original problem...\n");
630 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
643 assert(masterprob != NULL);
645 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter filename: ", &filename, &endoffile) );
652 if( filename[0] !=
'\0' )
654 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, filename, TRUE) );
656 if( SCIPfileExists(filename) )
658 SCIP_CALL( SCIPreadParams(masterprob, filename) );
659 SCIPdialogMessage(scip, NULL,
"loaded master parameter file <%s>\n", filename);
663 SCIPdialogMessage(scip, NULL,
"file <%s> not found\n", filename);
664 SCIPdialoghdlrClearBuffer(dialoghdlr);
668 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
676 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
678 SCIPdialogMessage(scip, NULL,
"\n");
679 switch( SCIPgetStage(scip) )
681 case SCIP_STAGE_INIT:
682 SCIPdialogMessage(scip, NULL,
"no problem exists\n");
685 case SCIP_STAGE_PROBLEM:
689 case SCIP_STAGE_TRANSFORMED:
690 SCIPdialogMessage(scip, NULL,
"problem is already transformed\n");
693 case SCIP_STAGE_TRANSFORMING:
694 case SCIP_STAGE_INITPRESOLVE:
695 case SCIP_STAGE_PRESOLVING:
696 case SCIP_STAGE_PRESOLVED:
697 case SCIP_STAGE_EXITPRESOLVE:
698 case SCIP_STAGE_INITSOLVE:
699 case SCIP_STAGE_SOLVING:
700 case SCIP_STAGE_SOLVED:
701 case SCIP_STAGE_EXITSOLVE:
702 case SCIP_STAGE_FREETRANS:
703 case SCIP_STAGE_FREE:
705 SCIPerrorMessage(
"invalid SCIP stage\n");
706 return SCIP_INVALIDCALL;
708 SCIPdialogMessage(scip, NULL,
"\n");
710 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
719 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
721 SCIPdialogMessage(scip, NULL,
"\n");
722 switch( SCIPgetStage(scip) )
724 case SCIP_STAGE_INIT:
725 SCIPdialogMessage(scip, NULL,
"no problem exists\n");
728 case SCIP_STAGE_PROBLEM:
729 case SCIP_STAGE_TRANSFORMED:
730 case SCIP_STAGE_PRESOLVING:
734 case SCIP_STAGE_PRESOLVED:
735 case SCIP_STAGE_SOLVING:
736 SCIPdialogMessage(scip, NULL,
"problem is already presolved\n");
739 case SCIP_STAGE_SOLVED:
740 SCIPdialogMessage(scip, NULL,
"problem is already solved\n");
743 case SCIP_STAGE_TRANSFORMING:
744 case SCIP_STAGE_INITPRESOLVE:
745 case SCIP_STAGE_EXITPRESOLVE:
746 case SCIP_STAGE_INITSOLVE:
747 case SCIP_STAGE_EXITSOLVE:
748 case SCIP_STAGE_FREETRANS:
749 case SCIP_STAGE_FREE:
751 SCIPerrorMessage(
"invalid SCIP stage\n");
752 return SCIP_INVALIDCALL;
754 SCIPdialogMessage(scip, NULL,
"\n");
756 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
765 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
767 SCIPdialogMessage(scip, NULL,
"\n");
768 switch( SCIPgetStage(scip) )
770 case SCIP_STAGE_INIT:
771 SCIPdialogMessage(scip, NULL,
"no problem exists\n");
774 case SCIP_STAGE_PROBLEM:
775 case SCIP_STAGE_TRANSFORMED:
776 case SCIP_STAGE_PRESOLVING:
777 case SCIP_STAGE_PRESOLVED:
781 case SCIP_STAGE_SOLVING:
782 case SCIP_STAGE_SOLVED:
783 case SCIP_STAGE_TRANSFORMING:
784 case SCIP_STAGE_INITPRESOLVE:
785 case SCIP_STAGE_EXITPRESOLVE:
786 case SCIP_STAGE_INITSOLVE:
787 case SCIP_STAGE_EXITSOLVE:
788 case SCIP_STAGE_FREETRANS:
789 case SCIP_STAGE_FREE:
791 SCIPerrorMessage(
"invalid SCIP stage\n");
792 return SCIP_INVALIDCALL;
794 SCIPdialogMessage(scip, NULL,
"\n");
796 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
805 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
809 SCIPdialogMessage(scip, NULL,
"\n");
811 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
820 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
822 SCIPdialogMessage(scip, NULL,
"\n");
823 switch( SCIPgetStage(scip) )
825 case SCIP_STAGE_INIT:
826 SCIPdialogMessage(scip, NULL,
"no problem exists\n");
829 case SCIP_STAGE_PROBLEM:
830 case SCIP_STAGE_TRANSFORMED:
831 case SCIP_STAGE_PRESOLVING:
832 case SCIP_STAGE_PRESOLVED:
833 case SCIP_STAGE_SOLVING:
837 case SCIP_STAGE_SOLVED:
838 SCIPdialogMessage(scip, NULL,
"problem is already solved\n");
841 case SCIP_STAGE_TRANSFORMING:
842 case SCIP_STAGE_INITPRESOLVE:
843 case SCIP_STAGE_EXITPRESOLVE:
844 case SCIP_STAGE_INITSOLVE:
845 case SCIP_STAGE_EXITSOLVE:
846 case SCIP_STAGE_FREETRANS:
847 case SCIP_STAGE_FREE:
849 SCIPerrorMessage(
"invalid SCIP stage\n");
850 return SCIP_INVALIDCALL;
852 SCIPdialogMessage(scip, NULL,
"\n");
854 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
864 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
866 if( SCIPgetStage(scip) >= SCIP_STAGE_PROBLEM )
871 SCIPdialogMessage(scip, NULL,
"no problem available\n");
873 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
883 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
885 if( SCIPgetStage(scip) >= SCIP_STAGE_PROBLEM )
890 SCIPdialogMessage(scip, NULL,
"no problem available\n");
892 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
902 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
904 if( SCIPgetStage(scip) >= SCIP_STAGE_PROBLEM )
906 SCIP_CALL(
writeMatrix(scip, dialog, dialoghdlr, nextdialog, TRUE) );
909 SCIPdialogMessage(scip, NULL,
"No problem available.\n");
911 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
920 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
922 if( SCIPgetStage(scip) >= SCIP_STAGE_PRESOLVED )
924 SCIP_CALL(
writeMatrix(scip, dialog, dialoghdlr, nextdialog, FALSE) );
927 SCIPdialogMessage(scip, NULL,
"No transformed problem available.\n");
929 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
940 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
942 if( SCIPgetStage(scip) >= SCIP_STAGE_PROBLEM )
947 SCIPdialogMessage(scip, NULL,
"no problem available\n");
949 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
961 SCIPdialogMessage(scip, NULL,
"\n");
963 SCIP_CALL( SCIPdialoghdlrGetWord(dialoghdlr, dialog,
"enter filename: ", &filename, &endoffile) );
969 if( filename[0] !=
'\0' )
973 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, filename, TRUE) );
975 file = fopen(filename,
"w");
978 SCIPdialogMessage(scip, NULL,
"error creating file <%s>\n", filename);
979 SCIPprintSysError(filename);
980 SCIPdialoghdlrClearBuffer(dialoghdlr);
984 SCIP_RETCODE retcode;
986 if( retcode != SCIP_OKAY )
989 SCIP_CALL( retcode );
993 SCIPdialogMessage(scip, NULL,
"written statistics to file <%s>\n", filename);
999 SCIPdialogMessage(scip, NULL,
"\n");
1001 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1008 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1010 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1020 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1022 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1032 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1034 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1044 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1046 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1056 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1058 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1060 SCIP_CALL( SCIPsetHeuristics(scip, SCIP_PARAMSETTING_AGGRESSIVE, FALSE) );
1069 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1071 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1073 SCIP_CALL( SCIPsetHeuristics(scip, SCIP_PARAMSETTING_OFF, FALSE) );
1082 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1084 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1086 SCIP_CALL( SCIPsetHeuristics(scip, SCIP_PARAMSETTING_FAST, FALSE) );
1095 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1097 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1107 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1109 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1119 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1121 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1131 SCIP_CALL( SCIPdialoghdlrAddHistory(dialoghdlr, dialog, NULL, FALSE) );
1133 *nextdialog = SCIPdialoghdlrGetRoot(dialoghdlr);
1147 SCIP_CALL( SCIPincludeDialog(scip, root, NULL, SCIPdialogExecMenuLazy, NULL, NULL,
1148 "GCG",
"GCG's main menu", TRUE, NULL) );
1150 SCIP_CALL( SCIPsetRootDialog(scip, *root) );
1151 SCIP_CALL( SCIPreleaseDialog(scip, root) );
1152 *root = SCIPgetRootDialog(scip);
1163 SCIP_DIALOG** submenu
1166 if( !SCIPdialogHasEntry(root,
"emphasis") )
1168 SCIP_CALL( SCIPincludeDialog(scip, submenu,
1169 NULL, SCIPdialogExecMenu, NULL, NULL,
1170 "emphasis",
"predefined parameter settings", TRUE, NULL) );
1171 SCIP_CALL( SCIPaddDialogEntry(scip, root, *submenu) );
1172 SCIP_CALL( SCIPreleaseDialog(scip, submenu) );
1174 else if( SCIPdialogFindEntry(root,
"emphasis", submenu) != 1 )
1176 SCIPerrorMessage(
"emphasis sub menu not found\n");
1177 return SCIP_PLUGINNOTFOUND;
1180 assert(*submenu != NULL);
1192 SCIP_DIALOG* submenu;
1193 SCIP_DIALOG* dialog;
1194 SCIP_DIALOG* setmenu;
1195 SCIP_DIALOG* emphasismenu;
1196 SCIP_DIALOG* classimenu;
1197 SCIP_DIALOG* blocknrmenu;
1200 root = SCIPgetRootDialog(scip);
1207 if( !SCIPdialogHasEntry(root,
"display") )
1209 SCIP_CALL( SCIPincludeDialog(scip, &submenu, NULL, SCIPdialogExecMenu, NULL, NULL,
1210 "display",
"display information", TRUE, NULL) );
1211 SCIP_CALL( SCIPaddDialogEntry(scip, root, submenu) );
1212 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1214 if( SCIPdialogFindEntry(root,
"display", &submenu) != 1 )
1216 SCIPerrorMessage(
"display sub menu not found\n");
1217 return SCIP_PLUGINNOTFOUND;
1221 if( !SCIPdialogHasEntry(submenu,
"statistics") )
1223 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecDisplayStatistics, NULL, NULL,
1224 "statistics",
"display problem and optimization statistics", FALSE, NULL) );
1225 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1226 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1229 if( !SCIPdialogHasEntry(submenu,
"detectionstatistics") )
1231 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecPrintDetectionInformation, NULL, NULL,
1232 "detectionstatistics",
"display complete detection information", FALSE, NULL) );
1233 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1234 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1238 if( !SCIPdialogHasEntry(submenu,
"decomposition") )
1240 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecDisplayDecomposition, NULL, NULL,
1241 "decomposition",
"display decomposition", FALSE, NULL) );
1242 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1243 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1247 if( !SCIPdialogHasEntry(submenu,
"blocknumbercandidates") )
1249 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecDisplayNBlockcandidates, NULL, NULL,
1250 "blocknumbercandidates",
"display number of blocks candidates ", FALSE, NULL) );
1251 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1252 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1256 if( !SCIPdialogHasEntry(submenu,
"additionalstatistics") )
1258 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecDisplayAdditionalStatistics, NULL, NULL,
1259 "additionalstatistics",
"display additional solving statistics", FALSE, NULL) );
1260 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1261 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1265 if( !SCIPdialogHasEntry(submenu,
"solvers") )
1267 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecDisplaySolvers, NULL, NULL,
1268 "solvers",
"display available pricing problem solvers", FALSE, NULL) );
1269 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1270 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1274 if( !SCIPdialogHasEntry(root,
"master") )
1276 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecSetMaster, NULL, NULL,
1277 "master",
"switch to the interactive shell of the master problem", FALSE, NULL) );
1278 SCIP_CALL( SCIPaddDialogEntry(scip, root, dialog) );
1279 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1283 if( !SCIPdialogHasEntry(root,
"transform") )
1285 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1287 GCGdialogExecTransform, NULL, NULL,
1288 "transform",
"transform the problem", FALSE, NULL) );
1289 SCIP_CALL( SCIPaddDialogEntry(scip, root, dialog) );
1290 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1294 if( !SCIPdialogHasEntry(root,
"presolve") )
1296 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1298 GCGdialogExecPresolve, NULL, NULL,
1299 "presolve",
"presolve the problem", FALSE, NULL) );
1300 SCIP_CALL( SCIPaddDialogEntry(scip, root, dialog) );
1301 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1305 if( !SCIPdialogHasEntry(root,
"optimize") )
1307 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1309 GCGdialogExecOptimize, NULL, NULL,
1310 "optimize",
"solve the problem", FALSE, NULL) );
1311 SCIP_CALL( SCIPaddDialogEntry(scip, root, dialog) );
1312 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1316 if( !SCIPdialogHasEntry(root,
"explore") )
1318 SCIP_CALL( SCIPincludeDialog(scip, &submenu,
1320 GCGdialogExecSelect, NULL, NULL,
1321 "explore",
"explore decompositions", FALSE, NULL) );
1322 SCIP_CALL( SCIPaddDialogEntry(scip, root, submenu) );
1323 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1327 if( !SCIPdialogHasEntry(root,
"detect") )
1329 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecDetect, NULL, NULL,
1330 "detect",
"detect structure", FALSE, NULL) );
1331 SCIP_CALL( SCIPaddDialogEntry(scip, root, dialog) );
1332 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1336 if( !SCIPdialogHasEntry(root,
"quit") )
1338 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1340 SCIPdialogExecQuit, NULL, NULL,
1341 "quit",
"leave GCG", FALSE, NULL) );
1342 SCIP_CALL( SCIPaddDialogEntry(scip, root, dialog) );
1343 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1347 if( !SCIPdialogHasEntry(root,
"set") )
1349 SCIP_CALL( SCIPincludeDialog(scip, &submenu,
1350 NULL, SCIPdialogExecMenu, NULL, NULL,
1351 "set",
"load/save/change parameters", TRUE, NULL) );
1352 SCIP_CALL( SCIPaddDialogEntry(scip, root, submenu) );
1353 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1355 if( SCIPdialogFindEntry(root,
"set", &setmenu) != 1 )
1357 SCIPerrorMessage(
"set sub menu not found\n");
1358 return SCIP_PLUGINNOTFOUND;
1362 if( !SCIPdialogHasEntry(setmenu,
"loadmaster") )
1364 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1366 GCGdialogExecSetLoadmaster, NULL, NULL,
1367 "loadmaster",
"load parameter settings for master problem from a file", FALSE, NULL) );
1368 SCIP_CALL( SCIPaddDialogEntry(scip, setmenu, dialog) );
1369 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1373 if( !SCIPdialogHasEntry(setmenu,
"detection") )
1375 SCIP_CALL( SCIPincludeDialog(scip, &submenu,
1377 SCIPdialogExecMenu, NULL, NULL,
1378 "detection",
"change parameters for detection in general", TRUE, NULL) );
1379 SCIP_CALL( SCIPaddDialogEntry(scip, setmenu, submenu) );
1380 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1382 if( SCIPdialogFindEntry(setmenu,
"detection", &submenu) != 1 )
1384 SCIPerrorMessage(
"detection sub menu not found\n");
1385 return SCIP_PLUGINNOTFOUND;
1388 if( !SCIPdialogHasEntry(submenu,
"classification") )
1390 SCIP_CALL( SCIPincludeDialog(scip, &classimenu,
1391 NULL, SCIPdialogExecMenu, NULL, NULL,
1392 "classification",
"classification settings", TRUE, NULL) );
1393 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, classimenu) );
1394 SCIP_CALL( SCIPreleaseDialog(scip, &classimenu) );
1396 else if( SCIPdialogFindEntry(submenu,
"classification", &classimenu) != 1 )
1398 SCIPerrorMessage(
"classification sub menu not found\n");
1399 return SCIP_PLUGINNOTFOUND;
1402 if( !SCIPdialogHasEntry(submenu,
"blocknrcandidates") )
1404 SCIP_CALL( SCIPincludeDialog(scip, &blocknrmenu,
1405 NULL, SCIPdialogExecMenu, NULL, NULL,
1406 "blocknrcandidates",
"set block number and related parameter", TRUE, NULL) );
1407 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, blocknrmenu) );
1408 SCIP_CALL( SCIPreleaseDialog(scip, &blocknrmenu) );
1410 else if( SCIPdialogFindEntry(submenu,
"blocknrcandidates", &blocknrmenu) != 1 )
1412 SCIPerrorMessage(
"blocknrcandidates sub menu not found\n");
1413 return SCIP_PLUGINNOTFOUND;
1418 assert(emphasismenu != NULL);
1421 if( !SCIPdialogHasEntry(emphasismenu,
"aggressive") )
1423 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1424 NULL, SCIPdialogExecSetDetectorsAggressive, NULL, NULL,
1425 "aggressive",
"sets detection <aggressive>", FALSE, NULL) );
1426 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1427 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1431 if( !SCIPdialogHasEntry(emphasismenu,
"default") )
1433 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1434 NULL, SCIPdialogExecSetDetectorsDefault, NULL, NULL,
1435 "default",
"sets detection <default>", FALSE, NULL) );
1436 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1437 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1441 if( !SCIPdialogHasEntry(emphasismenu,
"fast") )
1443 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1444 NULL, SCIPdialogExecSetDetectorsFast, NULL, NULL,
1445 "fast",
"sets detection <fast>", FALSE, NULL) );
1446 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1447 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1451 if( !SCIPdialogHasEntry(emphasismenu,
"off") )
1453 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1454 NULL, SCIPdialogExecSetDetectorsOff, NULL, NULL,
1455 "off",
"turns <off> all detectors", FALSE, NULL) );
1456 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1457 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1461 if( !SCIPdialogHasEntry(setmenu,
"heuristics") )
1463 SCIP_CALL( SCIPincludeDialog(scip, &submenu,
1465 SCIPdialogExecMenu, NULL, NULL,
1466 "heuristics",
"change parameters for primal heuristics", TRUE, NULL) );
1467 SCIP_CALL( SCIPaddDialogEntry(scip, setmenu, submenu) );
1468 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1470 if( SCIPdialogFindEntry(setmenu,
"heuristics", &submenu) != 1 )
1472 SCIPerrorMessage(
"heuristics sub menu not found\n");
1473 return SCIP_PLUGINNOTFOUND;
1478 assert(emphasismenu != NULL);
1481 if( !SCIPdialogHasEntry(emphasismenu,
"aggressive") )
1483 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1484 NULL, GCGdialogExecSetHeuristicsAggressive, NULL, NULL,
1485 "aggressive",
"sets heuristics <aggressive>", FALSE, NULL) );
1486 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1487 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1491 if( !SCIPdialogHasEntry(emphasismenu,
"fast") )
1493 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1494 NULL, GCGdialogExecSetHeuristicsFast, NULL, NULL,
1495 "fast",
"sets heuristics <fast>", FALSE, NULL) );
1496 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1497 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1501 if( !SCIPdialogHasEntry(emphasismenu,
"off") )
1503 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1504 NULL, GCGdialogExecSetHeuristicsOff, NULL, NULL,
1505 "off",
"turns <off> all heuristics", FALSE, NULL) );
1506 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1507 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1511 if( !SCIPdialogHasEntry(setmenu,
"sepa") )
1513 SCIP_CALL( SCIPincludeDialog(scip, &submenu,
1515 SCIPdialogExecMenu, NULL, NULL,
1516 "sepa",
"change parameters for gcg separators", TRUE, NULL) );
1517 SCIP_CALL( SCIPaddDialogEntry(scip, setmenu, submenu) );
1518 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1520 if( SCIPdialogFindEntry(setmenu,
"sepa", &submenu) != 1 )
1522 SCIPerrorMessage(
"gcg separators sub menu not found\n");
1523 return SCIP_PLUGINNOTFOUND;
1528 assert(emphasismenu != NULL);
1531 if( !SCIPdialogHasEntry(emphasismenu,
"default") )
1533 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1534 NULL, GCGdialogExecSetSeparatorsDefault, NULL, NULL,
1535 "default",
"sets separators <default>", FALSE, NULL) );
1536 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1537 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1541 if( !SCIPdialogHasEntry(emphasismenu,
"aggressive") )
1543 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1544 NULL, GCGdialogExecSetSeparatorsAggressive, NULL, NULL,
1545 "aggressive",
"sets separators <aggressive>", FALSE, NULL) );
1546 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1547 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1551 if( !SCIPdialogHasEntry(emphasismenu,
"fast") )
1553 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1554 NULL, GCGdialogExecSetSeparatorsFast, NULL, NULL,
1555 "fast",
"sets separators <fast>", FALSE, NULL) );
1556 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1557 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1561 if( !SCIPdialogHasEntry(emphasismenu,
"off") )
1563 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1564 NULL, GCGdialogExecSetSeparatorsOff, NULL, NULL,
1565 "off",
"turns <off> all separators", FALSE, NULL) );
1566 SCIP_CALL( SCIPaddDialogEntry(scip, emphasismenu, dialog) );
1567 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1571 if( !SCIPdialogHasEntry(root,
"write") )
1573 SCIP_CALL( SCIPincludeDialog(scip, &submenu, NULL, SCIPdialogExecMenu, NULL, NULL,
1574 "write",
"write information to file", TRUE, NULL) );
1575 SCIP_CALL( SCIPaddDialogEntry(scip, root, submenu) );
1576 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1578 if( SCIPdialogFindEntry(root,
"write", &submenu) != 1 )
1580 SCIPerrorMessage(
"write sub menu not found\n");
1581 return SCIP_PLUGINNOTFOUND;
1585 if( !SCIPdialogHasEntry(submenu,
"alldecompositions") )
1587 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecWriteAllDecompositions, NULL, NULL,
1588 "alldecompositions",
1589 "write all known decompositions to files (format is given by file extension, e.g. {dec,blk,ref,gp,tex})",
1591 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1592 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1596 if( !SCIPdialogHasEntry(submenu,
"selected") )
1598 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecWriteSelectedDecompositions, NULL, NULL,
1600 "write selected (in \"explore\" submenu) decompositions to files (format is given by file extension, e.g. {dec,blk,ref,gp,tex})",
1602 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1603 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1607 if( !SCIPdialogHasEntry(submenu,
"matrix") )
1609 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecWriteOrigMatrix, NULL, NULL,
1611 "write gnuplot file showing the nonzero structure of the original matrix",
1613 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1614 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1618 if( !SCIPdialogHasEntry(submenu,
"transmatrix") )
1620 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecWriteTransMatrix, NULL, NULL,
1622 "write gnuplot file showing the nonzero structure of the transformed (presolved) matrix",
1624 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1625 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1629 if( !SCIPdialogHasEntry(submenu,
"report") )
1631 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecReportAllDecompositions, NULL, NULL,
1633 "write report of all finished decompositions to LaTeX format",
1635 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1636 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1640 if( !SCIPdialogHasEntry(submenu,
"statistics") )
1642 SCIP_CALL( SCIPincludeDialog(scip, &dialog, NULL, GCGdialogExecWriteStatistics, NULL, NULL,
1644 "write statistics to file",
1646 SCIP_CALL( SCIPaddDialogEntry(scip, submenu, dialog) );
1647 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1651 if( !SCIPdialogHasEntry(root,
"change") )
1653 SCIP_CALL( SCIPincludeDialog(scip, &submenu,
1655 SCIPdialogExecMenu, NULL, NULL,
1656 "change",
"change the problem", TRUE, NULL) );
1657 SCIP_CALL( SCIPaddDialogEntry(scip, root, submenu) );
1658 SCIP_CALL( SCIPreleaseDialog(scip, &submenu) );
1660 if( SCIPdialogFindEntry(root,
"change", &submenu) != 1 )
1662 SCIPerrorMessage(
"change sub menu not found\n");
1663 return SCIP_PLUGINNOTFOUND;
1666 if( SCIPdialogFindEntry(root,
"set", &submenu) != 1 )
1668 SCIPerrorMessage(
"set sub menu not found\n");
1669 return SCIP_PLUGINNOTFOUND;
1671 if( SCIPdialogFindEntry(submenu,
"detection", &submenu) != 1 )
1673 SCIPerrorMessage(
"set/detection sub menu not found\n");
1674 return SCIP_PLUGINNOTFOUND;
1676 if( SCIPdialogFindEntry(submenu,
"blocknrcandidates", &blocknrmenu) != 1 )
1678 SCIPerrorMessage(
"set/detection/blocknrcandidates sub menu not found\n");
1679 return SCIP_PLUGINNOTFOUND;
1683 if( !SCIPdialogHasEntry(blocknrmenu,
"addblocknr") )
1685 SCIP_CALL( SCIPincludeDialog(scip, &dialog,
1687 GCGdialogExecChangeAddBlocknr, NULL, NULL,
1688 "addblocknr",
"add block number candidates (as white space separated list)", FALSE, NULL) );
1689 SCIP_CALL( SCIPaddDialogEntry(scip, blocknrmenu, dialog) );
1690 SCIP_CALL( SCIPreleaseDialog(scip, &dialog) );
1693 SCIP_CALL( SCIPincludeDialogDefaultBasic(scip) );