Home

ILOG Solver 6.1 Debugger User`s Manual

image

Contents

1. nnnenennennununenannanune vii What You Need to Know non un eh n nan hh hh nan naa vii What This Manual Contains oooooccccccrn vii Notation Used in This Manual Liri viii Where to Get More Information xnuennennununenannunua viii Users Mailing list Serera nea kail previo aLaaa ered ix Web Site i Late uci mu a re AAS ES ad v RE UR Bele a Seda ah ix Chapter 1 Debugging and Performance Tuning for Solver based Applications 1 Installation 5 5e pic s neRi ia RR RR RR ur 2 Prerequisites for Using Solver DebugQer oococccocoococn aurar 2 The Distribution Directories 2 Examples Provided pi A A a d 3 Instrumenting Your Own Code 2 22 cece eee eee eee eee eee 5 Customizing a Pure ILOG Solver C Application reee 5 Customizing a Pure ILOG Scheduler C Application o 6 Setting Up ILOG Solver Debugger cece cece eee eee eee tenes 8 Launching the GUI voca eer d GR E Rb tasakaal lai rd eid 8 Connecting an Application L 9 Debugger Commands a o mehe e I NAA 11 ILOG SOLVER DEBUGGER USER S MANUAL iii CONTENTS Visualizing the Search een emane nne nene nen eat naene nn ataman nnns 12 The Search Tree 4 oov vide it cas telli dialer 13 Monitoring DEGISIONS 4 toi oe Kana ALA n Qe Ea 16 Monitoring Solution Restoring e mh 19 Monitoring Restart rielabora Be
2. Note If you previously closed a drawing board panel you can redisplay it by selecting the menu item View 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 I1c and not Ilo objects call them in a goal for instance in the initial goal In the following example an IlcGoal 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 I10ChessBoard 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 IloGoal ILCGOAL3 IlcChessBoard IlcInt nqueen IlcIntVarArray queens IlcDrawingBoard drawingBoard drawingBoard clean drawingBoard makeGrid drawingBoard constantInt drawingBoard constantInt drawingBoard constantInt drawingBoard constantInt 0 0 nqueen 10
3. Changing the rules of business ILOG Solver 6 1 Debugger User s Manual April 2005 COPYRIGHT NOTICE Copyright 1987 2005 by ILOG S A 9 Rue de Verdun 94253 Gentilly Cedex France and ILOG Inc 1080 Linda Vista Ave Mountain View California 94043 USA All rights reserved General Use Restrictions This document and the software described in this document are the property of ILOG and are protected as ILOG trade secrets They are furnished under a license or nondisclosure agreement and may be used or copied only within the terms of such license or nondisclosure agreement No part of this work may be reproduced or disseminated in any form or by any means Without the prior written permission of ILOG S A or ILOG Inc Trademarks ILOG the ILOG design CPLEX and all other logos and product and service names of ILOG are registered trademarks or trademarks of ILOG in France the U S and or other countries All other company and product names are trademarks or registered trademarks of their respective holders Java and all Java based marks are either trademarks or registered trademarks of Sun Microsystems Inc in the United States and other countries Microsoft Windows and Windows NT are either trademarks or registered trademarks of Microsoft Corporation in the United States and other countries C N T E N T S Contents Preface Before You Begin oraris tau eo lr ERR ERR ea vii About ILOG Solver Debugger
4. e Propagation Spy Displays the trace of propagation events and the result of the propagation e View Constraint Profiler Computes profiling statistics and displays the Constraint Profiler for the current state of computation Visualizing the Search 12 ILOG 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 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 is Search Tree x ChoicePoints 32 Failures 30 Solutions 3 P fe n NG gaan Figure 1 1 The Search Tree for the debuggolomb problem with 5 collapsed subtrees ILOG SOLVER DEBUGGER USER S MANUAL 13 The Node Life Cycle There are five node colors that correspond to the status of a node in the Search Tree as
5. Before You Begin This manual provides you with all the information you need to use ILOG Solver Debugger About ILOG Solver Debugger The 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 ILOG Solver and 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 ILOG Solver Debugger including its particular windowing system 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 ILOG SOLVER DEBUGGER UsER s MANUAL vii Notation 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 gt Open Where to Get More Information viii For technical support of ILOG Solver Debugger contact your local distributor or if you are a direct ILOG customer contact Region E mail Telephone Fax France solver support Q ilog fr 0 800 09 27 91 33 0 1 49 08 35 10 num ro vert 33 0 1 49 08 35 62 Germany solver support ilog de 49 6172 40 60 33 49 6172 40 60 10 Spain solver support
6. The parameter option gives access to a graphical 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 trace 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 ILOG SOLVER DEBUGGER USER S MANUAL IlcVisualizeOption Category Type Definition Include File lt ilsolver debuggerbasics h gt Description The type definition IlcVisualizeOption is a visualization option that can be passed to IlcSolverDebugger registerVariable or IlcSchedulerDebugger registerActivity Synopsis typedef unsigned int IlcVisualizeOption typedef enum IlcVisualizeDisabled 0 IlcVisualizeDomain 1 IlcVisualizeInterval 2 IlcVisualizeValue 4 IlcVisualizeBoolean 8 IlcVisualizeOptionType IlcVisualizeOption can take the above values ILOG SOLVER DEBUGGER USER S MANUAL 69 70 ILOG SOLVER DEBUGGER USER S MANUAL A Abort button 11 Activity Domains 27 adding breakpoints in your co
7. 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 IlcDrawingBoard C class 61 74 ILOG SOLVER DEBUGGER USER S MANUAL makeLabel member function DrawingBoard C class 61 makeLine member function a IlcDrawingBoard C class 61 makeNewGraphicObject member function IlcDrawingBoard C class 61 makePolyline member function c c P lcDrawingBoard C class 61 R c R H makeRectangle member function DrawingBoard C class 61 makeRoundedRectangle 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 H 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 O online documentation 2 p propagation events 21 31 statistics 29 tracing at a specific node 23 visualizing 21 Propagation Spy button 12 colors 22 description 17 event types 22 using 21 42 R registe
8. 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 a decision taken during the search anoptimization 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 IlcTrace and IlcSchedulerTrace mechanisms See ILOG Solver and 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 ILOG SoLvER DEBUGGER USER S MANUAL 21 The figure below shows what the tracing of the Initial Propagation for the Pheasants and Rabbits problem debugpheasant looks like in the Propagation Spy Propagation Events Variables nbRabbits nbPheasants E3 Post heads 20 nbRabbits nb
9. the x1 0 variable replaces the expected queens 0 Output Window El 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 gt 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 ILOG Scheduler The Activity Domains dockable window shows the algorithm reducing the domains of the activities during the propagation 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 I I EEE KETT Start End Max Max Because of the breakable nature of some of the activities the Start Min End Min blue rectangle and the Start Max End Max red rectangle may not always be the same size Start End Min Min I Overlapped emma TT Time Window Stirt si Max Max As soon as end min passes st
10. 47 IlcDebugger Debugger C class 49 beginNestedSearchTreeView 49 breakExecution 49 close 50 constructor 49 displayResult 50 endNestedSearchTreeView 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 makeLine 61 ILOG SoLvER DEBUGGER USER S MANUAL 73 makeNewGraphicObject 61 makePolyline 61 makeRectangle 61 makeRoundedRectangle 62 setBackgroundColor 62 IlcSchedulerDebugger Debugger C class constructor 63 getSchedulerTrace 64 registerActivity 64 registerResource 64 registerUnaryResourceArray 64 setHorizon 64 IlcSolverDebugger Debugger C class breakIfBound IloFloatVar 66 breakIfBound IloIntVar 66 breakIfDomainMaxLe IloFloatVar 66 breakIfDomainMaxLe IloIntVar 66 breakIfDomainMinGe IloFloatVar 66 breakI
11. IloBool all void registerConstraint IloConstraint cst IloBool browse IloTrue IloBool trace IloTrue void registerVariable IloFloatVar var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled void registerVariable IloFloatVarArray var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled const char name 0 void registerVariable IloIntVar var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled void registerVariable IloIntVarArray var IloBool browse IloTrue IloBool trace IloTrue IlcVisualizeOption option IlcVisualizeDisabled const char name 0 ILOG SOLVER DEBUGGER USER S MANUAL 65 Constructor Member Functions void void void void void 66 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 active 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
12. IloInt rectHeight IlcFloat startAngle IlcFloat angleRange const char col IloInt th Creates a nonbacktrackable filled arc identified byid and 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 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 56 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 byia and embedded in a rectangle The rectangle is specified by the lower left coordinates xLowerLeft yLowerLeft the width rectwidth and the height rectHeight The outline of the ellipse is of thickness th and the ellipse is filled with the color col void drawFilledLabel IloInt id IloInt x IloInt y const char str const char col Creates a nonbacktrackable filled label identified byia The label is anchored at the point x y contains the character string str 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 byid and filled with the
13. IloSolver object to which the constraints are added With the parameter 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 socket Port 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 val 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 val 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 con
14. Lo P Cep 19 Monitoring Local Search 19 Monitoring Nested Search eee eee 20 Visualizing Propagation nan hn 21 Events ic rd AP ab eh eee lai ea i A PURUS 21 Using the Propagation Spy LL 21 Tracing the Initial Propagation ee nts 23 Tracing the Propagation at a Specific Node 1 0 eet 23 Visualizing Variable Domains llis RII IIIA 24 Visualizing Activity Domains Scheduler Specific e 27 Combining Search Tree Visualization and Propagation Information 29 Creating the Christmas Tree 29 Interpreting the Christmas Tree 30 Using the Constraint Profiler xnnuuennnnnnunen ann unua 30 Using the Drawing Board eee hh n hn 31 Basic Use of the Drawing Board 32 Advanced Use of the Drawing Board 34 Improving your Application nan eee 38 Analyzing Right Subtrees nn 38 Tutorial Tuning the Propagation in the debuggolomb Example 40 Solver Debugger API ss ssib na aa elia ta 45 lcAddOnDebugger is O e 47 UEDEBUGGAF 4 2o iaia td dnd 49 li DrawingBodra a ma ea karika HA Bl redes artes p wl PER AER SACRE Ka Bd 53 llCcSchedulerDebugger cece ttt 63 llcSolverDebugger Aa 65 licVisualize Option aa RNGA Laks nad il i A a 69 ILOG SOLVER DEBUGGER USER S MANUAL CONTENTS ILOG SOLVER DEBUGGER USER S MANUAL v CONTENTS vi ILOG SOLVER DEBUGGER USER S MANUAL
15. MANUAL 43 44 ILOG SOLVER DEBUGGER USER S MANUAL Solver Debugger API This section contains the C API for the ILOG Solver Debugger ILOG SOLVER DEBUGGER USER S MANUAL 45 46 ILOG SOLVER DEBUGGER USER S MANUAL IIcAddOnDebugger Category C class Description The class IlcAddOnDebugger is the base class for the Debugger classes specialized in debugging an ap plication based on an add on for ILOG Solver Include File lt ilsolver addondebugger h gt Synopsis class IlcAddOnDebugger public IlcAddOnDebugger IlcAddOnDebuggerI impl 0 IloBool displayResult const IlcAddOnDebuggerI getImpl const dej 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 called at each solution In Scheduler applications it displays a Gantt chart with precedences IlcAddOnDebuggerI getImpl const Returns the implementation object ILOG SOLV ER DEBUGGER USER S MANUAL 47 48 ILOG SOLVER DEBUGGER USER S MANUAL IIlcDebugger Category Description Include File Synopsis Constructor Member Functions C class The class ILcDebugger is a handle class on an instance of the implementation class IlcDebuggerI This class manages the debugging proto
16. 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 customizing your application ILOG Scheduler C application 6 ILOG 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 C class 57 dr
17. Tree for the debuggolomb problem with a basic level of propagation Search Tree x m Choice Points 15 Failues 13 Solutions3 P gt EN 319 events eff 63 25 t E N a o E A Pi Rei A 234 events gf H 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 bv looking at the root node The efficiencv of domain reduction is the same 63 25 ILOG SOLVER DEBUGGER USER S MANUAL 41 Using the Propagation Spy Inspect the Initial Propagation ILOG 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 Extended filter level difference 11 difference 11 Var In Process difference 1 3 Var In Process graduations 2 sy Process Demon IlelntExpDomainConst A Process Demon llclntExpDomainConst Y Process Demon llclntExpDomainConstraintl E Process Demon llcIntE pDomainConstraintl CI Var In Process differencelb E Process Demon IlcIntExpDomainConstraintlf Var In Process differencel Yar In Process difference 1 B Var ln P
18. 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 to be filled There are two rules to define the shape setting the i11Rule parameter to 0 takes the EvenOdd Rule setting the i11Rule 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 polygon EvenOddRule WindingRule before fill ILOG SoLvER DEBUGGER USER S MANUAL 57 void drawFilledRectangle Ilolnt id Ilolnt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight const char col IloInt th Creates a nonbacktrackable rectangle identified bvid 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 drawFilledRoundedRectang
19. domain visualization specify it debugger registerVariable myVar2 IloTrue IloTrue IlcVisualizeDomain Extract the model 110 objects as I1c objects solver extract model 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 H solver endSearch Close the connection to the GUI and release memory debugger close catch IloException amp ex cerr Error ex endl 3 env end Customizing a Pure ILOG Scheduler C Application To customize the Debugger for a pure ILOG 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 A 1 IloEnv env IloSolver solver env Instantiate the Debugger IlcSolverDebugger debugger solver ILOG SOLVER DEBUGGER USER S MANUAL 2 State the model using Ilo modeling objects IloModel model env IloSchedulerEnv schedEnv env IloInt horizon 0 IloInt k for k 0 k lt numberOfActivities k horizon durations k Warning Make sure that you set the gl
20. ilog es 34 91 710 2480 34 91 372 9976 United solver support ilog co uk 44 0 1344 661 630 44 0 1344 661 601 Kingdom Rest of Europe solver support Q ilog fr 433 0 1 49 08 35 62 433 0 1 49 08 35 10 Japan solver support Q ilog co jp 81 3 5211 5770 81 3 5211 5771 Singapore solver support Oilog com sg 65 6773 06 26 65 6773 04 39 North America solver support ilog com 1 877 ILOG TECH 1 877 8456 4832 toll free or 1 650 567 8080 1 650 567 8001 We encourage you to use e mail for faster better service ILOG SOLVER DEBUGGER USER S MANUAL Users Mailing List The electronic mailing list solver list ilog fr is available for you to share your development experience with other Solver users This list is not moderated but subscription is subject to an on going maintenance contract To subscribe to solver list send an e mail without any subject to solver list owner ilog fr with the following contents subscribe solver list your e mail address if different from the From field first name last name your location company and country maintenance contract number maintenance contract owner s last name Web Site On our web sites you will find a wealth of information about constraint programming in a range of articles and conference papers explaining the theoretical background and technical features of ILOG Solver and other ILOG products In ad
21. in the Standard Tool Bar Your application has built the optimization 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 Bat E El After clicking on the Run button the Execution Tool Bar appears Your application returns from the initialize method and solving starts x 3 n Elf e 5 e o As BO 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 ILOG SOLVER DEBUGGER USER S MANUAL 11 im fi e View Search Tree Displavs a graphic representation of the search allowing vou 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
22. provides a Constraint Profiler to obtain statistics by constraint about 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 ILOG Solver Debugger It includes the following sections Installation Instrumenting Your Own Code Visualizing the Search Visualizing Propagation Combining Search Tree Visualization and Propagation Information Using the Constraint Profiler 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 ILOG Solver 6 1 ILOG Concert 2 1 The only add on for which specific features are supported is ILOG Scheduler 6 1 The Distribution Directories The ILOG Solver Debugger and its add on the ILOG Scheduler Debugger are to be installed in the same root directory as the ILOG Solver product and the ILOG Scheduler product respectively typically ilog solver60 and ilog sched60 The distribution structure includes the following directories where lt solverdir gt represents your Solver installation directory and lt scheddir gt your Scheduler ins
23. th void makeLabel IlcIntExp x IlcIntExp y const char str void makeGrid IlcIn x void makeLine IlcIntExp x1 IlcIntExp yl 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 IlcIntExp th void makeRoundedRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp rc IlcIntExp th void setBackgroundColor const char col F IlcDrawingBoard IlcSolverDebugger debugger IloInt width 100 IloInt height 100 IloNum scaleH 10 IloNum scaleV 1 0 Creates a new Drawing Board The width parameter indicates the width of the panel when undocked The height 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 ILOG SoLvER DEBUGGER USER S MANUAL 55 Member Functions void clean Deletes all information from the Drawing Board IlcIntExp constantInt IloInt value const Creates
24. this problem is to schedule a number of jobs on a set of machines in order to minimize completion time 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 ILOG Solver or ILOG Scheduler applications Customizing a Pure ILOG Solver C Application Customizing a Pure ILOG Scheduler C Application Customizing a Pure ILOG Solver C Application To customize the Debugger for a pure ILOG 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 Ilo modeling objects IloModel model env 3 Name your Ilo objects setName API myVar setName myVar ILOG SOLVER DEBUGGER UsER s MANUAL 5 4 Register the variables you are interested in for model browsing domain monitoring etc 7 Optional debugger registerVariable myVar If you want
25. time you click View whole content Click on this 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 16 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 ILOG Solver Debugger S Ele view Execution Debug Help lol lai xl a EURO s BS EQ Variables queens BEEBBBEZEZBB ER OOOOOOOOOOOOOO 1 KI 2 3 decision at node 5 Set Value 0 to x2 0 0 7 Set Value 2 to queens 1 2 7 Bet Min 5 to queens 2 4 7 Console solutions Optimization Log queens queens queens queens jal 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 Spv ILOG SOLVER DEBUGGER USER S MANUAL Current Node Inspector To use the Current Node Inspector docked panel proceed as follows 1 Select
26. vars 94 corresponds to a decision taken at the node pointed to by the green arrow 48 indicates the depth from the root ILOG SOLVER DEBUGGER USER S MANUAL 17 18 E 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 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 each intermediate solution type debugger setAutomaticDisplay IloFalse Then call debugger displayresult when the optimal so
27. Domain MyUpdateActivityDemon activity getManager activity drawingBoard id activity getEndVariable whenDomain MyUpdateActivityDemon activity getManager activity drawingBoard id activitv getManager addReversibleAction MvGoalReDrawActivitvOnBacktrack activity getManager activity drawingBoard id 3 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 ILOG SOLVER DEBUGGER USER S MANUAL IlcActivityIterator it scheduler while it ok IlcActivity activity it ActivityOnDrawingBoard activity drawingBoard it 3 return 0 ILOCPGOALWRAPPER2 MyDrawingBoardCreation solver IlcDrawingBoard drawingBoard IlcScheduler scheduler return MyIlcDrawingBoardCreation solver drawingBoard scheduler The solving is then done as follows IlcScheduler scheduler debugger getSolver IlcDrawingBoard drawingBoard debugger goal IloAndGoal solver getEnv MvDrawingBoardCreation solver getEnv drawingB
28. Float angleRange const char col IloInt th void drawFilledEllipse IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight const char col IloInt th void drawFilledLabel IloInt id IloInt x IloInt y const char str const char col void drawFilledPolygon IloInt id IloInt x IloInt y IloInt count const char col IloInt th Ilolnt fillRule void drawFilledRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight const char col IloInt th ILOG SOLVER DEBUGGER USER S MANUAL 53 54 void void void void void void void void void void void void void void void drawFilledRoundedRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat rc const char col IloInt th drawGrid IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt cols IloInt rows IloInt th drawLabel IloInt id IloInt x IloInt y const char str drawLine IloInt id IloInt xi IloInt yl IloInt x2 IloInt y2 IloInt th const char col black drawPolyline IloInt id IloInt x IloInt y IloInt count IloInt th drawRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt th drawRoundedRectangle IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight I
29. Pheasants El 6f Propagate heads 20 nbRabbits nbPheasants Set Max 20 nbPheasants AY Process Demon heads 20 nbRabbits nbPheasants Var In Process nbPheasants O Ej Propagate legs 56 4 nbRabbits 2 nbPheasants Set Max 14 nbRabbits Var In Process nbRabbits H y Process Demon heads 20 nbRabbits nbPheasants da Time Set Max 16 nbPheasants 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 Q 9 9 9 9 9 Magenta setMax 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 onthe Run button 3 The Initial Propagation is now displayed in the Propagation Spy window The following options are available To enter the propagation detail click on the Step In button Trace all the Initial Propagation events without stopping at each event b
30. Stepping in Model from the Debug menu to stop at the beginning of the execution or click on Break to interrupt the execution Click on the Inspect Current Node button in the debugging tool bar 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 starting from the root displayed between brackets For instance in the debugnqueen example 48 Set Value 47 to
31. a command prompt window go to the bin subdirectory where ILOG Solver is installed and type debugger 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 listensocket 8000 as an argument The GUI starts in initializing mode with a red patch in the bottom right corner of the window ILOG Solver Debugger is waiting for your application to connect 8 ILOG SOLVER DEBUGGER USER S MANUAL ILOG Solver Debugger la mi xj sel Oka File View Execution Debug Help l lx PEPA ILOG solver Debugger hcc ii T E Model Es Projects Optimization Log tnitializing in 1 Col1 Console Solutions 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 th
32. 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 bvid and 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 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 y1 IloInt x2 IloInt y2 IloInt th const char col black Creates a nonbacktrackable arrow identified by ia 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 rectHeight The outline of the ellipse is of thickness th void drawFilledArc IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth
33. art max the time window between these two dates is the surely overlapped time window Start End Min Min I I I Start End Max Max The activity is totally instantiated When start min start max and end 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 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 size Tree Inspector L JDIXI Alignment I Center y Node color Type and Domain Reducti Node size Propagation Events OK Cancel 3 The Christmas Tree appears in the Search Tree view Search Tre
34. awFilledPolygon 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 IlcDrawingBoard C class 59 72 ILOG SoLvER DEBUGGER USER S MANUAL drawRoundedRectangle member function IlcDrawingBoard C class 59 E endNestedSearchTreeView 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 constructor 47 49 displayResult 47 getImpl
35. cess 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 in the tool bar ILOG SOLVER DEBUGGER USER S MANUAL E DASBE18 Emm queens B lIcAlDiff 0Q45C018 tx210114 211 11 1482 217 llclnt amp ddConstraintl 2 7 5 4 2 0 Ilolnt ddConstraintl x1 7 18 10 12 14 10025819 21014 ATINI EE Ilelnt ddConstraintl x2 6 5 3 0 1 1271 170 Ilcint ddConstraintl x1 6 7 9 12 13 1242 licInt amp ddConstrainti s2 4 3 2 1 3 Ilelnt ddConstraintl x2 5 4 2 0 2 Constraintl 1 4 15 6 9 11 IlclntAddConstraintl x1 5 6 8 10 12 1138 136 Ilelnt ddConstraintl x2 3 0 2 3 llelnt ddConstraintits1 31 6 8 9 100 a liln ddConsramdb2 g 1 35 x44 38 llm ddConsuamd si p 73 BB 35 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 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 reduct
36. col with the Debugger GUI so that an external application or a specific engine can connect to the GUI lt ilsolver debugger h gt class IlcDebugger public IlcDebugger IlcDebuggerI impl 0 int beginNestedSearchTreeView void breakExecution void browseAll void close IloBool displayResult const int endNestedSearchTreeView IlcDebuggerI getImpl const return _impl 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 int beginNestedSearchTreeView Creates a new Search 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 browseAll Forces the Debugger to browse the model 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
37. de 24 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 ILOG SoLvER DEBUGGER UsER s MANUAL 71 close member function IlcDebugger Debugger C class 50 colors Drawing Board 34 event types 22 node types 14
38. dition to those freely accessible pages there are also technical support pages on our web sites They contain FAQ Frequently Asked Answered Questions and the latest patches for some of our products Changes are posted in the product mailing list Access to these pages is restricted to owners of an on going maintenance contract The maintenance contract number and the name of the person this contract is sent to in your company will be needed for access as explained on the login page AII three of these sites contain the same information but access is localized so we recommend that you connect to the site corresponding to your location and select the Tech Support Web page from the home page Americas http www ilog com Asia and Pacific Nations http www ilog com sg Europe Africa and Middle East http www ilog fr ILOG SOLVER DEBUGGER USER S MANUAL ix ILOG SOLVER DEBUGGER USER S MANUAL Debugging and Performance Tuning for Solver based Applications The 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 ILOG Solver or ILOG Scheduler to connect to the Debugger GUI in order to monitor trace and debug its execution or tune its performance ILOG 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
39. ditional breakpoint if the domain min of the specified floating point variable is greater than or equal to val 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 IlcVisual
40. e El Choice Points 32 Failures 30 Solutions 3 4 P 319 events eff 63 25 i i n Ka kin WAI RA 448 events To obtain statistics on domain reduction you must register the variables you are interested in with IloSolverDebugger registerVariable for pure Solver variables and ILOG SOLVER DEBUGGER USER S MANUAL 29 IlcSchedulerDebugger registerActivitv 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 propagation events and the global domain reduction because many propagation events can be triggered with little impact on the domain reduction Using the Constraint Profiler 30 You can ac
41. e alldi ff constraint debuggolomb 6 0 0 basic filtering level debuggolomb 6 1 1 medium filtering level debuggolomb 6 2 2 extended filtering level You can select the arguments before starting the application with File Arguments 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 GUls 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 T1cSolverDebugger 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 IloTrue or IloFalse as a second argument to the 11cSolverDebugger constructor based on a command line argument of your application ILOG SOLVER DEBUGGER UsER s MANUAL Debugger Commands Once you load an application the Run button becomes active
42. endl lt lt ends debugger sendSolution txt str best copy sol 3 3 5 Ifiterations are still left ask tabu if it is complete while iter gt 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 20 ILOG SOLVER DEBUGGER USER S MANUAL Visualizing Propagation ILOG 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 Scheduler applications described in Visualizing Activity Domains Scheduler Specific Events Events can take place
43. esources to consider The parameter name indicates the name of the array to be displayed in the browser If the parameter toBrowse is true the option Browse Active Model will be activated in the Debugger Model Browser void setHorizon IlcInt horizon 64 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 ILOG SoLvER DEBUGGER USER S MANUAL IIlcSolverDebugger Category Description Include File Synopsis C class The class 11cSolverDebugger provides an interface to the ILOG Solver Debugger in an ILOG Solver environment lt ilsolver solverdebugger h gt class class IlcSolverDebugger public IlcDebugger public IlcSolverDebugger IloSolver solver IloBool active IloTrue IloBool textual IloFalse double pollingPeriod 1 0 int socketPort 4011 const char guiServer 0 IloBool nestedSearch IloFalse void breakIfBound IloFloatVar var IloNum val void breakIfBound IloIntVar var IloInt val void breakIfDomainMaxLe IloFloatVar var IloNum val void breakIfDomainMaxLe IloIntVar var IloInt val void breakIfDomainMinGe IloFloatVar var IloNum val void breakIfDomainMinGe IloIntVar var IloInt val void displayProfiling IloSolver getSolver const IloBool initialize void profileAllConstraints
44. et Min 12 difference 3 Set Min 10 difference 2 i Figure 1 9 Propagation Spy for the debuggolomb problem with an intermediate filter level Using the Constraint Profiler Constraint Profiler d xj 7 PrpazaienEvens Donan Asian ntExpE ventHandlerConstraintl difference 11 ntExpE ventHandlerConstraintl difference 14 IDiff 0QA2CE80 difference 8 0 31 differer ntExpE ventHandlerConstraintl difference 13 ntSubConstrainti IlcIntExp 0042C838 31 0 ntExpE ventHandlerConstraintl difference 8 ntExpE ventHandlerConstraintl difference 10 ntSubConstrainti IlcIntExp 0042C670 31 0 ntExpE ventHandlerConstraintl difference 2 ntExpE ventHandlerConstraintl difference 3 ntExpE ventHandlerConstraintl difference 6 ntExpE ventHandlerConstraintl difference 7 ntExpE ventHandlerConstraintl difference ntExpE ventHandlerConstraint difference ntExpE ventHandlerConstraintl difference ntExpE ventHandlerConstrainti ntExpE ventH andlerConstraint difference 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 ILOG SOLVER DEBUGGER USER S
45. fDomainMinGe 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 ILOG Scheduler C application 6 ILOG 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 makeFilledEllipse member function IlcDrawingBoard C
46. he extended filter level ILOG 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 x al xja Choice Points 15 4 Falues 13 b Basic filter level Extended filter level NG abs Me A 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 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 6 with the number of propagation events occurring at the corresponding big failure node in Figure 1 7 Search Tree x Choice Points 32 Failures 30 Solutions 3 P 319 events eff 63 25 m 7 a Ap WA dx 448 events Figure 1 6 The Christmas
47. ic model browsing 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 ILOG SOLVER DEBUGGER USER S MANUAL 51 52 ILOG SOLVER DEBUGGER USER S MANUAL IlcDrawingBoard Category Description Include File Synopsis C class The class IlcDrawingBoard provides a 2D representation of the search algorithm lt ilsolver drawingboard h gt class IlcDrawingBoard public IlcDrawingBoard IlcSolverDebugger debugger IloInt width 100 IloInt height 100 IloNum scaleH 1 0 IloNum scaleV 1 0 IlcDrawingBoard IlcDrawingBoardI impl 0 void clean IlcIntExp constantInt IloInt value const IlcFloatExp constantNum IloNum value const void drawArc IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat startAngle IlcFloat angleRange IloInt th void drawArrow IloInt id IloInt x1 IloInt y1 IloInt x2 IloInt y2 IloInt th const char col black void drawEllipse IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt th void drawFilledArc IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat startAngle Ilc
48. ific 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 I1cSolverDebugger breakExecution in your own goals Visualizing 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
49. ion 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 getSize 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 ILOG 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 32 To create a Drawing Board instantiate an IlcDrawingBoard object and pass the IlcSolverDebugger instance as an argument IlcDrawingBoard drawingBoard debugger You can create several instances of the class I1cDrawingBoard which will result in the creation of several Drawing Board docked windows in the GUI The Drawing Board contains two sets of member functions asetthat allows you to use the Drawing Board with graphic objects that are automatically backtrackable asetthat allows you to draw 2D graphic objects yourself in the Drawing Board without any automatic support for backtracking
50. is also true all resources are traced If the parameter traceAllowed is true a specific trace for a Scheduler application is added ILOG SOLVER DEBUGGER UsER S MANUAL 63 Member Functions IlcSchedulerTrace getSchedulerTrace const Returns the graphical Scheduler trace added by the instance I1cSche ulerDebugger 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 toBrowse 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 lt IloUnaryResource gt amp resources const char name IloBool toBrowse IloTrue Registers an interest in a unary resource array The parameter resources indicates the array of unary r
51. izeOption option IlcVisualizeDisabled Registers an 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 trace is true the variables must be traced The parameter option gives access to a graphical monitoring of the variable displaying its range or value 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 trace is true the variables must be traced The parameter option 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 trace is true variables must be traced and taken into account in the Christmas Tree
52. keNewGraphicobject 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 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 indicates 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 represen
53. lanation 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 dimensions are rectWidth rectHeight The outline of the rectangle is th pixels thick ILOG SOLVER DEBUGGER USER S MANUAL 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 void 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 th void makeLabel IlcIntExp x IlcIntExp y const char str Creates a backtrackable label anchored at the point x y and containing the character string str void makeLine IlcIntE
54. lcFloat rc IloInt th eraseGraphic IloInt id makeArc IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp startAngle IlcFloatExp angleRange IlcIntExp th makeArrow IlcIntExp x1 IlcIntExp y1 IlcIntExp x2 IlcIntExp y2 IlcIntExp th const char col black makeEllipse IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp th makeFilledArc IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp startAngle IlcFloatExp angleRange const char col IlcIntExp th makeFilledEllipse IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight const char col IlcIntExp th makeFilledLabel IlcIntExp x IlcIntExp y const char str const char col makeFilledPolygon IlcIntVarArray x IlcIntVarArray y const char col IlcIntExp th IlcIntExp fillRule ILOG SOLVER DEBUGGER USER S MANUAL Constructors void makeFilledRectangle IlcIntExp xLowerLeft IlcIntExp 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 Exp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp cols IlcIntExp rows IlcIntExp
55. le IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IlcFloat rc const char col IloInt th Creates a nonbacktrackable rectangle with rounded corners and filled with the color co1 The rectangle is identified byia The parameters are similar to those of drawFilledRectangle above except for rc which specifies the amplitude of the arc used for the rounded corners void drawGrid IloInt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt cols IloInt rows IloInt th Creates a nonbacktrackable grid identified bvid 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 y1 IloInt x2 IloInt y2 IloInt th const char col black Creates a nonbacktrackable line identified byia The line drawn between the two points x1 y1 and x2 y2 is of thickness th and default color black void drawPolyline IloInt id IlcInt x IlcInt y IlcInt count IlcInt th Creates a nonbacktrackable polyline identified byid The two in
56. lution 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 3 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 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 4 Store the new best solution if there is one and display it if sol getObjectiveValue lt best getObjectiveValue ostrstream txt txt lt lt Move lt lt moves lt lt Knights lt lt sol getObjectiveValue lt lt
57. mples debugnqueen This is a pure ILOG Solver C example This well known problem involves placing n gueens 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 alldi ff 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 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 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
58. n 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 automaticallv When vou use the Depth First Search exploration order the higher in the tree the right subtrees are the more vou should pav attention to them because the tree is potentiallv exponential in its depth ILOG SOLVER DEBUGGER UsER S MANUAL 39 40 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 an ILOG Solver application Filter levels In order to tune the propagation in the debuggolomb example we will use the a11diff global constraint of ILOG 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 alldi constraint debuggolomb 6 0 0 basic filtering level debuggolomb 6 1 1 medium filtering level debuggolomb 6 2 2 extended filtering level When using the basic filter level of this constraint ILOG 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 t
59. nqueen 10 ILOG SOLVER DEBUGGER UsER s MANUAL drawingBoard constantInt nqueen drawingBoard constantInt nqueen drawingBoard constantint 1 for int i 0 i lt nqueen 1 IlcIntExp exp queens i 10 drawingBoard makeFilledEllipse drawingBoard constantInt i 10 exp drawingBoard constantInt 10 drawingBoard constantInt 10 red drawingBoard constantInt 1 H return 0 ILOCPGOALWRAPPER3 IloChessBoard solver IloInt nqueen IloIntVarArray queens IlcDrawingBoard drawingBoard return IlcChessBoard solver nqueen solver getIntVarArray queens drawingBoard ILOG SOLVER DEBUGGER USER S MANUAL 33 34 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 turguoisel SeaGreen1 gold1 IndianRed1 Siennal tanl salmonl orangel tomato1 HotPink1 orchid2 The Drawing Board now displays the representation of a chessboard with red ellipses indicating the position of the queens Drawing Board xi 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 ma
60. oard scheduler goal while debugger initialize Solver startNewSearch goal 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 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 Optimal solution To spot possible problems in your application analyze the right subtrees in your Search Tree 38 ILOG SOLVER DEBUGGER USER S MANUAL e la 9 e x Right Sub Tree of e o 0 Failures ee 6 6 Sd Right Sub Tree Solution First solution 3 o For a binarv tree considering that the right branch is the contradiction of the left branch when right subtrees are developed vou can draw one of the following two conclusions Solutions appear in the right subtree i
61. obal horizon for every activity schedEnv setHorizon horizon Name your Ilo objects setName API Create a Scheduler Debugger to handle specific panels IlcScheduler schedule solver IlcSchedulerDebugger schedDebug debugger schedule Register the 110 objects with the Solver Debugger and the Scheduler Debugger debugger registerVariable makespan IloTrue IloTrue IlcVisualizeDomain schedDebug registerActivity activity IloTrue IloTrue IlcVisualizeDomain Inform the Activity Panel of the horizon to display schedDebugger setHorizon horizon Extract the model 110 objects as I1c objects solver extract model 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 Error ex endl ILOG SOLVER DEBUGGER UsER s MANUAL 7 Setting Up ILOG 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
62. 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 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 IlcVisualizelnterval 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 an 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
63. rActivity member function IlcSchedulerDebugger Debugger C class 64 registerConstraint member function IlcSolverDebugger Debugger C class 67 registerResource member function IlcSchedulerDebugger Debugger C class 64 registerUnaryResourceArray member function IlcSchedulerDebugger Debugger C class 64 registerVariable IloFloatVar mf 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 setAutomaticDisplay member function ILOG SoLvER DEBUGGER UsER s MANUAL 75 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 ILOG Solver Debugger 8 statistics for a constraint 31 propagation 29 Step Into button 11 Step Out button 11 Step Over button 11 I tool bar execution 11 standard 11
64. rocess difference 11 DOE 6C578 Y Process Demon IlelntExpDomainConsi SY Process Demon IlclntExpDomainConstraintlf Set Min 10 difference 2 Set Min 8 difference 11 Set Min 11 difference 11 Set Min 10 difference 7 7 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 a11diff 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 ILOG Solver into Set Min because the value to remove was a bound 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 level The Propagation Spy shows that at the same choice point the variable difference 11 is bound more quickly Var In Process difference 1 1 aw Process Demon IlelntE xpE ventHandlerConstraintl differen S
65. sets the background color for the Drawing Board ILOG SoLvER DEBUGGER USER S MANUAL IIlcSchedulerDebugger Category Description Include File Synopsis Constructor C class The class IlcSchedulerDebugger provides an interface to the ILOG Solver Debugger in an ILOG Scheduler environment ilsched schedulerdebugger h 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 lt IloUnaryResource gt amp resources const char name IloBool toBrowse IloTrue void setHorizon IlcInt horizon 1 IlcSchedulerDebugger IlcSolverDebugger debugger IlcSchedule s IloBool traceAllActivities IloTrue IloBool traceAllResources IloTrue IloBool traceAllowed IloTrue The parameter s sets the I1cSchedule 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
66. shown in the graphic below whenCreate Created but unexplored whenVisit whenPrune Explored e Pruned without exploration Propagation whenSolution whenFail Solution O 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 14 ILOG SOLVER DEBUGGER USER S MANUAL Ey E b b a E Search Tree Mode Selectors Use Search Tree mode selectors to choose the view you want for the Search Tree 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
67. tallation 4 lt solverdir gt bin lt platform gt lt libformat gt contains the ILOG Solver Debugger GUI debugger exe e lt solverdir gt help contains the online documentation lt solverdir gt examples lt platform gt lt libformat gt debug contains C examples based on ILOG Solver lt solverdir gt 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 ILOG Solver ILOG SOLVER DEBUGGER USER S MANUAL lt solverdir gt lib contains the libraries ildebug lib and ilsolverdebug lib lt scheddir gt examples lt platform gt lt libformat gt debug contains C examples based on ILOG 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 ILOG 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 All the examples contain Ilo objects To compile the examples on Solaris and Linux platforms use the command make debuggersamples in the directory lt product gt examples lt platform gt lt libformat gt Solver Exa
68. teger array parameters x yl specifying the X and Y coordinates must be of the same size The count parameter indicates the number of point coordinates 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 ILOG SOLVER DEBUGGER USER S MANUAL void drawRectangle Ilolnt id IloInt xLowerLeft IloInt yLowerLeft IloInt rectWidth IloInt rectHeight IloInt th Creates a nonbacktrackable empty rectangle identified byid 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 byia The parameters are similar to those of drawRectangle 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 byia 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 rectwia
69. th and the height rectHeight 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 makeArrow IlcIntExp x1 IlcIntExp y1 IlcIntExp x2 IlcIntExp y2 IlcIntExp th const char col black Creates a backtrackable arrow that starts at 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 rectHeight The outline of the ellipse is of thickness th ILOG SOLVER DEBUGGER UsER s MANUAL 59 void makeFilledArc IlcIntExp xLowerLeft IlcIntExp 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 rectHeight 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
70. th and the segment is filled with the color co1 void makeFilledEllipse IlcIntExp xLowerLeft IlcIntExp 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 vLowerLeft the width rectwidth and the height rectHeight 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 co1 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 fillRule 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 i11Rule parameter to 0 takes the EvenOdd Rule setting the i11Rule parameter to 1 takes the Winding Rule See the method drawFilledPolygon for an exp
71. 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 newSearchTreeView 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 automat
72. 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 ILOG SOLVER DEBUGGER USER S MANUAL
73. ts 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 xl BEE Max Min 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 turguoisel SeaGreen1 gold1 IndianRed1 Sienna1 tanl salmon1 orangel tomatol HotPink1 orchid2 3 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 T colors id 211 3 ILCDEMON3 MyUpdateActivityDemon IlcActivity activity IlcDrawingBoard drawingBoard IlcInt id DrawActivity activity drawingBoard id ILCGOAL3 MyGoalReDrawActivityOnBacktrack IlcActivity activity IlcDrawingBoard drawingBoard IlcInt id f DrawActivity activity drawingBoard id return 0 3 static void ActivityOnDrawingBoard IlcActivity activity IlcDrawingBoard drawingBoard IloInt id drawingBoard makeNewGraphicObject activity getStartVariable when
74. xp x1 IlcIntExp yl IlcIntExp x2 IlcIntExp y2 int 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 a new nonbacktrackable 2D graphic object void 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 void makeRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcIntExp th Creates a backtrackable empty rectangle The rectangle is anchored at the point xLowerLeft vLowerLeft and its dimensions are rectWidth rectHeight The outline of the rectangle is th pixels thick ILOG SOLVER DEBUGGER USER S MANUAL 61 62 void makeRoundedRectangle IlcIntExp xLowerLeft IlcIntExp yLowerLeft IlcIntExp rectWidth IlcIntExp rectHeight IlcFloatExp rc IlcIntExp th Creates a backtrackable empty rectangle with rounded corners The parameters are similar to those of makeRectangle above except for rc which specifies the amplitude of the arc used for the rounded corners void setBackgroundColor const char col The parameter co1
75. y 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 To skip the Initial Propagation click on the Step Over button The Debugger stops at the first search node the first child of the root The following options are available To visualize the decisions and the propagation events triggered within the first search node in the Propagation Spy click on the Step In button To go to the beginning of the next node click on the Step Over button To continue and interrupt the execution when you decide to click on the Continue Run button and then on the Break button 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 the end of the solving or Abort if the solving process takes a long time ILOG SoLvER DEBUGGER USER S MANUAL 23 2 Adda breakpoint on a spec

Download Pdf Manuals

image

Related Search

Related Contents

Manual de Instalação  VAT2000  BENDIX BW1574 User's Manual    GPSLog User Guide V1.02  Honeywell Fan CL60PM User's Manual  biseal fiber    TPR15 “touch screen” monitor User manual  

Copyright © All rights reserved.
Failed to retrieve file