Content deleted Content added
LiranKatzir (talk | contribs) No edit summary |
LiranKatzir (talk | contribs) No edit summary |
||
Line 1:
The maximum general assignment problem is a problem in combinatorial optimization. This problem is a generalization of the assignment problem in which both task and agents have a size. Moreover, this size of each task might vary from one agent to the other.
There are a number of agents and a number of tasks. Any agent can be assigned to perform any task, incurring some cost and profit that may vary depending on the agent-task assignment. Moreover, each agent has a budget and the sum of the costs of task assigned to it cannot exceed this budget. It is required to find an assignment in which an agent does not exceed its budget and total profit of the assignment is maximized.
==Special cases==
In the special case in which all the agents' budgets and all tasks' costs are equal to 1, this problem reduces to the maximum assignment problem. When the costs and profits of all agents-task assignment are equal, this problem reduces to the multiple knapsack problem. If there is a single agent, then, this problem reduces to the
==Definition==
In the following, we have ''n'' kinds of items, <math>x_1</math> through <math>x_n</math> and ''m'' kinds of bins <math>b_1</math> through <math>b_m</math>. Each bin <math>b_1</math> is associated with a budget <math>w_i</math>.
The generalized assignment problem is NP-hard, and it is even APX-hard to approximation. Recently it was shown that it is (<math>e/(e-1) - \epsilon</math>) hard to approximate for every <math>\epsilon</math>.
==Greedy Algorithm==
Using any algorithm ALG <math> \alpha</math>-approximation algorithm for the knapsack problem, it is possible to construct a (<math> \alpha+1</math>)-approximation for the generalized assignment problem in a greedy manner using a residual profit concept.
The residual profit of an item <math>x_i</math> for bin <math>b_j</math> is <math>p_{ij}</math> is <math>x_i</math> is not selected for any other bin or <math> p_{ij}</math> – <math>p_{ik} </math> if <math>x_i</math> is selected for bin <math>b_k</math>.
Formally:
: For <math>j=1...m</math> do:
::
== References ==
|