Solving mixed integer programs with peer-to-peer applications
OwnerJanos Tapolcai, Pin-Han Hoinventors
Life of this patent
Estimating the term…
Abstract
The present invention discloses methods of solving mixed integer programs (MIP) in distributed environments, where the number of computers or users involved in the optimization can be extremely high. The proposed methods are designed to be robust in order to cope with all the difficulties in public and heterogeneous environments including load balancing and privacy. The present invention also describes a market on computation power.
Claims42
A method for solving at least one computationally significant problem on a distributed basis by means of a peer to peer network of associated and interconnected agent computers, wherein each agent computer may be in a parent relationship with one or more other agent computers (“parent computer”) and in a child relationship with one or more other agent computers (“child computer”) comprising the steps of:
- (a) defining a computationally significant problem for solving at one or more of the agent computers as a series of sub-problems, such one or more agent computers being the first computer(s);
- (b) providing a distributed processing management utility at each of the plurality of associated agent computers for enabling distributed solution of the problem;
- (c) defining, by operation of the first computer's distributed processing management utility, one or more sub-trees for the problem using a branch and bound algorithm;
- (d) recursively assigning each sub-tree to one of the agent computers, each agent computer being operable to solve the sub-tree and to define, by operation of its distributed processing management utility, one or more further sub-trees that are each assigned to one of the other agent computers for solving or defining of yet further sub-trees as required;
- and
- (e) recursively:
- (i) returning the result of each sub-tree solution to the agent computer that assigned the corresponding sub-tree;
- and
- (ii) aggregating the sub-tree solutions on the agent computer that assigned the corresponding sub-trees to provide a solution to the sub-tree assigned to that agent computer;
- until the first computer(s) aggregates the sub-tree solutions to provide a solution to the problem;
- wherein each agent computer, depending on the distributed solution, communicates with its one or more parent computers and its one or more child computers;
- each agent computer (whether a parent computer or child computer) can perform a sub-problem;
- and
- using the distributed processing management utility each agent computer (whether a parent computer or child computer) can determine whether to assign sub-problems to other child computers and assign the sub-problems based on this determination.
A system for solving at least one computationally significant problem on a distributed basis as a series of sub-problems, the system comprising a plurality of interconnected agent computers providing a distributed peer to peer network of computers, wherein each agent computer may be in a parent relationship with one or more other agent computers (“parent computer”) and in a child relationship with one or more other agent computers (“child computer”):
- each agent computer including or being linked to a distributed processing management utility for enabling distributed solution of the problem;
- at least one agent computer being operable to define a computationally significant problem for solving by the distributed network, such agent computer being the first computer(s);
- the distributed processing management utility of each agent computer being operable to:
- (a) define one or more sub-trees for the problem, or for the sub-tree assigned to the agent computer, using a branch and bound algorithm;
- (b) assign each defined sub-tree to one of the agent computers, wherein each agent computer is operable to solve the sub-tree and to define, by operation of its distributed processing management utility, one or more further sub-trees that are each assigned to one of the other agent computers for solving or defining of yet further sub-trees as required;
- (c) return the result of each sub-tree solution to the agent computer that assigned the corresponding sub-tree;
- and
- (d) aggregate the sub-tree solutions corresponding to the sub-trees the agent computer assigned to other agent computers to provide a sub-tree solution corresponding to the sub-tree assigned to the agent computer;
- wherein the first computer(s) is operable to provide a solution to the problem by aggregating the sub-tree solutions from the agent computers it assigned sub-trees to
- wherein each agent computer, depending on the distributed solution, communicates with its one or more parent computers and its one or more child computers;
- each agent computer (whether a parent computer or child computer) can perform a sub-problem;
- and
- using the distributed processing management utility each agent computer (whether a parent computer or child computer) can determine whether to assign sub-problems to other child computers and assign the sub-problems based on this determination.
A computer program for enabling solution of at least one computationally significant problem on a distributed basis, the computer program comprising computer instructions which when made available to each of a plurality of interconnected agent computers provides on each of the agent computers a peer-to-peer utility, the agent computers thereby defining a distributed network of computers for solving the problem;
- wherein each agent computer may be in a parent relationship with one or more other agent computers (“parent computer”) and in a child relationship with one or more other agent computers (“child computer”):
- wherein the peer-to-peer utility is operable to enable at one or more of the agent computers definition of a computationally significant problem for solving by the distributed network as a series of sub-problems, such agent computers being the first computer(s);
- and wherein the peer-to-peer utility includes a distributed processing management utility operable to:
- (a) define one or more sub-trees for the problem using a branch and bound algorithm;
- (b) recursively assign each sub-tree to one of the agent computers, wherein each agent computer is operable to solve the sub-tree and to define, by operation of its distributed processing management utility, one or more further sub-trees that are each assigned to one of the other agent computers for solving or defining of yet further sub-trees as required;
- and
- (c) recursively:
- (i) return the result of each sub-tree solution to the agent computer that assigned the sub-tree;
- and
- (ii) aggregate the sub-tree solutions on the agent computer that assigned the sub-trees to provide a solution to the sub-tree assigned to that agent computer;
- until the first computer(s) aggregates the sub-tree solutions to provide a solution to the problem
- wherein each agent computer, depending on the distributed solution, communicates with its one or more parent computers and its one or more child computers;
- each agent computer (whether a parent computer or child computer) can perform a sub-problem;
- and
- using the distributed processing management utility each agent computer (whether a parent computer or child computer) can determine whether to assign sub-problems to other child computers and assign the sub-problems based on this determination.
Dependencies are inferred from the claim text.