Multi-threaded constraint satisfaction solver
First Claim
1. A method for multi-threading, comprising:
- establishing, by a master thread executing on a computing device comprising a processor device, an initial solution state of a constraint problem, the initial solution state based at least in part on a collective state of a plurality of planning entity objects used to model the constraint problem;
establishing, by the master thread executing on the computing device, a plurality of solver threads, each solver thread having an initial solution state that is identical to the initial solution state of the master thread and having a plurality of cloned planning entity objects that are clones of the plurality of planning entity objects;
communicating, by the master thread executing on the computing device, a first plurality of temporary state changes to the plurality of solver threads that alters the initial solution state of each solver thread to a different solution state;
receiving, from each respective solver thread of the plurality of solver threads, a first score associated with the different solution state of the respective solver thread;
identifying, by the master thread executing on the computing device, a particular score received from a particular solver thread of the plurality of solver threads as a best score; and
implementing a permanent state change to the initial solution state of the master thread to generate a new solution state that matches a solution state associated with the particular score.
1 Assignment
0 Petitions
Accused Products
Abstract
An object-oriented method for multi-threading in a constraint satisfaction solver is provided. A master thread establishes a first solution state of a constraint problem. The master thread establishes a plurality of solver threads, each solver thread having an initial solution state that is identical to a first solution state of the master thread, and a plurality of cloned planning entity objects that are clones of a plurality of planning entity objects. The master thread communicates a first plurality of temporary incremental state changes to the plurality of solver threads that alters the initial solution state of each solver thread to a different solution state. The master thread receives, from each respective solver thread of the plurality of solver threads, a first score associated with the different solution state of the respective solver thread.
-
Citations
20 Claims
-
1. A method for multi-threading, comprising:
-
establishing, by a master thread executing on a computing device comprising a processor device, an initial solution state of a constraint problem, the initial solution state based at least in part on a collective state of a plurality of planning entity objects used to model the constraint problem; establishing, by the master thread executing on the computing device, a plurality of solver threads, each solver thread having an initial solution state that is identical to the initial solution state of the master thread and having a plurality of cloned planning entity objects that are clones of the plurality of planning entity objects; communicating, by the master thread executing on the computing device, a first plurality of temporary state changes to the plurality of solver threads that alters the initial solution state of each solver thread to a different solution state; receiving, from each respective solver thread of the plurality of solver threads, a first score associated with the different solution state of the respective solver thread; identifying, by the master thread executing on the computing device, a particular score received from a particular solver thread of the plurality of solver threads as a best score; and implementing a permanent state change to the initial solution state of the master thread to generate a new solution state that matches a solution state associated with the particular score. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computing device comprising:
-
a memory; and at least one processor device coupled to the memory to; establish, via a master thread, an initial solution state of a constraint problem, the initial solution state based at least in part on a collective state of a plurality of planning entity objects used to model the constraint problem; establish, by the master thread, a plurality of solver threads, each solver thread having an initial solution state that is identical to the initial solution state of the master thread, and having a plurality of cloned planning entity objects that are clones of the plurality of planning entity objects; communicate, by the master thread, a first plurality of temporary state changes to the plurality of solver threads that alters the initial solution state of each solver thread to a different solution state; receive, from each respective solver thread of the plurality of solver threads, a first score associated with the different solution state of the respective solver thread; identify, by the master thread, a particular score received from a particular solver thread of the plurality of solver threads as a best score; and implement a permanent state change to the initial solution state of the master thread to generate a new solution state that matches a solution state associated with the particular score. - View Dependent Claims (16, 17)
-
-
18. A computer program product stored on a non-transitory computer-readable storage medium and including instructions to cause a processor device to:
-
establish, via a master thread, an initial solution state of a constraint problem, the initial solution state based at least in part on a collective state of a plurality of planning entity objects used to model the constraint problem; establish, by the master thread, a plurality of solver threads, each solver thread having an initial solution state that is identical to the initial solution state of the master thread and having a plurality of cloned planning entity objects that are clones of the plurality of planning entity objects; communicate, by the master thread, a first plurality of temporary state changes to the plurality of solver threads that alters the initial solution state of each solver thread to a different solution state; receive, from each respective solver thread of the plurality of solver threads, a first score associated with the different solution state of the respective solver thread; identify, by the master thread, a particular score received from a particular solver thread of the plurality of solver threads as a best score; and implement a permanent state change to the initial solution state of the master thread to generate a new solution state that matches a solution state associated with the particular score. - View Dependent Claims (19, 20)
-
Specification