Originally posted by: SystemAdmin
Philippe,
Thanks for your answer. This is where my shallow knowledge of CP comes in as I am not well versed with backtracking search versus large-neighborhood search, etc. If I understand you, though, you are saying that the default search method for this problem does not rely on a tree structure so that knocking out a symmetry in one place wouldn't help elsewhere?
Is there a way to alter the search strategy to perhaps then take advantage of symmetry reduction? The reason I ask is that I'm not convinced yet that there is no symmetry in my problem, if not a priori identifiable symmetry (at least with the heuristic we have, it was extremely important to get rid of the symmetries to go from hours/days/weeks to sub-5 second computation times for some extremely large problems (50 machines, each with 10-20 legs and a total of 7000 tasks so that each machine/leg had an average of 100-200 possible tasks on it)).
Here is why: every opp is uniquely identified by the machine/leg/task triple. Though that triple may have a couple feasible time windows, the value for the task on that machine/leg is the same. For another machine/leg pair, the task may have a different value, yes, but then again, it will have a different unique identifier. Therefore, a solution that looks like <1 1 5> <1 1 3> <1 1 1> (meaning the sequence of tasks 5, 3, and 1 are done on machine/leg pair 1,1) has the same value as any other feasible permutation of these uniquely identifying triples, no matter what actual times the intervals are scheduled at.
A la adding symmetry-breaking cuts and branching rules in branch-and-cut (Ostrovsky's papers on orbital branching),
aren't there ways of dynamically adding symmetry constraints during tree search in CP? In the Gent and Smith paper, they talk about the SBDS approach - Symmetry Breaking During Search - and apply it to n-queens and a few other problems. If this means I need to learn about writing my own constraints, I'd love to dive in as my goal in this project is to turn CP from something that I know is out there into something I can use intelligently and integrate with LP/IP work.
Does my rationale make sense or am I trying to fit math programming square pegs into contraint programming round holes?
Thank you for your help,
William
#ConstraintProgramming-General#DecisionOptimization