Home
IBM ILOG Solver Debugger User's Manual
Contents
1. Exp th ol black IntExp yLowerLeft ntExp rectHeight lcIntExp yLowerLeft cIntExp rectHeight Exp th cIntExp th makeFilledLabel IlcIntExp x IlcIntExp y const chat str cons makeFilledPolygon IlcIntVarArray x Il const char col IL IlcIntExp fillRule t char col cIntVarArray y cIntExp th IBM ILOG SOLVER DEBUGGER USER S MANUAL Constructors void makeFilledRectangle IlcInt E xLowerLeft IlcIntE yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight const char col IlcIntExp th void makeFilledRoundedRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcntExp rectHeight IlcFloatExp rc const char col IlcIntExp th 9 tg j ct ct ct void makeGrid IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp cols IlcIntExp rows ELET p th void makeLabel IlcI void makeLine IlcIn Exp x IlcIntExp y const char str xp xl IlcIntExp yl E pd Ed cf Er Dd Fl x m cba ct ct IlcIntExp x2 IlcIntExp y2 IlcIntExp th const char col black int makeNewGraphicObject void makePolyline IlcIntVarArray x IlcIntVarArray y IlcIntExp th void makeRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntEx
2. When using the basic filter level of this constraint Solver guarantees that at any computation point the specified variables do not have the values of the already assigned variables inside their domain When using the extended filter level Solver reasons on the domains instead of the values and guarantees that for each value in the domain of any given variable there exist values in the domains of the remaining variables such that the constraint is satisfied Using the Search Tree Visualize the Search Trees corresponding to the basic and extended filter levels The following figure represents the Search Trees corresponding to the two filter levels 2f aj xj 4 Choice Points 32 Failures 30 5 Sok Choice Points 15 Falues 13 gt Basic filter level Extended filter level NG Ween Me de In the Search Tree the extended level enforces a stronger pruning than the basic one while the basic filter level produces a bigger tree with additional right subtrees These right subtrees have only failure leaves which is a sign of lack of propagation By setting the filter level to the extended level these right subtrees are pruned IBM ILOG SOLVER DEBUGGER USER S MANUAL Using the Christmas Tree The Christmas Tree provides a picture of the cost and the efficiency of the extended propagation Compare the number of propagation events in the first right subtree located in the frame in Figure 1
3. 142 86 0 IcIntExpE ventH andlerConstraintl difference 5 C 82 73 0 Izi You can paste the matrix from the Constraint Profiler to Microsoft Excel and make your own statistics For instance summing the propagation events gives the results shown below The table contains the statistics on the number of events for the debuggolomb problem Filter Level Total Number of Events Basic 3534 Intermediate 2726 Extended 2790 IBM ILOG SOLVER DEBUGGER USER S MANUAL 43 44 IBM ILOG SOLVER DEBUGGER USER S MANUAL Solver Debugger API This section contains the C API for the IBM ILOG Solver Debugger IBM ILOG SOLVER DEBUGGER USER S MANUAL 45 46 IBM ILOG SOLVER DEBUGGER USER S MANUAL lic AddOnDebugger Category C class Description The class 11cAddOnDebugger is the base class for the Debugger classes specialized in debugging an application based on an add on for IBM ILOG Solver Include File lt ilsolver addondebugger h gt Synopsis class IlcAddOnDebugger public IlcAddOnDebugger IlcAddOnDebuggerI imp1 0 IloBool displayResult const IlcAddOnDebuggerI getImpl const endif Constructor IlcAddOnDebugger IlcAddOnDebuggerI impl 0 Creates a new handle class on the same implementation object Member Functions IloBool displayResult const Displays the result graphically In the current implementation by default this member function is automatically
4. Current Node Inspector To use the Current Node Inspector docked panel proceed as follows 1 Select Stepping in Model from the Debug menu to stop at the beginning of the execution or click on Break to interrupt the execution 2 Click on the Inspect Current Node button in the debugging tool bar 3 The Inspect Current Node appears as a docked panel You can monitor the decisions taken online Node Inspector Dialog Box Right click on a node to display the Node Inspector dialog box In this dialog box information on decisions taken at a node is only available when the exploration of the next node begins Propagation Spy The Propagation Spy does not only contain the propagation events it also contains the decision events Note In the current implementation the monitored decisions cannot be distinguished from pushed constraints and optimization events For information on how to use the Propagation Spy see Using the Propagation Spy Decision Stack The Decision Stack is a panel that lists the decisions made in the current branch starting from the root node When you double click on a node a green arrow points to the node you selected and the Decision Stack docked panel displays the decisions taken in the branch starting from the root to the selected node The description of the decision taken at a node is only available when the exploration of the next node begins The Decision Stack indicates the depth of the node st
5. Monitoring Decisions eee teen I tr 16 Monitoring Solution Restoring 0 0 cece eee eee eh 19 Monitoring Restat p tence NA NG Naa Beet eae HANNA b sce dike a ded dos 19 Monitoring Local Search 2 27x han RENE NIRE iU EM EE MahaL 19 Monitoring Nested 68 en 20 Visualizing Propagation eee Rh hm n 21 ine Ae olen dul dt wate dhe eade Mews awe hele a alowed 21 Using the Propagation Spy m 21 Tracing the Initial Propagation 2 2 ttt 23 Tracing the Propagation at a Specific Node 1 2 2 0 cee 23 Visualizing Variable Domains III 24 Visualizing Activity Domains Scheduler Specific llle 27 Combining Search Tree Visualization and Propagation Information 29 Creating the Christmas Tree 0 0 eee rn 29 Interpreting the Christmas Tree aanne 30 Using the Constraint Profiler eee eee 30 Using the Drawing Board 0 cece eee eee eee nm nnn 31 Basic Use of the Drawing Board 2 32 Advanced Use of the Drawing tenes 34 Improving your Application eens 38 Analyzing Right Subtrees cece eee
6. IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat r const char IloInt th drawGrid IloInt id IloInt xLowerLeft C ecol IloInt yLowerLeft TloInt rectWidth IloInt rectHeight IloInt cols IloInt rows Il drawLabel IloInt id IloInt x IloInt drawLine IloInt id IloInt x1 IloInt IloInt x2 IloInt y2 IloInt const char col black drawPolyline IloInt id IloInt x I IloInt count IloInt th drawRectangle IloInt id IloInt xLowe drawRoundedRectangle IloInt oInt th y const char str yl thy loInt yl rLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt th id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat rc Ilo eraseGraphic IloInt id makeArc IlcIntExp xLowerLeft IlcIn Int th Exp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloat IlcFloat makeArrow IlcInt startAngle angleRange IlcInt xl IlcIntExp yl IlcIntl x2 IlcIntExp y2 IlcInt th const char c makeEllipse IlcIntExp xLowerLeft Ilc IlcIntExp rectWidth IlcI IlcIntExp th makeFilledArc IlcIntExp xLowerLeft I IlcIntExp rectWidth I1 IlcFloatExp startAngle IlcFloatExp angleRange const char col IlcInt makeFilledEllipse IlcIntExp xLowerL IlcIntExp yLowerL IlcIntExp rectWidth IlcIntExp rectHeigh const char col IL E Ed
7. Min blue rectangle and the Start Max End Max red rectangle may not always be the same size Start End Min Min Overlapped cam Time Window art End Max Max As soon as end min passes start max the time window between these two dates is the surely overlapped time window Start End Min Min l l l Start End Max Max The activity is totally instantiated When start min start maxandend min end max the activity schedule is totally determined The order in which the activities appear in the Activity Domains window is the same as the order of the calls made to the member function IlcSchedulerDebugger registerActivity 28 IBM ILOG SOLVER DEBUGGER USER S MANUAL Combining Search Tree Visualization and Propagation Information The representation of a tree combining search information and statistics on propagation events looks like a tree decorated with big and small balls For this reason it is called the Christmas Tree This section deals with Creating the Christmas Tree Interpreting the Christmas Tree Creating the Christmas Tree You can change the representation of the Search Tree to visualize propagation statistics by changing the color and size of the nodes To do so 1 Right click in the search tree background on a node A context sensitive menu appears Select the Tree Inspector menu item 2 Select Type and Domain Reduction for Node color and Propagation Events for Node si
8. Scheduler applications described in Visualizing Activity Domains Scheduler Specific Events Events can take place during the Initial Propagation during the Initial Goal before the first OR inside a Search Tree node Events can be triggered as a direct consequence of aconstraint propagation triggered by a demon becoming active aconstraint propagation coming from a pushed constraint adecision taken during the search an optimization event coming from the minimization or maximization of an objective function Using the Propagation Spy The Propagation Spy is a means of displaying the trace of events and the result of the propagation in terms of domain reduction The Propagation Spy provides a graphical representation of events trapped by the 11cTrace and IlcSchedulerTrace mechanisms See the IBM ILOG Solver and IBM ILOG Scheduler documentation for details on these two classes The Propagation Spy is a special hierarchical sheet containing a tree hierarchy in the first column Each column contains the impact on one variable Time is represented vertically from top to bottom The textual description of the events is displayed in the first column When double clicking on an event line the columns are rearranged so that a variable of interest is displayed first IBM ILOG SOLVER DEBUGGER USER S MANUAL 21 22 The figure below shows what the tracing of the Initial Propagation for the Pheasants and Rabbits p
9. Variable Domains You can set visualization options to follow the domains of the variables during the execution in the Output window located at the bottom of the Solver Debugger GUI Setting Visualization Options To follow the domains of the variables you can put graphical demons on your variables by passing a fourth argument to the member function registerVariable debugger registerVariable ilovars IloTrue IloTrue IlcVisualizeDomain IlcVisualizeInterval IlcVisualizeValue IlcVisualizeBoolean queens IBM ILOG SOLVER DEBUGGER USER S MANUAL To visualize the domain of an integer variable or an array of integer variables use IlcVisualizeDomain To visualize the lower and upper bounds of a variable or an array of variables use IlcVisualizeInterval To visualize the value of a variable or an array of variables use IlcVisualizeValue To display colored squares for Boolean variables integer variables containing 0 in their domain use I1cVisualizeBoolean To disable visualization use IlcVisualizeDisabled Visualization is disabled by default These displays are available as notebook pages in the Output window of the Solver Debugger GUI Note You may miss some changes if a failure occurs at a node before the graphical demon is executed Visualizing Variable Domains in the Output Window The following variable visualization examples are taken from the debugnqueen problem To visualize the domains of a
10. a new nonbacktrackable 2D graphic object makePolyline IlcIntVarArray x IlcIntVarArray y IlcIntExp th Creates a backtrackable polyline The two integer array parameters x y specifying the X and Y coordinates must be of the same size The th parameter indicates the thickness of the line To obtain an empty polygon give the same value to the first X and last X and to the first Y and last Y makeRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp th Creates a backtrackable empty rectangle The rectangle is anchored at the point xLowerLeft yLowerLeft and its dimensions are rectWidth rectHeight The outline of the rectangle is th pixels thick IBM ILOG SOLVER DEBUGGER USER S MANUAL 61 62 void makeRoundedRectangle IlcIntExp xLowerLeft IlcInt Exp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp rc IlcIntExp th Creates a backtrackable empty rectangle with rounded corners The parameters are similar to those of makeRect angle above except for rc which specifies the amplitude of the arc used for the rounded corners void setBackgroundColor const char col The parameter co1 sets the background color for the Drawing Board IBM ILOG SOLVER DEBUGGER USER S MANUAL licSchedulerDebugger Category Description Include File Synopsis Constructor C class The class I1cSchedulerDebug
11. button then click in the Search Tree window The whole tree becomes visible Create new window Click on this button then trace a rectangle around the element s you want to view in another window A new dockable window is created with a zoom level defined by the rectangle ILOG SOLVER DEBUGGER USER S MANUAL 15 Monitoring Decisions You can use several visualization tools to monitor the decisions within your application the Node Inspector the Propagation Spy the Decision Stack or a tooltip on the Search Tree File View Execution Debug Help 16 xl 88 BENG GP S9 S x lal x Variables x EET queens Node 2 x x2 4 2 xt x1 xt 900000009000000 BS ig Model B Projects 1 Set value O to x2 0 0 E 2 Set Value 2 to queens 1 jet Min 5 to queens 2 4 51 4 Initial Propagation 5 decision at node 5 i e Optimization kog queens queens queens queens iz Figure 1 2 Decision and propagation at a search tree node for the debugnqueen problem The interface shown above contains the elements used to monitor the decisions taken at each node in the search tree Current Node Inspector Search Tree Propagation Spy 16 ILOG SOLVER DEBUGGER USER S MANUAL
12. constructor 47 49 displayResult 47 getImpl 47 IlcDebugger Debugger C class 49 beginNestedSearchTreeView 49 breakExecution 49 close 50 constructor 49 displayResult 50 ndNestedSearchTreeView 50 getImpl 50 isActive 50 isAutomaticDisplay 50 isConnected 50 isTextual 50 newSearchTreeView 50 sendConsole 50 sendSolution 50 setAutomaticDisplay 51 IlcDrawingBoard C class 53 clean 56 constantInt 56 constantNum 56 constructor 55 drawArc 56 drawArrow 56 drawEllipse 56 drawFilledArc 56 drawFilledEllipse 57 drawFilledLabel 57 drawFilledPolygon 57 drawFilledRectangle 58 drawFilledRoundedRectangle 58 drawGrid 58 drawLabel 58 drawLine 58 drawPolyline 58 drawRectangle 59 drawRoundedRectangle 59 eraseGraphic 59 makeArc 59 makeArrow 59 makeEllipse 59 makeFilledArc 60 makeFilledEllipse 60 makeFilledLabel 60 makeFilledPolygon 60 makeFilledRectangle 60 makeFilledRoundedRectangle 61 makeGrid 61 makeLabel 61 IBM ILOG SOLVER DEBUGGER USER S MANUAL 73 makeLine 61 makeNewGraphicObject 61 makePolyline 61 makeRectangle 61 makeRoundedRectangle 62 setBackgroundColor 62 IlcSchedulerDebugger Debugger C class constructor 63 get SchedulerTrace 64 registerActivity 64 registerResource 64 registerUnaryResourceArray 64 setHorizon 64 IlcSolverDebugger Debugger C class breakIfBound IloFloatVar 66 breakIfBound IloIntVar 66 breakIfDomainMaxLe IloFloatVar 66 breakIf
13. drawingBoard drawingBoard clean drawingBoard makeGrid constantInt drawingBoard drawingBoard drawingBoard drawingBoard 32 IBM ILOG SOLVER DE Ng 4 nqueen 10 nqueen 10 0 constantInt 0 constantInt constantInt BUGGER UsER S MANUAL drawingBoard constantInt nqueen drawingBoard constantInt nqueen drawingBoard constantInt 1 for int i 0 i lt nqueen i IlcIntExp exp queens i 10 drawingBoard makeFilledEllipse drawingBoard constantInt i 10 exp drawingBoard constantInt 10 drawingBoard constantInt 10 red drawingBoard constantInt 1 return 0 ILOCPGOALWRAPPER3 IloChessBoard solver IloInt nqueen IloIntVarArray queens IlcDrawingBoard drawingBoard return IlcChessBoard solver nqueen solver getIntVarArray queens drawingBoard IBM ILOG SOLVER DEBUGGER USER S MANUAL 33 Here is how to start the search solver startNewSearch IloAndGoal solver getEnv IloChessBoard solver getEnv nqueen ilovars drawingBoard IloGenerate solver getEnv ilovars Note The expected colors use X names For example red green blue yellow pink brown magenta cyan white black turquoisel SeaGreenl gold1l IndianRed1 Siennal tanl salmonl orangel tomatol HotPink1 orchid2 The Drawing Board now displays the representation of a chessboard with red ellipses indicating the position of the queens Drawing Boa
14. event types 22 using 21 42 registerActivity member function IlcSchedulerDebugger Debugger C class 64 registerConstraint member function IlcSolverDebugger Debugger C class 67 gisterResource member function IlcSchedulerDebugger Debugger C class 64 registerUnaryResourceArray member function IlcSchedulerDebugger Debugger C class 64 registerVariable IloFloatVar m f IlcSolverDebugger Debugger C class 67 registerVariable IloFloatVarArray m f IlcSolverDebugger Debugger C class 68 registerVariable IloIntVar m f IlcSolverDebugger Debugger C class 68 registerVariable IloIntVarArray m f IlcSolverDebugger Debugger C class 68 remote connection 10 restart 19 right subtrees interpreting 38 root node 14 Run button 9 11 S Search Tree description 13 ideal shape 38 mode selectors 15 node inspector 14 17 sendConsole member function IlcDebugger Debugger C class 50 sendSolution member function IlcDebugger Debugger C class 50 IBM ILOG SOLVER DEBUGGER USER S MANUAL 75 setAutomaticDisplay member function IlcDebugger Debugger C class 51 setBackgroundColor member function IlcDrawingBoard C class 62 setHorizon member function IlcSchedulerDebugger Debugger C class 64 solution restoring 19 Solver Debugger C libraries 1 starting the GUI 8 starting Solver Debugger 8 statistics for a constraint 31 propagation 29 Step Into button 11 Ste
15. filtering level debuggolomb 6 2 2 extended filtering level You can select the arguments before starting the application with File gt Arguments IBM ILOG SOLVER DEBUGGER USER S MANUAL 9 10 Connecting Two Applications at the Same Time To load two applications at the same time proceed as follows 1 Launch two Debugger GUIs with different socket port numbers for example debugger listensocket 5000 amp debugger listensocket 5001 amp 2 Connect each application to a different port number giving extra arguments to the constructor 11cSolverDebugger In one application type IlcSolverDebugger debugger solver IloTrue IloFalse 1 0 5000 In the other application type IlcSolverDebugger debugger solver IloTrue IloFalse 1 0 5001 Connecting an Application Remotely To load an application remotely give the machine name and the port number expected by the GUI to the constructor I1cSolverDebugger IlcSolverDebugger debugger solver IloTrue IloFalse 1 0 4011 NameOfMachineOnWhichTheGUIisRunning Note To activate or deactivate the Debugger without recompiling pass 11oTrue or IloFalse as a second argument to the I1cSolverDebugger constructor based on a command line argument of your application IBM ILOG SOLVER DEBUGGER USER S MANUAL Debugger Commands Once you load an application the Run button becomes active in the Standard Tool Bar Your application has built the opti
16. on a chessboard in such a way that none of them can capture any other using the conventional moves allowed to a queen In other words the problem is to select n squares on a chessboard so that any pair of selected squares is never aligned either vertically or horizontally This example uses a Drawing Board to represent the chessboard debuggolomb This example is well suited to propagation analysis with different levels of pruning for the alldiff constraint It is a good example of the use of the Christmas Tree and the Propagation Spy The goal of the debuggolomb problem is to find a set of values representing the graduations of a rule such that the difference between each pair of graduations is always distinct and such that the length of the rule is minimal debuglsknight IBM ILOG SOLVER DEBUGGER USER S MANUAL 3 This example shows how to use the Debugger with local search It consists in placing as few knights as possible on a chessboard in such a way that each square is controlled attacked or occupied by at least one knight IBM ILOG SOLVER DEBUGGER USER S MANUAL debugpheasant This example is useful for tracing the Initial Propagation This problem consists in finding the number of pheasants and rabbits in a field knowing that there are 20 heads and 56 legs overall Scheduler Example debugjobshopm The aim of this problem is to schedule a number of jobs on a set of machines in order to minimize completion time
17. to be filled There are two rules to define the shape setting the fi11Rule parameter to 0 takes the EvenOdd Rule setting the fi11Rule parameter to 1 takes the Winding Rule EvenOdd Rule according to this rule in the case of the complex polygon shown below the central area of the star is not considered to lie inside the polygon and therefore is not filled This is the default value Winding Rule according to this rule the central area of the star is considered to lie inside the polygon and therefore is filled Original pol ygon EvenOddRule WindingRule before fill IBM ILOG SOLVER DEBUGGER USER S MANUAL 57 void drawFilledRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight const char col IloInt th Creates a nonbacktrackable rectangle identified byid and filled with the color col The rectangle is anchored at the point xLowerLeft yLowerLeft and its dimensions are rectWidth rectHeight The outline of the rectangle is of thickness th void drawFilledRoundedRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat rc const char col Ilolnt CH Creates a nonbacktrackable rectangle with rounded corners and filled with the color co1 The rectangle is identified byid The parameters are similar to those of drawFilledRectangle above except for rc which specifies the amplitude of the arc used for the rounded co
18. 14 Propagation Spy 22 Variable Domains 26 commands to control the Debugger 11 conditional breakpoints 24 connecting an application 9 an application remotely 10 two applications 10 constantInt member function IlcDrawingBoard C class 56 constantNum member function IlcDrawingBoard C class 56 Constraint Profiler description 30 using 43 constraint statistics 31 Continue button 11 Continue Trace Till Next Node button 11 customer support Viii customizing your application Scheduler C application 6 Solver C application 5 D Debugger commands 11 examples directory 2 3 Tree Inspector 29 debuggolomb example description 3 filter levels 9 40 Search Tree 13 debugjobshopm example 5 35 debuglsknight example 3 debugnqueen example Decision Stack 18 description 3 Drawing Board 32 Variable Domains 25 debugpheasant example description 5 Initial Propagation 22 Decision Stack button 12 Decision Stack docked panel 17 decisions taken at a node 18 displayResult member function IlcAddOnDebugger Debugger C class 47 IlcDebugger Debugger C class 50 distribution directories 2 domain reduction 31 drawArc member function IlcDrawingBoard C class 56 drawArrow member function IlcDrawingBoard C class 56 drawEllipse member function IlcDrawingBoard C class 56 drawFilledArc member function IlcDrawingBoard C class 56 drawFilledEllipse member function IlcDrawingBoard C class 57 drawFilledLabel member function IlcDrawingBoard
19. 38 Tutorial Tuning the Propagation in the debuggolomb 8 6 40 Solver Debugger API sie lll Id If ee a ex I we ex Re MET Re eee 45 IIcAddOrniDebugder oie Gabel dish eed dant DA Ba Ek esp hte des 47 llcDebugger n eee eR A ee FER E Pp ee ae P No Re og sens 49 llcDrawirgBoatd er vie REV ER ERREUR ine Pe eh eas 53 llIcSchedulerDebugger 0 0 cette iin 63 llcSolverDeb gger i ac ERI E apace ok eked ie deh td NEN hua 65 IBM ILOG SOLVER DEBUGGER UsER S MANUAL CONTENTS IBM ILOG SOLVER DEBUGGER USER S MANUAL CONTENTS vi IBM ILOG SOLVER DEBUGGER USER S MANUAL Before You Begin This manual provides you with all the information you need to use IBM ILOG Solver Debugger About IBM ILOG Solver Debugger The IBM ILOG Solver Debugger is composed of a GUI and a set of C libraries that enable you to debug and tune the performance of C applications written on top of IBM ILOG Solver and IBM ILOG Scheduler What You Need to Know This manual assumes that you are familiar with the UNIX or PC environment in which you are going to use Solver Debugger including its particular windowing system IBM ILOG SOLVER DEBUGGER USER S MANUAL vii What This Manual Contains Chapter 1 Debugging and Performance Tuning for Solver based Applications shows how you can use the graphical features of Solver Debugger to debug and tune the performance of C applications No
20. 4 application connecting 9 connecting remotely 10 connecting two at the same time 10 customizing 5 6 improving 38 backtracking 32 beginNestedSearchTreeView member function IlcDebugger Debugger C class 49 boolean variable displaying 25 Break button 11 breakExecution member function IlcDebugger Debugger C class 49 breakIfBound IloFloatVar member function IlcSolverDebugger Debugger C class 66 breakIfBound IloIntVar member function IlcSolverDebugger Debugger C class 66 breakIfDomainMaxLe IloFloatVar IlcSolverDebugger Debugger C class 66 breakIfDomainMaxLe IloIntVar IlcSolverDebugger Debugger C class 66 breakIfDomainMinGe IloFloatVar Index IlcSolverDebugger Debugger C class 66 breakIfDomainMinGe IloIntVar IlcSolverDebugger Debugger C class 67 breakpoints 14 buttons Abort 11 Break 11 Continue 11 Continue Trace Till Next Node 11 Decision Stack 12 Inspect Current Node 12 Propagation Spy 12 Run 9 11 Step Into 11 Step Out 11 Step Over 11 View Constraint Profiler 12 View Search Tree 12 C choice point 12 43 Christmas Tree creating 29 domain reduction 30 interpreting 30 number of propagation events 30 visualizing 29 clean member function IlcDrawingBoard C class 56 IBM ILOG SOLVER DEBUGGER USER S MANUAL 71 close member function IlcDebugger Debugger C class 50 colors Drawing Board 34 event types 22 node types
21. 6 with the number of propagation events occurring at the corresponding big failure node in Figure 1 7 Search Tree x ChoicePoints 32 Failures 30 Solutions 3 P 319 events eff 63 25 b pa ng Ca Amp awa AR 448 events Figure 1 6 The Christmas Tree for the debuggolomb problem with a basic level of propagation Search Tree x Choice Points 15 Failures 13 5 Solutions 3 P N 234 events Figure 1 7 The Christmas Tree for the debuggolomb problem with an extended level of propagation The big node requires two times fewer propagation events to detect the failure than the subtree So the extended propagation saved time Now compare the Initial Propagation statistics by looking at the root node The efficiency of domain reduction is the same 63 25 ILOG SOLVER DEBUGGER USER S MANUAL 41 Using the Propagation Spy Inspect the Initial Propagation Solver adds a hidden constraint when posting the alldiff constraint When tracing the propagation at the first big failure node of the extended filter level the Propagation Spy displays the extra propagation as shown in the figure below Basic filter level i Extended filter level E Var In Process difference 13 Var In Process graduations 2 dq Process Demon IlclntExpD omainCon d Process Demon IlclntExpD omainCon Process Demon IIclntExpDomainConstraint Process
22. C class 57 drawFilledPolygon member function IlcDrawingBoard C class 57 drawFilledRectangle member function IlcDrawingBoard C class 58 drawFilledRoundedRectangle member function IlcDrawingBoard C class 58 drawGrid member function IlcDrawingBoard C class 58 Drawing Board advanced use 34 basic use 32 customizing colors 34 example 35 Drawing Board class 53 drawLabel member function IlcDrawingBoard C class 58 drawLine member function IlcDrawingBoard C class 58 drawPolyline member function IlcDrawingBoard C class 58 drawRectangle member function 72 IBM ILOG SOLVER DEBUGGER USER S MANUAL IlcDrawingBoard C class 59 drawRoundedRect angle member function IlcDrawingBoard C class 59 E ndNestedSearchTreeView member function IlcDebugger Debugger C class 50 eraseGraphic member function IlcDrawingBoard C class 59 event types colors 22 examples debuggolomb 3 9 13 40 debugjobshopm 5 35 debuglsknight 3 debugnqueen 3 18 25 32 debugpheasant 5 22 description 3 examples directory 2 3 G Gantt chart 5 19 getImpl member function IlcAddOnDebugger Debugger C class 47 IlcDebugger Debugger C class 50 getSchedulerTrace member function IlcSchedulerDebugger Debugger C class 64 getSolver member function IlcSolverDebugger Debugger C class 67 GUI idle mode 9 initializing mode 8 GUI installation 2 idle mode Debugger GUI 9 IlcAddOnDebugger Debugger C class
23. Demon llclntE pDomainConstraintl E Var In Process difference 5 Process Demon IlcIntExpDomainConstraintif E Var In Process difference 2 pee In Process difference Var In Process difference 1 amp Var n Process difference 11 L eg Process Demon llcIntE pDomainCon Process Demon IIclntExpDomainConstraint Set Min 10 difference 2 Set Min 8 difference 11 Set Min 11 difference 11 Set Min 10 difference 7 1 1 Figure 1 6 Comparing two propagation traces using the Propagation Spy for the debuggolomb problem With the basic filter level the propagation stops after reducing the variable difference 11 to the interval 7 11 With the extended level the propagation of an additional internal constraint posted by the alldiff constraint strongly reduces the domains by means of Set Min events This additional propagation leads to a failure avoiding a subtree exploration Notice that four Set Min events are triggered on the difference 11 variable where one should be enough These Set Min events are Remove Value orders that have been translated by Solver into Set Min because the value to remove was a bound IBM ILOG SOLVER DEBUGGER USER S MANUAL So reasoning on bounds instead of on domains is sufficient in this case Tune the alldiff constraint to the intermediate filter level which reasons on bounds instead of on domains You obtain the same Search Tree as with the extended filter
24. DomainMaxLe IloIntVar 66 breakIfDomainMinGe IloFloatVar 66 breakIfDomainMinGe IloIntVar 67 constructor 66 getSolver 67 initialize 67 registerConstraint 67 registerVariable IloBool 68 registerVariable IloFloatVar 67 registerVariable IloFloatVarArray 68 registerVariable IloIntVarArray 68 IlcVisualizeOption type definition 69 improving your application 38 include files for Debugger with Scheduler 3 for Debugger with Solver 2 Scheduler C application 6 Solver C application 5 initial propagation 30 Initial Propagation tracing 23 initialize member function IlcSolverDebugger Debugger C class 67 initializing mode Debugger GUI 8 Inspect Current Node button 12 installation Debugger GUI 2 online documentation 2 Scheduler examples 3 Solver examples 2 installation directories 2 integer variable bounds 25 26 domain 25 state 26 value 25 26 interpreting Christmas Tree 30 right subtrees 38 isActive member function IlcDebugger Debugger C class 50 isAutomaticDisplay member function IlcDebugger Debugger C class 50 isConnected member function IlcDebugger Debugger C class 50 isTextual member function IlcDebugger Debugger C class 50 L local search 19 makeArc member function IlcDrawingBoard C class 59 makeArrow member function IlcDrawingBoard C class 59 makeEllipse member function IlcDrawingBoard C class 59 makeFilledArc member function IlcDrawingBoard C class 60 makeFilledEl
25. First solution o 9 For a binary tree considering that the right branch is the contradiction of the left branch when right subtrees are developed you can draw one of the following two conclusions Solutions appear in the right subtree in which case the search can be improved since it is the contradiction of a decision that leads to a better solution Solutions do not appear in the right subtree in which case there is a lack of propagation because the back propagation of the cost should have pruned the subtree automatically When you use the Depth First Search exploration order the higher in the tree the right subtrees are the more you should pay attention to them because the tree is potentially exponential in its depth IBM ILOG SOLVER DEBUGGER USER S MANUAL 39 Tutorial Tuning the Propagation in the debuggolomb Example This section is based on the debuggolomb example It shows you how Solver Debugger can be used to tune the propagation of a Solver application Filter levels In order to tune the propagation in the debuggolomb example we will use the alldiff global constraint of Solver with two different levels of propagation Reminder When connecting to the debuggolomb example pass two integer parameters the size of the problem and the filtering level of the a11diff constraint debuggolomb 6 0 0 basic filtering level debuggolomb 6 1 1 medium filtering level debuggolomb 6 2 2 extended filtering level
26. IBM ILOG Solver Debugger User s Manual June 2009 Copyright notice Copyright International Business Machines Corporation 1987 2009 US Government Users Restricted Rights Use duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp Trademarks IBM the IBM logo ibm com WebSphere ILOG the ILOG design and CPLEX are trademarks or registered trademarks of International Business Machines Corp registered in many jurisdictions worldwide Other product and service names might be trademarks of IBM or other companies A current list of IBM trademarks is available on the Web at Copyright and trademark information at http www ibm com legal copytrade shtml Adobe the Adobe logo PostScript and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and or other countries Linux is a registered trademark of Linus Torvalds in the United States other countries or both Microsoft Windows Windows NT and the Windows logo are trademarks of Microsoft Corporation in the United States other countries or both Java and all Java based trademarks and logos are trademarks of Sun Microsystems Inc in the United States other countries or both Other company product or service names may be trademarks or service marks of others C N T E N T S Contents Preface Before You Begin 0 cece cee eee eee eee eee I In vii About IBM ILOG Sol
27. Int value IlcFloatExp constantNum IloNum value void drawArc IloInt id IloInt rectWidth IlcFloat startAngle IloInt th drawArrow IloInt id IloInt x2 const char col drawEllipse IloInt id IloInt yLowerLeft IloInt rectHeight drawFilledArc IloInt id IloInt yLowerLeft IloInt rectHeight IloInt x1 IloInt y2 void void void IlcFloat angleRange IloInt IloInt xLowerLeft const char col drawFilledEllipse IloInt id llolut IloInt IloInt th drawFilledLabel IloInt id const char str drawFilledPolygon IloInt id IloInt count IloInt th drawFilledRectangle IloInt id void void void void IloInt xLowerLeft IloInt rectHeight IlcFloat angleRange yLowerLeft rectHeight IloInt x IloInt x 0 const const IloInt yLowerLeft IloInt yl llolnt thy black IloInt xLowerLe IloInt IloInt IloInt xLowerLeft Et rectWidth ch IloInt rectWidth IlcFloat startAngle ch IloInt rectWidth const char col IloInt y const char col IloInt yf const char col IloInt fillRule IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight const char ILOG SOLVER DEBUGGER UsER S MANUAL col IloInt th 53 54 void void void void void void void void void void void void void void void id drawFilledRoundedRectangle IloIn IloInt xLowerLeft
28. arting from the root displayed between brackets For instance in the debugnqueen example 48 Set Value 47 to vars 94 corresponds to a decision taken at the node pointed to by the green arrow 48 indicates the depth from the root IBM ILOG SOLVER DEBUGGER USER S MANUAL 17 18 4 42 Set Value 41 to vars 82 41 83 99 43 Set Value 42 to vars 84 42 85 99 44 Set Value 43 to vars 86 43 87 99 45 Set Value 44 to vars 88 44 89 99 46 Set Value 45 to vars 90 45 91 99 47 Set Value 46 to vars 92 46 93 99 48 Set Value 47 to vars 94 47 95 99 Figure 1 3 The Decision Stack panel for the debugnqueen problem Note Sometimes the last line is the only visible one Even if the vertical scroll bar appears as full previous lines do exist To force scrolling up drag the cursor up inside the text Tooltip on the Search Tree To access quickly the decisions taken at a node place the cursor over the node graphic representation or over the link above A tooltip will appear with the decision trapped by the debugger at this node N Set Max 11 toJ1SOR1 end 11 14 Figure 1 4 Displaying a decision via the tooltip IBM ILOG SOLVER DEBUGGER USER S MANUAL Monitoring Solution Restoring To obtain a new Search Tree view when restoring a solution type debugger newSearchTreeView solver solve IloRestoreSolution env best To prevent the Debugger from displaying the Gantt chart automatically at
29. called at each solution In Scheduler applications it displays a Gantt chart with precedences IlcAddOnDebuggerI getImpl const Returns the implementation object IBM ILOG SOLVER DEBUGGER USER S MANUAL 47 48 IBM ILOG SOLVER DEBUGGER USER S MANUAL licDebugger Category Description Include File Synopsis Constructor C class The class I1cDebugger is a handle class on an instance of the implementation class IlcDebuggerI This class manages the debugging protocol with the Debugger GUI so that an external application or a specific engine can connect to the GUI ilsolver debugger h class IlcDebugger public IlcDebugger IlcDebuggerI impl 0 int beginNestedSearchTreeView void breakExecution void browseAl11 void close IloBool displayResult const int endNestedSearchTreeView IlcDebuggerI getImpl const return imp1 IloBool isActive const IloBool isAutomaticBrowse const IloBool isAutomaticDisplay const IloBool isConnected const IloBool isTextual const int newSearchTreeView void sendConsole const char text void sendSolution const char text void setAutomaticBrowse IloBool automaticBrowse void setAutomaticDisplay IloBool automatic IlcDebugger IlcDebuggerI impl 0 Creates a new handle class on the same implementation object Member Functions int beginNestedSearchTreeView Creates a new Sea
30. called makespan Each job is a sequence of tasks and each task represents a machine This example enables you to see the Activity Domains window the Gantt chart and specific scheduling events in the Propagation Spy In the code of debugjobshopm you will find examples of conditional breakpoints Debugger disabling and the automatic result display switched off Instrumenting Your Own Code This section explains how to customize the Debugger for Solver or Scheduler applications Customizing a Pure Solver C Application Customizing a Pure Scheduler C Application Customizing a Pure Solver C Application To customize the Debugger for a pure Solver C application proceed as follows You need one include file before the solver declaration include lt ilsolver solverdebugger h gt IloEnv env try IloSolver solver env 1 Instantiate the Debugger and let it connect your application to the GUI before model extraction IlcSolverDebugger debugger solver 2 State the model using 11o modeling objects IloModel model env 3 Name your Ilo objects setName API myVar setName myVar IBM ILOG SOLVER DEBUGGER USER S MANUAL 5 4 Register the variables you are interested in for model browsing domain monitoring etc Optional debugger registerVariable myVar If you want domain visualization specify it debugger registerVariable myVar2 IloTrue IloTrue IlcVisualizeDomain 5 Extract the m
31. cheduler Debugger to handle specific panels IlcScheduler schedule solver IlcSchedulerDebugger schedDebug debugger schedule 5 Register the Ilo objects with the Solver Debugger and the Scheduler Debugger debugger registerVariable makespan IloTrue IloTrue IlcVisualizeDomain schedDebug registerActivity activity IloTrue IloTrue IlcVisualizeDomain 6 Inform the Activity Panel of the horizon to display schedDebugger setHorizon horizon 7 Extract the model 110 objects as 11c objects solver extract model 8 Initialize the Debugger for each running session and solve by placing your optimization loop inside the debugging loop while debugger initialize debugging loop solver startNewSearch myGoal while solver next optimization loop ostrstream text text lt lt solver getValue makespan lt lt endl lt lt ends debugger sendSolution text str solver endSearch env end 9 Close the connection to the GUI and release memory debugger close catch IloException amp ex cerr lt lt Error lt lt ex lt lt endl IBM ILOG SOLVER DEBUGGER USER S MANUAL 7 Setting Up Solver Debugger In this section you will see how to launch the Debugger GUI and connect an application to it Launching the GUI Connecting an Application Launching the GUI In a command prompt window go to the bin subdirectory where Solver is installed and type debugge
32. dicated by angleRange The line of the arc is of thickness th and the segment is filled with the color col 56 IBM ILOG SOLVER DEBUGGER USER S MANUAL void drawFilledEllipse IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth loInt rectHeight const char col IloInt th Creates a nonbacktrackable filled ellipse identified byid and embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectWidth and the height rect Height The outline of the ellipse is of thickness th and the ellipse is filled with the color co1 void drawFilledLabel IloInt id IloInt x IloInt y const char str const char col Creates a nonbacktrackable filled label identified byid The label is anchored at the point x y contains the character string st x and is of the color specified by col void drawFilledPolygon IloInt id IloInt x IloInt y IloInt count const char col IloInt th IloInt fillRule Creates a nonbacktrackable polygon identified by id and filled with the color co1 The parameter th indicates the thickness of the line The two integer array parameters x y specifying the X and Y coordinates must be of the same size The count parameter indicates the number of point coordinates The illRule parameter indicates which points are to be considered as being inside the polygon depending on the number of crossing segments that define the shape of the area
33. e lt best getObjectiveValue ostrstream txt txt Move moves lt lt Knights lt lt sol getObjectiveValue lt lt endl lt lt ends debugger sendSolution txt str best copy sol 5 If iterations are still left ask tabu if it is complete while iter 0 amp amp tabu complete 6 Restore the best solution found debugger sendConsole Restoring solution n debugger newSearchTreeView solver solve IloRestoreSolution env best See the debuglsknight example for details on local search Monitoring Nested Search To monitor nested search type the following IlcSolverDebugger debugger solver IloTrue IloFalse 1 0 4005 0 IloTrue ILCGOAL2 MyIlcGoal IlcIntVarArray a IlcSolverDebugger debugger debugger beginNestedSearchTreeView a getManager solve IlcGenerate a debugger endNestedSearchTreeView return 0 ILOCPGOALWRAPPER2 MyIloGoal solver IloIntVarArray a IlcSolverDebugger debugger return MyIlcGoal solver getManager solver getIntVarArray a debugger IBM ILOG SOLVER DEBUGGER USER S MANUAL Visualizing Propagation Solver Debugger provides you with three tools that allow you to display the propagation in the GUI the Propagation Spy to trace events described in Using the Propagation Spy the Variable Domains notebook pages in the Output window described in Visualizing Variable Domains the Activity Domains window for
34. e end of the solving or Abort if the solving process takes a long time IBM ILOG SOLVER DEBUGGER USER S MANUAL 23 2 Add a breakpoint on a specific node by right clicking on the node you can also include conditional breakpoints in your code 3 Run the execution a second time The tree nodes become white and are progressively re colored 4 Step into the node to display the propagation events Adding Breakpoints in Your Code You can register conditional breakpoints in your code so that as soon as a condition becomes true the execution is interrupted You can use three types of conditional breakpoints Interrupt the execution as soon as the minimum of a variable domain is greater than or equal to a value Interrupt the execution as soon as the maximum of a variable domain is lower than or equal to a value Interrupt the execution as soon as a variable is bound to a specific value For example in the debugjobshopm example uncomment the following line debugger breakIfDomainMaxLe _makespan 60 The execution will be interrupted when the maximum of the makespan domain is lower than or equal to the value 60 Conditional breakpoints are extracted by the initialize member function So make sure you set the conditional breakpoints before the call to the member function IlcSolverDebugger initialize You can also call the member function IlcSolverDebugger breakExecution in your own goals Visualizing
35. e number of propagation events triggered default order e effective domain reduction achieved A constraint can be called several times with no efficiency in terms of domain reduction The column domain reduction corresponds to the sum of the values removed by the active constraint from integer variables The domain reduction is evaluated by taking the difference of the value returned by get Size on the variables before and after the event Note You can copy the content of the Constraint Profiler by selecting cells while dragging the mouse and then pressing Ctrl C You can paste the result in Microsoft Excel or Star Office Using the Drawing Board Solver Debugger provides you with a tool that complements the predefined visualization tools the Drawing Board The Drawing Board allows you to define your own backtrackable 2D graphical representation to animate the search algorithm or represent solutions The Drawing Board is a dockable window that you can float and resize ILOG SOLVER DEBUGGER USER S MANUAL 31 To create a Drawing Board instantiate an I1cDrawingBoard object and pass the IlcSolverDebugger instance as an argument IlcDrawingBoard drawingBoard debugger You can create several instances of the class IlcDrawingBoard which will result in the creation of several Drawing Board docked windows in the GUI The Drawing Board contains two sets of member functions aset that allows you to use the Drawing Board wi
36. eView Creates a new Search Tree view in Solver Debugger Sends notification of the next node created to the new Search Tree Considers the previous Search Tree as terminated Returns the identification of the Search Tree view to be created void sendConsole const char text Sends a message to the Debugger Console Notebook Page void sendSolution const char text Sends a message to the Debugger Notebook Page void setAutomaticBrowse IloBool automaticBrowse Tells the Debugger to switch on or off the automatic model browsing IBM ILOG SOLVER DEBUGGER USER S MANUAL void setAutomaticDisplay IloBool automatic Tells the Debugger to switch on or off the automatic display mode for the result If the Debugger is set to the automatic display mode add on debuggers display a specific graphic representation of the solution such as a Gantt chart for the Scheduler Debugger IBM ILOG SOLVER DEBUGGER USER S MANUAL 51 52 IBM ILOG SOLVER DEBUGGER USER S MANUAL lIcDrawingBoard Category Description Include File cl Synopsis C class lt ilsolver drawingboard h gt ass IlcDrawingBoard public IlcDrawingBoard IlcSolverDebugger debugger IBM The class 11cDrawingBoard provides a 2D representation of the search algorithm IloInt width 100 IloInt height 100 IloNum scaleH 1 0 IloNum scaleV 1 0 IlcDrawingBoard IlcDrawingBoardI impl void clean IlcIntExp constantInt Ilo
37. each intermediate solution type debugger setAutomaticDisplay IloFalse Then call debugger displayresult when the optimal solution is restored Monitoring Restart To obtain a new Search Tree view at restart type while debugger initialize solver startNewSearch myGoal if solver next ostrstream text text lt lt solver getValue makespan lt lt endl lt lt ends debugger sendSolution text str debugger newSearchTreeView solver restartSearch if solver next ostrstream text text lt lt solver getValue makespan lt lt endl lt lt ends debugger sendSolution text str solver endSearch You can also choose to reuse the same Search Tree view In that case the root node will have four branches Monitoring Local Search To obtain a new Search Tree for each move proceed as follows 1 Type IlcSolverDebugger debugger solver solver extract model while debugger initialize 2 Create the initial solution solver solve IloGenerate env knightArr amp amp IloStoreSolution env sol do IBM ILOG SOLVER DEBUGGER USER S MANUAL 19 3 While there are iterations create a new Search Tree view and start a new search for each iteration while iter gt 0 amp amp debugger newSearchTreeView amp amp solver solve move moves tt 4 Store the new best solution if there is one and display it if sol getObjectiveValu
38. ed whenVisit whenPrune Explored Pruned without exploration Propagation whenSolution whenFail Solution e Failure While the yellow arrow points to the root node the algorithm is performing the initial domain reduction and the Initial Goal successively Interacting with a Node Right click on a node to add or remove breakpoints expand or collapse a subtree open the node inspector The node inspector contains a trace of the decisions The node inspector also contains statistics on the number of propagation events that took place and the domain reduction performed at the node currently being inspected IBM ILOG SOLVER DEBUGGER USER S MANUAL BE b b E E Search Tree Mode Selectors Use Search Tree mode selectors to choose the view you want for the Search Tree IBM Selection mode Click on the arrow button then double click on a node belonging to the current branch Elastic zoom mode Click on this button then with the left mouse button trace a rectangle around the element s you want to enlarge When you release the mouse button the enlarged image fills the window Zoom in Click on the button with a sign then click in the Search Tree window The image is increased by a factor of 2 each time you click Zoom out Click on the button with a sign then click in the Search Tree main window The image is decreased by a factor of 2 each time you click View whole content Click on this
39. er textual if the Debugger is active XML messages are sent to the standard output stdout instead of the GUI The parameter pollingPeriod sets the number of seconds between two abort or break checks The parameter socketPort indicates the port number for which the GUI is waiting The parameter guiServer indicates the machine name on which the GUI is running If this parameter is null then localhost is taken breakIfBound IloFloatVar var IloNum val Registers a conditional breakpoint The execution is interrupted at this conditional breakpoint if the specified floating point variable is bound to va1 breakIfBound IloIntVar var IloInt val Registers a conditional breakpoint The execution is interrupted at this conditional breakpoint if the specified integer variable is bound to va1 breakIfDomainMaxLe IloFloatVar var IloNum val Registers a conditional breakpoint The execution is interrupted at this conditional breakpoint if the domain max of the specified floating point variable is lower than or equal to val breakIfDomainMaxLe IloIntVar var IloInt val Registers a conditional breakpoint The execution is interrupted at this conditional breakpoint if the domain max of the specified integer variable is lower than or equal to val breakIfDomainMinGe IloFloatVar var IloNum val Registers a conditional breakpoint The execution is interrupted at this conditional breakpoint if the domain min of the specified floating point
40. es that the domain of the start variable is no longer compatible with the domain of the end variable of the corresponding activity A failure then occurs and the algorithm backtracks The following figure represents a user defined animation of the search for a Scheduler application The red arrow at the bottom left takes a negative slope This arrow represents the activity responsible for a failure its end max is strictly lower than its start max Drawing Board E Xi IBM ILOG SOLVER DEBUGGER UsER s MANUAL 35 The following snippet of code is an extract from the debugjobshopm example const char colors red green blue yellow pink brown magenta cyan white black turquoisel SeaGreenl gold1l IndianRed1 Siennal tanl salmonl orangel tomatol HotPink1 orchid2 static void DrawActivity IlcActivity activity IlcDrawingBoard drawingBoard IlcInt id drawingBoard eraseGraphic id drawingBoard drawArrow id activity getStartVariable getMin activity getStartVariable getMax activity getEndVariable getMin activity getEndVariable getMax aga colors id 5 211 ILCDEMON3 MyUpdateActivityDemon IlcActivity activity IlcDrawingBoard drawingBoard IlcInt id DrawActivity activity drawingBoard id ILCGOAL3 MyGoalReDrawActivityOnBacktrack IlcActivity activity IlcDrawingBoard drawingBoard IlcInt id DrawActivity activity d
41. ger provides an interface to the IBM ILOG Solver Debugger in an ILOG Scheduler environment lt ilsched schedulerdebugger h gt class IlcSchedulerDebugger public IlcAddOnDebugger public IlcSchedulerDebugger IlcSolverDebugger debugger IlcSchedule s IloBool traceAllActivities IloTrue IloBool traceAllResources IloTrue IloBool traceAllowed IloTrue IlcSchedulerTrace getSchedulerTrace const void registerActivity IloActivity activity IloBool toBrowse IloTrue IloBool toTrace IloTrue IlcVisualizeOption displayDomain IlcVisualizeDisabled void registerResource IloResource resource IloBool toBrowse IloTrue void registerUnaryResourceArray IloArray IloUnaryResource amp resources const char name IloBool toBrowse IloTrue void setHorizon IlcInt horizon IlcSchedulerDebugger IlcSolverDebugger debugger IlcSchedule s IloBool traceAllActivities IloTrue IloBool traceAllResources IloTrue IloBool traceAllowed IloTrue The parameter s sets the 11cSchedule you have created to declare your activities and resources If the parameter traceAllActivities is true and traceAllowed is also true all activities are traced If the parameter traceAllResources is true and traceAllowed is also true all resources are traced If the parameter t raceAllowed is true a specific trace for a Scheduler application is added IBM ILOG SOLVER DEBUGGER USER S MANUAL 63 Member Fu
42. gle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectWidth and the height rect Height The angle of the arc begins at position startAngle and moves in a clockwise direction the number of degrees indicated by angleRange The line of the arc is of thickness th void drawArrow IloInt id IloInt x1 IloInt yl IloInt x2 IloInt y2 IloInt th const char col black Creates a nonbacktrackable arrow identified by id The arrow starts at x1 y1 and ends at x2 y2 The thickness of the line is th and the default color of the arrow is black void drawEllipse IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt th Creates a nonbacktrackable empty ellipse identified by id and embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectwidth and the height rect Height The outline of the ellipse is of thickness th void drawFilledArc IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat startAngle IlcFloat angleRange const char col IloInt th Creates a nonbacktrackable filled arc identified by id and embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectWidth and the height rect Height The angle of the arc begins at position startAngle and moves in a clockwise direction the number of degrees in
43. ins the Solver Debugger GUI debugger exe lt solverdir gt help contains the online documentation solverdir examples platform libformat debug contains C examples based on Solver solverdir examples src debug contains C source files for the examples lt solverdir gt include ilsolver contains the additional include files needed for using the debugger with Solver IBM ILOG SOLVER DEBUGGER USER S MANUAL lt solverdir gt lib contains the libraries i1debug 1ib and ilsolverdebug lib scheddir examples platform libformat debug contains C examples based on Scheduler lt scheddir gt examples src debug contains C source files for the examples lt scheddir gt include ilsched contains the additional include files needed for using the debugger with Scheduler lt scheddir gt lib contains the additional library ilschedulerdebug lib Examples Provided Before using the Debugger facilities on your application you can become familiar with them by testing the examples provided as part of the Solver Debugger distribution AII the examples contain 110 objects To compile the examples on Solaris and Linux platforms use the command make debuggersamples in the directory product examples platform libformat Solver Examples debugnqueen This is a pure Solver C example This well known problem involves placing n queens
44. ion Related operating system and database information Detailed description of the issue Severity of the issue in relationship to the impact of it affecting your business needs Contact via web Open service requests is a tool to help clients find the right place to open any problem hardware or software in any country where IBM does business This is the starting place when it is not evident where to go to open a service request Service Request SR tool offers Passport Advantage clients for distributed platforms online problem management to open edit and track open and closed PMRs by customer number Timesaving options create new PMRs with prefilled demographic fields describe problems yourself and choose severity submit PMRs directly to correct support queue attach troubleshooting files directly to PMR receive alerts when IBM updates PMR view reports on open and closed PMRs You can find information about assistance for SR at http www ibm com software support help contactus html System Service Request SSR tool is similar to Electronic Service request in providing online problem management capability for clients with support offerings in place on System i System p System z TotalStorage products Linux Windows Dynix PTX Retail OS 2 Isogon Candle on OS 390 and Consul z OS legacy products IBMLink SoftwareXcel support contracts offer clients on the System z platform the IBMLink online problem management tool to open
45. ions are rectWidth rectHeight The outline of the rectangle is th pixels thick IBM ILOG SOLVER DEBUGGER USER S MANUAL void void void void int void void makeFilledRoundedRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp rc const char col IlcIntExp th Creates a backtrackable rectangle with rounded corners The parameters are similar to those of makeFilledRectangle above except for rc which specifies the amplitude of the arc used for the rounded corners makeGrid IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp cols IlcIntExp rows IlcIntExp th Creates a backtrackable grid embedded in a rectangle The rectangle is specified by the anchor points xLowerLeft yLowerLeft and the dimensions rectWidth rectHeight The columns and rows in the grid are specified by the integers cols and rows The lines of the grid are of thickness tn makeLabel IlcIntExp x IlcIntExp y const char str Creates a backtrackable label anchored at the point x y and containing the character string str makeLine IlcIntExp x1 IlcIntExp yl IlcIntExp x2 IlcIntExp y2 IlcIntExp th const char col black Creates a backtrackable line between the two points x1 y1 and x2 y2 of thickness th and default color black makeNewGraphicObject Creates
46. ler The solving is then done as follows IlcScheduler scheduler debugger getSolver IlcDrawingBoard drawingBoard debugger goal IloAndGoal solver getEnv MyDrawingBoardCreation solver getEnv drawingBoard scheduler goal while debugger initialize solver startNewSearch goal IBM ILOG SOLVER DEBUGGER USER S MANUAL 37 Improving your Application This section provides you with an example on how to improve an optimization application This application contains an objective function and uses IBM ILOG Solver with the Depth First Search exploration order If your own application corresponds to these criteria you can use the following visualization methodology to improve the search and the propagation In this section you will learn how to analyze right subtrees in your Search Tree and follow a tutorial to see how the propagation can be improved Analyzing Right Subtrees Tutorial Tuning the Propagation in the debuggolomb Example Analyzing Right Subtrees To interpret the results of the Search Tree keep in mind the theoretical ideal shape of a Search Tree which looks like the figure below A A Optimal solution To spot possible problems in your application analyze the right subtrees in your Search Tree 38 IBM ILOG SOLVER DEBUGGER USER S MANUAL e e Right Sub Tree of gt o Failures Y gt o o FEAE Right Sub Tree Solution x x
47. level The Propagation Spy shows that at the same choice point the variable difference 11 is bound more quickly Var In Process difference 11 Process Demon llclntE pE ventHandlerConstraint differen Ej Propagat Set Min 12 difference 3 i Set Min 10 difference 2 i i Figure 1 9 Propagation Spy for the debuggolomb problem with an intermediate filter level Using the Constraint Profiler Constraints 8 Propagation E vents i i IclntE pE ventH andlerConstraintl difference 11 114 155 012 IclntE pE ventH andlerConstraintl difference 14 115 148 0 lIcAIDiff OO42CE 80 difference 8 0 31 differer 678 126 0 IclntE pE ventH andlerConstraint difference 3 141 121 0 IclntSubConstraintl IIcIntE xp 0042CB 38 31 0 94 117 0 IcIntExpE ventH andlerConstraintl difference 8 C 83 116 IcIntExpE ventH andlerConstraintl difference 10 115 0 IclntSubConstraintl IlcIntE xp 0042C670 31 0 118 107 0 IclntE ventH andlerConstraintl difference 2 C 111 106 0 IcIntExpE ventH andlerConstraintl difference 3 E 84 102 0 IclntE pE ventH andlerConstraintl difference 5 E 128 101 0 IcIntExpE ventHandlerConstrainti difference 7 C O 100 0 IclntExpE ventH andlerConstraint difference 4 C 99 0 IclntExpE ventH andlerConstraint difference S C 137 31 0 IcIntExpE ventH andlerConstraintl difference 1 E 70 91 0 IcIntExpE ventHandlerConstrainti difference 1 2
48. lipse member function IlcDrawingBoard C class 60 makeFilledLabel member function IlcDrawingBoard C class 60 makeFilledPolygon member function IlcDrawingBoard C class 60 makeFilledRectangle member function IlcDrawingBoard C class 60 makeFilledRoundedRectangle member function IlcDrawingBoard C class 61 makeGrid member function 74 IBM ILOG SOLVER DEBUGGER USER S MANUAL IlcDrawingBoard C class 61 makeLabel member function IlcDrawingBoard C class 61 makeLine member function IlcDrawingBoard C class 61 makeNewGraphic0bject member function IlcDrawingBoard C class 61 makePolyline member function IlcDrawingBoard C class 61 makeRectangle member function IlcDrawingBoard C class 61 makeRoundedRect angle member function IlcDrawingBoard C class 62 mode selectors 15 monitoring local search 19 nested search 20 restart 19 solution restoring 19 monitoring decisions 16 Current Node Inspector docked panel 17 Decision Stack docked panel 17 Node Inspector dialog box 17 Propagation Spy 17 N nested search 20 newSearchTreeView member function IlcDebugger Debugger C class 50 Node Inspector dialog box 14 17 node life cycle 14 node types colors 14 root node 14 status 14 online documentation 2 P propagation events 21 31 statistics 29 tracing at a specific node 23 visualizing 21 Propagation Spy R button 12 colors 22 description 17
49. m val IloInt val IloTrue IloTrue registerVariable IloFloatVar var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled registerVariable IloFloatVarArray var IloBool browse IloBool trace IloTrue IloTrue IlcVisualizeOption option const char name 0 registerVariable IloIntVar var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option registerVariable IloIntVarArray IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option const char name 0 ILOG SOLVER DEBUGGER UsER S MANUAL IlcVisualizeDisabled IlcVisualizeDisabled var IlcVisualizeDisabled 65 Constructor Member Functions void void void void void IlcSolverDebugger IloSolver solver IloBool active IloTrue IloBool textual IloFalse double pollingPeriod 1 0 int socketPort 4011 const char guiServer 0 IloBool nestedSearch IloFalse When the act ive parameter is true the Debugger is active and tries to connect to the GUI immediately Otherwise the Debugger library has no effect In this case the member function initialize returns true when it is called for the first time and false otherwise The sendConsole and sendSolution member functions display the messages on the standard output The parameter solver indicates the IloSolver object to which the constraints are added With the paramet
50. mization model and is waiting for you to trigger the solving by pressing Run The run session is blocked in the IlcSolverDebugger initialize method Standard Tool Bar X After clicking on the Run button the Execution Tool Bar appears Your application returns from the initialize method and solving starts xf B Sn Bt 5 0 61 As 9 EO These are the buttons that you need to control the Debugger e Abort Stops the current computation e Break Interrupts the execution e Continue Continues the execution and stops tracing the propagation e Step Into Steps into a node and traces the propagation within the node e Step Over Steps over a node that is skips the propagation information within that node and stops at the beginning of the next node visit e Step Out Steps out of a node and avoids going through all the details of the propagation e Continue Trace Till Next Node Traces the propagation events occurring at the current node and stops at the beginning of the next node visit IBM ILOG SOLVER DEBUGGER USER S MANUAL 11 e View Search Tree Displays a graphic representation of the search allowing you to visualize each step of the execution e Decision Stack Inspects the list of decisions taken starting from the root node to the selected node e Inspect Current Node Inspects the current choice point in the execution e Propagation Spy Displays the trace of propagation events and the re
51. n array of integer variables click on the corresponding tab in the Output window In this example because of the presolve that occurs when a model is extracted the x1 0 variable replaces the expected queens 0 Output Window x IBM ILOG SOLVER DEBUGGER USER S MANUAL 25 To visualize the bounds of an array of integer variables click on the corresponding tab in the Output window Output Window To visualize the values of an array of integer variables click on the corresponding tab in the Output window Output Window To visualize the state of an array of integer variables interpreted as Boolean click on the corresponding tab in the Output window In this example the colors have the following meaning wheat stands for false blue stands for true and grey stands for undetermined Output Window 26 ILOG SOLVER DEBUGGER USER S MANUAL Visualizing Activity Domains Scheduler Specific Activity Domains are specific to the product IBM ILOG Scheduler The Activity Domains dockable window shows the algorithm reducing the domains of the activities during the propagation Activity Domains x Mode Selectors ILOG SOLVER DEBUGGER USER S MANUAL 27 The following figures represent the evolution of Activity Domains throughout the propagation Start End Min Min A T Start End Max Max Because of the breakable nature of some of the activities the Start Min End
52. n interest in the float variable var The parameter var indicates the variable to consider If the parameter browse is true the model should be displayed in the Debugger Model Browser If the parameter t race is true the variables must be traced The parameter option gives access to a graphical monitoring of the variable displaying its range or value IBM ILOG SOLVER DEBUGGER USER S MANUAL 67 void registerVariable IloFloatVarArray var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled const char name 0 Registers an interest in the array of float variables var The parameter var indicates the array of variables to consider If the parameter browse is true the model should be displayed in the Debugger Model Browser If the parameter t race is true the variables must be traced The parameter opt ion gives access to a graphical monitoring of the variable displaying its range or value void registerVariable IloIntVar var IloBool trace IloTrue IloBool browse IloTrue IlcVisualizeOption option IlcVisualizeDisabled Registers an interest in the integer variable var The parameter var indicates the Ilovar to consider If the parameter browse is true then if the model is browsed it will be displayed in the Debugger Model Browser If the parameter t race is true variables must be traced and taken into account in the Christmas Tree The parameter option gives access to a gra
53. nctions IlcSchedulerTrace getSchedulerTrace const Returns the graphical Scheduler trace added by the instance IlcSchedulerDebugger void registerActivity IloActivity activity IloBool toBrowse IloTrue IloBool toTrace IloTrue IlcVisualizeOption displayDomain IlcVisualizeDisabled Registers an interest in an activity The parameter activity sets the IlcActivity to consider If the parameter t oBrowse is true the model will display the activity in the Debugger Model Browser If the parameter toTrace is true the activity must be traced and the start and end variables must be taken into account in the Christmas Tree If the parameter displayDomain is true the activity will be monitored graphically in the Activity Domains panel void registerResource IloResource resource IloBool toBrowse IloTrue Registers an interest in a resource The parameter resource indicates the IloResource to consider If the parameter toBrowse is true the option Browse Active Model will be activated in the Debugger Model Browser void registerUnaryResourceArray IloArray IloUnaryResource amp resources const char name IloBool toBrowse IloTrue Registers an interest in a unary resource array The parameter resources indicates the array of unary resources to consider The parameter name indicates the name of the array to be displayed in the browser If the parameter t oBrowse is true the option Browse Active Model will be acti
54. nter the propagation detail click on the Step In button Trace all the Initial Propagation events without stopping at each event by clicking on the Continue Trace Till Next Node button Trace the Initial Propagation and stop at each event by clicking on the Step In button Leave the propagation detail at that point by clicking on the Step Out button e To skip the Initial Propagation click on the Step Over button 4 The Debugger stops at the first search node the first child of the root The following options are available e To visualize the decisions and the propagation events triggered within the first search node in the Propagation Spy click on the Step In button e To go to the beginning of the next node click on the Step Over button e To continue and interrupt the execution when you decide to click on the Continue Run button and then on the Break button e To abort the execution click on the Abort button Tracing the Propagation at a Specific Node Because of the nondeterministic nature of the search it is not possible to draw the tree in advance A second run is necessary to focus on a segment of the tree You can access statistical information about the Initial Propagation through the Search Tree root Tracing the Propagation at a Specific Node in the Search Tree To trace the propagation at a specific node proceed as follows 1 Run the Debugger a first time Skip the Initial Propagation Wait until th
55. odel 119 objects as 11c objects Solver extract model 6 Initialize the Debugger for each running session and solve by placing your optimization loop inside the debugging loop while debugger initialize debugging loop solver startNewSearch myGoal while solver next optimization loop ostrstream text text lt lt solver getValue makespan lt lt endl lt lt ends debugger sendSolution text str solver endSearch 7 Close the connection to the GUI and release memory debugger close catch IloException amp ex cerr lt lt Error lt lt ex lt lt endl env end Customizing a Pure Scheduler C Application To customize the Debugger for a pure Scheduler C application proceed as follows You need two include files before the solver declaration include lt ilsolver solverdebugger h gt include lt ilsched schedulerdebugger h gt try IloEnv env IloSolver solver env 1 Instantiate the Debugger IlcSolverDebugger debugger solver IBM ILOG SOLVER DEBUGGER USER S MANUAL 2 State the model using 110 modeling objects IloModel model env IloSchedulerEnv schedEnv env IloInt horizon 0 IloInt k for k 0 k numberOfActivities k horizon durations k Warning Make sure that you set the global horizon for every activity schedEnv setHorizon horizon 3 Name your Ilo objects setName API 4 Create a S
56. opagation events and the global domain reduction because many propagation events can be triggered with little impact on the domain reduction Using the Constraint Profiler You can access the current state of statistics at any moment during the search or the initial propagation by selecting the menu item View gt Constraint Profiler or by clicking on the Constraint Profiler button amp X in the tool bar Ey 30 IBM ILOG SOLVER DEBUGGER USER S MANUAL Constraint Profiler x Constraints f Propagation Events Domain Reduction IIcAIIDiff n amp 5CO18 x2 0 4 2 1 1 llclnt amp ddConstraintl 2 7 5 4 2 0 IlclntAddConstrainti x2 6 5 3 0 1 1271 170 IlclIntAddConstraintl x1 6 7 9 12 13 1242 162 IlolntAddConstraintl 2 4 3 2 1 3 licInt amp ddConstraintl 2 5 4 2 0 2 IlolntAddConstraintl 1 4 5 6 9 11 IledntAddConstraintifx1 5 6 8 10 12 1138 136 llcIntAddConstraint x2 3 0 2 3 llclnt amp ddConstraintl 1 3 6 8 9 llclnt amp ddConstraintl 2 2 1 3 5 llelnt amp ddConstraintl 1 2 5 7 S Figure 1 5 The Constraint Profiler for the debugnqueen problem The Constraint Profiler displays statistics by constraint about the number of propagation events triggered and the effective domain reduction achieved when the corresponding constraint is active You can double click on a column title to sort the lines by e alphabetical order of constraint description
57. out constraint calls and efficiency in terms of domain reduction It also enables you to create your own 2D animated graphic representation of the problem being solved Drawing Board This chapter explains how to connect and use Solver Debugger It includes the following sections Installation Instrumenting Your Own Code Visualizing the Search Visualizing Propagation Combining Search Tree Visualization and Propagation Information 9 99 99 Using the Constraint Profiler IBM ILOG SOLVER DEBUGGER USER S MANUAL 1 Installation Using the Drawing Board Improving your Application In order to start using Solver Debugger you need to know Prerequisites for Using Solver Debugger The Distribution Directories Examples Provided Prerequisites for Using Solver Debugger To use the Debugger library you need IBM ILOG Solver IBM ILOG Concert The only add on for which specific features are supported is IBM ILOG Scheduler The Distribution Directories The Solver Debugger and its add on the Scheduler Debugger are to be installed in the same root directory as the Solver product and the Scheduler product respectively typically ilog solver and ilog sched The distribution structure includes the following directories where lt solverdir gt represents your Solver installation directory and lt scheddir gt your Scheduler installation lt solverdir gt bin lt platform gt lt libformat gt conta
58. p Out button 11 Step Over button 11 support customer Viii T tool bar execution 11 standard 11 tracing Initial Propagation 23 propagation at a specific node 23 propagation events 21 Tree Inspector 29 type definition I1cVisualizeOption 69 V Variable Domains colors 26 disabling visualization 25 displaying Boolean variables 25 integer variable bounds 25 26 integer variable domain 25 integer variable value 25 26 setting visualization options 24 state of integer variable interpreted as Boolean 26 visualizing 25 View Constraint Profiler button 12 View Search Tree button 12 visualizing Activity Domains 27 both propagation events and search 29 propagation 21 search 12 Variable Domains 25 76 IBM ILOG SOLVER DEBUGGER USER S MANUAL
59. p th void makeRoundedRectangle IlcIntE xLowerLeft IlcIntE yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp rc IlcIntExp th void setBackgroundColor const char col O O IlcDrawingBoard IlcSolverDebugger debugger IloInt width 100 TloInt height 100 IloNum scaleH 15 4505 IloNum scaleV 1 0 Creates a new Drawing Board The width parameter indicates the width of the panel when undocked The neight parameter indicates the height of the panel when undocked The parameter scaleH has a value between 0 and 2 It indicates the horizontal scale factor The parameter scalev has a value between 0 and 2 It indicates the vertical scale factor IlcDrawingBoard IlcDrawingBoardI impl 0 Creates a new handle class on the same Drawing Board implementation object IBM ILOG SOLVER DEBUGGER USER S MANUAL 55 Member Functions void clean Deletes all information from the Drawing Board IlcIntExp constantInt IloInt value const Creates an I1cIntExp object containing an integer constant IlcFloatExp constantNum IloNum value const Creates an I1cFloatExp object containing a floating point constant void drawArc IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat startAngle IlcFloat angleRange IloInt th Creates a nonbacktrackable arc identified by id and embedded in a rectangle The rectan
60. phical monitoring of the variable displaying its range or value void registerVariable IloIntVarArray var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled const char name 0 Registers an interest in the array of integer variables var The parameter var indicates the array of variables to consider If the parameter browse is true the model should be displayed in the Debugger Model Browser If the parameter t race is true the variables must be traced and taken into account in the Christmas Tree The parameter option gives access to a graphical monitoring of the variable displaying its domain range and value IBM ILOG SOLVER DEBUGGER USER S MANUAL licVisualizeOption Category Include File Description Synopsis Type Definition lt ilsolver debuggerbasics h gt The type definition IlcVisualizeOption is a visualization option that can be passed to IlcSolverDebugger registerVariable Or IlcSchedulerDebugger registerActivity typedef unsigned int IlcVisualizeOption typedef enum IlcVisualizeDisabled 0 IlcVisualizeDomain 1 IlcVisualizeInterval 2 IlcVisualizeValue 4 IlcVisualizeBoolean 8 IlcVisualizeOptionType IlcVisualizeOption can take the above values IBM ILOG SOLVER DEBUGGER USER S MANUAL 69 70 IBM ILOG SOLVER DEBUGGER USER S MANUAL A Abort button 11 Activity Domains 27 adding breakpoints in your code 2
61. problem records and ask usage questions on System z software products You can open track update and close a defect or problem record order corrective preventive toleration maintenance search for known problems or technical support information track applicable problem reports receive alerts on high impact problems and fixes in error and view planning information for new releases and preventive maintenance Contact via phone If you have an active service contract maintenance agreement with IBM or are covered by Program Services you may contact customer support teams via telephone For individual countries please visit the Technical Support section of the IBM Directory of worldwide contacts via http www ibm com planetwide IBM ILOG SOLVER DEBUGGER USER S MANUAL ix IBM ILOG SOLVER DEBUGGER USER S MANUAL Debugging and Performance Tuning for Solver based Applications The IBM ILOG Solver Debugger is composed of a GUI and a set of C libraries The C libraries enable a C application written on top of IBM ILOG Solver or IBM ILOG Scheduler to connect to the Debugger GUI in order to monitor trace and debug its execution or tune its performance Solver Debugger contains graphic facilities to monitor the search Search Tree the propagation Propagation Spy and Variable Domains and to combine search and propagation information Christmas Tree It provides a Constraint Profiler to obtain statistics by constraint ab
62. r On Windows you can use the shortcut provided in Start Menu gt ILOG gt ILOG Solver gt ILOG Solver Debugger By default the port used for communication between the GUI and your application is 4011 If you want to use a specific port number pass for example 1istensocket 8000 as an argument The GUI starts in initializing mode with a red patch in the bottom right corner of the window Solver Debugger is waiting for your application to connect 8 IBM ILOG SOLVER DEBUGGER USER S MANUAL File View Execution Debug Help la x Arguments Recent Files Quit Ctr Q IBM ILOG Solver Debugger Venim GT Ye Model Es Projects Console Solutions Optimization Log Initializing fun 1 Col 1 Connecting an Application To connect an example of an application go to the directory lt solverdir gt examples Compile and link a debugger example such as debugnqueen To start the application either select File gt Launch application orrun it from the command line The GUI switches to idle mode with a blue patch in the bottom right corner of the window The Run button is now active The GUI is ready for you to debug the application Note When using the debuggolomb example pass it two integer parameters the size of the problem and the filtering level of the a11diff constraint debuggolomb 6 0 0 basic filtering level debuggolomb 6 1 1 medium
63. rLeft the width rectWidth and the height rect Height The outline of the ellipse is of thickness th and the ellipse is filled with the color col void makeFilledLabel IlcIntExp x IlcIntExp y const char str const char col Creates a backtrackable filled label The label is anchored at the point x y contains the character string str and has the background color specified by co1 void makeFilledPolygon IlcIntVarArray x IlcIntVarArray y const char col IlcIntExp th IlcIntExp fillRule Creates a backtrackable polygon filled with the color col The th parameter indicates the line thickness The two integer array parameters x y specifying the X and Y coordinates must be of the same size The illRule parameter indicates which points are to be considered as being inside the polygon depending on the number of crossing segments that define the shape of the area to be filled There are two rules to define the shape setting the illRule parameter to 0 takes the EvenOdd Rule setting the illRule parameter to 1 takes the Winding Rule See the method drawFilledPolygon for an explanation of these rules void makeFilledRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight const char col IlcIntExp th Creates a backtrackable rectangle filled with the color co1 The rectangle is anchored at the point xLowerLeft yLowerLeft and its dimens
64. rawingBoard id return 0 static void ActivityOnDrawingBoard IlcActivity activity IlcDrawingBoard drawingBoard IloInt id drawingBoard makeNewGraphicObject activity getStartVariable whenDomain MyUpdateActivityDemon activity getManager activity drawingBoard id activity getEndVariable whenDomain MyUpdateActivityDemon activity getManager activity drawingBoard id activity getManager addReversibleAction MyGoalReDrawActivityOnBackt rack activity getManager activity drawingBoard id ILCGOAL2 MyIlcDrawingBoardCreation IlcDrawingBoard drawingBoard IlcScheduler scheduler drawingBoard clean IloInt id drawingBoard makeNewGraphicObject drawingBoard drawLine id 0 0 200 200 1 id drawingBoard makeNewGraphicObject drawingBoard drawArrow id 0 0 0 200 1 id drawingBoard makeNewGraphicObject drawingBoard drawArrow id 0 0 200 0 1 id drawingBoard makeNewGraphicObject drawingBoard drawLabel id 170 50 Min id drawingBoard makeNewGraphicObject drawingBoard drawLabel id 5 170 Max IBM ILOG SOLVER DEBUGGER USER S MANUAL IlcActivityIterator it scheduler while it ok IlcActivity activity it ActivityOnDrawingBoard activity drawingBoard 430 return 0 ILOCPGOALWRAPPER2 MyDrawingBoardCreation solver IlcDrawingBoard drawingBoard IlcScheduler scheduler return MyIlcDrawingBoardCreation solver drawingBoard schedu
65. rch Tree view in Solver Debugger Sends notification of the next node created to the new Search Tree Goes back to the previous Search Tree whenever endNestedSearch is called void breakExecution Interrupts the execution void browseAl11 Forces the Debugger to browse the model IBM ILOG SOLVER DEBUGGER USER S MANUAL 49 50 void close Closes the connection between the user application and the GUI server and releases the memory IloBool displayResult const Displays the result graphically In the current implementation by default this member function is automatically called at each solution In Scheduler applications it displays a Gantt chart with precedences int endNestedSearchTreeView Goes back to the parent Search Tree Considers the current Search Tree as terminated Returns the identification of the parent Search Tree IlcDebuggerI getImpl const Returns the underlying implementation object IloBool isActive const Returns true if the Debugger was set to active upon creation IloBool isAutomaticBrowse const Returns true if the Debugger is in automatic browse mode IloBool isAutomaticDisplay const Returns true if the Debugger is set to the automatic display mode for the result IloBool isConnected const Returns true if the connection with the GUI server is still active IloBool isTextual const Returns true if the Debugger was set to textual upon creation int newSearchTre
66. rd x Advanced Use of the Drawing Board The second set of member functions allows you to create and manage the graphic objects yourself First create a graphic object with the member function makeNewGraphicObject on the class I1cDrawingBoard This member function provides you with an identifier that will enable you to later refer to the graphic object IloInt id drawingBoard makeNewGraphicObject Then call the drawxXxx member functions These member functions take constants as arguments If you want to erase your graphic object you can do it with the member function eraseGraphic IBM ILOG SOLVER DEBUGGER UsER s MANUAL Example Creating a New Algorithm Animation for a Scheduling Application In the following snippet of code the code of the debugjobshopm example is changed in order to represent the minimum and maximum values of the variables in a 2D representation The x axis indicates the value of the minimum of the domain The y axis indicates the value of the maximum of the domain Thus the range of the variable domain can be represented by a 2D arrow When the arrow is on the diagonal min equals max which means that the variable is bound A colored arrow is created between the start and end variables of a set of activities Backtracking is handled by using reversible actions When searching for a solution the arrows start moving towards the diagonal Sometimes an arrow takes a negative slope which indicat
67. rners void drawGrid IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt cols IloInt rows IloInt th Creates a nonbacktrackable grid identified by id and embedded in a rectangle The rectangle is specified by the anchor points xLowerLeft yLowerLeft and the dimensions rectWidth rectHeight The columns and rows in the grid are specified by the integers cols and rows The lines of the grid are of thickness th void drawLabel IloInt id IloInt x IloInt y const char str Creates a nonbacktrackable label identified byia The label is anchored at the point x y and contains the character string str void drawLine IloInt id IloInt x1 IloInt yl IloInt x2 IloInt y2 IloInt th const char col black Creates a nonbacktrackable line identified byid The line drawn between the two points x1 y1 and x2 y2 15 of thickness th and default color black void drawPolyline IloInt id IlcInt x IlcInt yl IlcInt count IlcInt th Creates a nonbacktrackable polyline identified by id The two integer array parameters x y specifying the X and Y coordinates must be of the same size The count parameter indicates the number of point coordinates The tn parameter indicates the thickness of the line To obtain an empty polygon give the same value to the first X and last X and to the first Y and last Y IBM ILOG SOLVER DEBUGGER USER S MANUAL void drawRectangle IloInt id IloInt
68. roblem debugpheasant looks like in the Propagation Spy Propagation Events Variables nbR abbits nbPheasants E3 Post heads 20 nbRabbits nbPheasants j Propagate heads 20 nbRabbits nbPheasants Set Max 20 nbPheasants Process Demon heads 20 nbRabbits nbPheasants Var In Process nbPheasants g Propagate legs 56 4 nbRabbits 2 nbPheasants 1 Var In Process nbRabbits o Process Demon heads 20 nbRabbits nbPheasants amp Time E Var In Process nbPheasants Set Min 6 nbRabbits Set Min 9 nbPheasants The cell at the junction of an event line and a variable column is colored according to the type of event and shows the result of the event in a textual form You can follow the history of the domain reduction in that cell The correspondences between cell colors and the event types are Red fail Yellow inProcess Blue setValue Wheat removeValue Cyan setMin 9 9 9 8 9 Magenta setMax IBM ILOG SOLVER DEBUGGER USER S MANUAL Tracing the Initial Propagation To trace the Initial Propagation of your application proceed as follows 1 Select Stop At Initial Propagation from the Debug menu With this option the execution will be interrupted at the beginning of the Initial Propagation 2 Click on the Run button 3 The Initial Propagation is now displayed in the Propagation Spy window The following options are available e To e
69. sult of the propagation e View Constraint Profiler Computes profiling statistics and displays the Constraint Profiler for the current state of computation Visualizing the Search Solver Debugger provides you with a graphic representation of the search called the Search Tree The Search Tree allows you to visualize each step of the execution of your application This section covers the following points The Search Tree Monitoring Decisions Monitoring Solution Restoring Monitoring Restart Monitoring Local Search Monitoring Nested Search 12 IBM ILOG SOLVER DEBUGGER USER S MANUAL The Search Tree When you first launch an execution a drawing of the tree appears node by node in the Search Tree viewer If necessary interrupt the execution with the Break button The Debugger will stop at the beginning of a node visit If you previously closed the search tree views you can redisplay them by selecting the menu item View gt View Search Tree or by clicking on the corresponding button in the tool bar PS Search Tree x Choice Points 32 Failures 30 Soluionss3 P Figure 1 1 The Search Tree for the debuggolomb problem with 5 collapsed subtrees ILOG SOLVER DEBUGGER USER S MANUAL 13 14 The Node Life Cycle There are five node colors that correspond to the status of a node in the Search Tree as shown in the graphic below whenCreate Created but unexplor
70. t the point x1 y1 and ends at the point x2 y2 The thickness of the line is th and the default color of the arrow is black void makeEllipse IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp th Creates a backtrackable empty ellipse embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectWidth and the height rect Height The outline of the ellipse is of thickness th IBM ILOG SOLVER DEBUGGER USER S MANUAL 59 void makeFilledArc IlcIntExp xLowerLeft IlcIn void makeFilledEllipse IlcIntExp xLowerLeft IlcIn tExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp startAngle IlcFloatExp angleRange const char col IlcIntExp th Creates a backtrackable filled arc embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectWidth and the height rect Height The angle of the arc begins at position startAngle and moves in a clockwise direction the number of degrees indicated by angleRange The line of the arc is of thickness th and the segment is filled with the color col tExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight const char col IlcIntExp th Creates a backtrackable filled ellipse embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowe
71. tation Used in This Manual The following typographic conventions apply throughout this manual code extracts and file names are written in this typeface entries to be made by the user are written in angle brackets commands appear as File Open IBM software support handbook This guide contains important information on the procedures and practices followed in the service and support of your IBM products It does not replace the contractual terms and conditions under which you acquired specific IBM Products or Services Please review it carefully You may want to bookmark the site so you can refer back as required to the latest information We are interested in continuing to improve your IBM support experience and encourage you to provide feedback by clicking the Feedback link in the left navigation bar on any page The IBM Software Support Handbook can be found on the web at http www 14 software ibm com webapp set2 sas f handbook home html Accessing software support When calling or submitting a problem to IBM Software Support about a particular service request please have the following information ready IBM Customer Number The machine type model serial number for Subscription and Support calls Company name Contact name Preferred means of contact voice or email Telephone number where you can be reached if request is voice viii IBM ILOG SOLVER DEBUGGER USER S MANUAL Related product and version informat
72. th graphic objects that are automatically backtrackable aset that allows you to draw 2D graphic objects yourself in the Drawing Board without any automatic support for backtracking Note If you previously closed a drawing board panel you can redisplay it by selecting the menu item View gt View Drawing Board Basic Use of the Drawing Board The first set of member functions enables you to connect your 11c variables to parameters of the graphic object When all the parameters needed by a graphic object are known that is when the variables are bound the graphic object is drawn Upon backtracking the graphic object is cleared automatically The member functions begin with makexxxx and take I1c objects as arguments makeRectangle makeFilledPolygon or makeLabel for instance Because this set of member functions requires 11c and not Ilo objects call them in a goal for instance in the initial goal In the following example an 11cGoal1 IlcChessBoard is wrapped in an IloGoal rloChessBoard and aniloAndGoal is performed on IloChessBoard and the ordinary IloGenerate goal Example Drawing the Chessboard for the debugnqueen Problem Let s call 11o0ChessBoard a user defined goal whose role is to initialize a grid representing a chessboard and ellipses indicating the locations of the queens Here is an example of an IlcGoal wrapped as 110Goal ILCGOAL3 IlcChessBoard IlcInt nqueen IlcIntVarArray queens IlcDrawingBoard
73. variable is greater than or equal to val 66 IBM ILOG SOLVER DEBUGGER USER S MANUAL void breakIfDomainMinGe IloIntVar var IloInt val Registers a conditional breakpoint The execution is interrupted at this conditional breakpoint if the domain min of the specified integer variable is greater than or equal to val void displayProfiling Creates and displays the Constraint Profiler window from code Equivalent to clicking on the Constraint Profiler button from the GUI IloSolver getSolver const Returns the same IloSolver instance as the one passed to the constructor IloBool initialize Initializes a running session Returns false if a Quit order comes from the GUI void profileAllConstraints IloBool all By default all constraints are profiled To restrict the list of monitored constraints use profileAllConstraints IloFalse and call the registerConstraint method on the constraints your are interested in void registerConstraint IloConstraint cst IloBool browse IloTrue IloBool trace IloTrue Registers an interest in the constraint cst The parameter cst indicates the constraint to consider If the parameter browse is true the model should be displayed in the Debugger Model Browser If the parameter t race is true the variables must be traced void registerVariable IloFloatVar var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled Registers a
74. vated in the Debugger Model Browser void setHorizon IlcInt horizon Gives the horizon to consider in the graphical representation of the Activity Domains This member function is to be called after registering the activities The parameter horizon sets the maximum value of the upper bounds of all activity end variables 64 IBM ILOG SOLVER DEBUGGER USER S MANUAL licSolverDebugger Category C class Description Debugger in an IBM ILOG Solver environment Include File Synopsis public class class IlcSolverDebugger ilsolver solverdebugger h IlcSolverDebugger IloSolver solver void void void void void void void IloSolver getSolver IloBool active IloBool textual double pollingPeriod 4011 const char guiServer IloBool nestedSearch IloNum val IloInt val breakIfDomainMaxLe IloFloatVar var IloIntVar var breakIfDomainMinGe IloFloatVar var IloIntVar var int socketPort breakIfBound IloFloatVar var breakIfBound IloIntVar var breakIfDomainMaxLe breakIfDomainMinGe displayProfiling const IloBool initialize void profileAllConstraints IloBool all void registerConstraint IloConstraint cst void void void void IloBool browse IloBool trace The class IlcSolverDebugger provides an interface to the IBM ILOG Solver public IlcDebugger IloTrue IloFalse 1 0 0 IloFalse IloNum val IloInt val IloNu
75. ver Debugger 0c cece eee eee ee RII III vii What You Need to KNOW 1 cc cece eee nh n hh nnn vii What This Manual Contains 2 cee eee eee viii Notation Used in This Manual 00 0c cece eee viii IBM software support handbook 0 cece eee eee eee mnn viii Accessing software Support 0 2 ee tte teens viii Contact Via Web aca iia pnp BNG Bak RUN DIS IRE A Fai eder Aas hah Dad ix Gorntactviaiphone zc eas Sar wet ERREUR EE VA ER AG d EPA ix Chapter 1 Debugging and Performance Tuning for Solver based Applications 1 Installatlon Lm 2 Prerequisites for Using Solver Debugger cece ee 2 The Distribution Directories 0 0 0 RII 2 Examples Provided acne eens Cia ba ea IM Ade aoe oP RR Ee 3 Instrumenting Your Own Code 00 0 cece eee eee n nn nnn 5 Customizing a Pure Solver C Application 0 0 0 0 cece eee 5 Customizing a Pure Scheduler C Application 0 0 0 0 cece cette 6 Setting Up Solver Debugger 0 eee eee eee nnn 8 Launching the GU Loi Db pi PE dead bpd Ies bad bas eee E Bo 8 Connecting an Application men 9 IBM ILOG SOLVER DEBUGGER USER S MANUAL iii CONTENTS Debugger Commands e eee eee eee enn n n nnn 11 Visualizing the Search 4 eee eee eee n n n nnn 12 Phe Search Tree rss osi ache eodd Pen hana cat ieee weed YR d 13
76. xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt th Creates a nonbacktrackable empty rectangle identified by ia The rectangle is anchored at the point xLowerLeft yLowerLeft and its dimensions are rectWidth rectHeight The outline of the rectangle is of thickness th void drawRoundedRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat rc IloInt th Creates a nonbacktrackable empty rectangle with rounded corners identified byid The parameters are similar to those of drawRect angle above except for rc which specifies the amplitude of the arc used for the rounded corners void eraseGraphic IloInt id Erases a nonbacktrackable graphic identified byid void makeArc IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp startAngle IlcFloatExp angleRange IlcIntExp th Creates a backtrackable arc embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectWidth and the height rectHeight The angle of the arc begins at position start Angle and moves in a clockwise direction the number of degrees indicated by angleRange The line of the arc is of thickness th void makeArrow IlcIntExp xl IlcIntExp yl IlcIntExp x2 IlcIntExp y2 IlcIntExp th const char col black Creates a backtrackable arrow that starts a
77. ze Tree Inspector 01x Alignment Center Node color Type and Domain Reducti Node size Propagation Events OK Cancel 3 The Christmas Tree appears in the Search Tree view Search Tree x 9 Choice Points 32 Failures 30 3 Solutions 3 P 319 events eff 63 25 To obtain statistics on domain reduction you must register the variables you are interested in with IloSolverDebugger registerVariable for pure Solver variables and IBM ILOG SOLVER DEBUGGER USER S MANUAL 29 IlcSchedulerDebugger registerActivity for Scheduler activities and pass IloTrue as a third argument Interpreting the Christmas Tree The information added to the Search Tree includes the number of propagation events and the effective global domain reduction at each node The size of the nodes becomes proportional to the number of propagation events fired at each node which is highly correlated with the time spent at each node The meaning of the colors remains unchanged except that the color is lighter or darker depending on the effective domain reduction obtained during the propagation at this node The statistical information about the Initial Propagation is concentrated in the tree root All nodes are not equal You can detect if in failure nodes red or pink nodes the failure is discovered early small node or late large node It is important to distinguish between the number of pr
Download Pdf Manuals
Related Search
Related Contents
Sony CFD-G55 User's Manual Kangaroo ePUMP Tripp Lite 500FC User's Manual Gigabyte GA-H67A-D3H-B3 motherboard 講 座 - 三鷹市 Invacare 440 User's Manual T'nB FMCT01 FM transmitter Copyright © All rights reserved.
Failed to retrieve file