0% found this document useful (0 votes)
278 views

Job Assignment Problem: Branch and Bound

The document describes the job assignment problem and how the branch and bound algorithm can be used to find an optimal solution. Specifically: - The problem is to assign N jobs to N workers with the goal of minimizing total assignment costs, where each worker can be assigned to any job with varying costs. - Branch and bound searches the solution space tree, choosing the live node with the lowest cost at each step for further exploration, pruning other branches to reduce the search space. - It maintains a list of live nodes and finds the optimal solution path by recursively assigning jobs in order of lowest cost and removing already assigned jobs/workers from consideration.

Uploaded by

Nandhika Ravuri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
278 views

Job Assignment Problem: Branch and Bound

The document describes the job assignment problem and how the branch and bound algorithm can be used to find an optimal solution. Specifically: - The problem is to assign N jobs to N workers with the goal of minimizing total assignment costs, where each worker can be assigned to any job with varying costs. - Branch and bound searches the solution space tree, choosing the live node with the lowest cost at each step for further exploration, pruning other branches to reduce the search space. - It maintains a list of live nodes and finds the optimal solution path by recursively assigning jobs in order of lowest cost and removing already assigned jobs/workers from consideration.

Uploaded by

Nandhika Ravuri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Job Assignment Problem

Branch and Bound


• Let there be N workers and N jobs. Any worker
can be assigned to perform any job,
• some cost that may vary depending on the
work-job assignment.
• It is required to perform all jobs by assigning
exactly one worker to each job and exactly
one job to each agent in such a way that the
total cost of the assignment is minimized.
 Finding Optimal Solution using Branch and
Bound 
• We choose a live node with least cost. We may
not get optimal solution by following node
with least promising cost,
• but it will provide very good chance of getting
the search to an answer node quickly.
• There are two approaches to calculate the cost
function:  
• For each worker, we choose job with minimum
cost from list of unassigned jobs (take minimum
entry from each row).
• For each job, we choose a worker with lowest
cost for that job from list of unassigned workers
(take minimum entry from each column).
• Since Job 2 is assigned to worker A (marked in
green), cost becomes 2 and Job 2 and worker
A becomes unavailable (marked in red). 
we assign job 3 to worker B as it has minimum cost from list of unassigned jobs. Cost becomes 2 + 3 = 5 and Job 3 and worker B also becomes unavailable. 
• Finally, job 1 gets assigned to worker C as it
has minimum cost among unassigned jobs and
job 4 gets assigned to worker C as it is only Job
left. Total cost becomes 2 + 3 + 5 + 4 = 14. 
search space tree optimal solution path in
green. 
1.findMinCost uses Least() and Add() to maintain
the list of live nodes Least()
2.finds a live node with least cost, deletes it
from the list and returns it
3.Add(x) calculates cost of x and adds it to the
list of live nodes Implements list of live nodes as
a min heap
• node
{ int job_number;
int worker_number;
node parent; int cost;
}
• Input: Cost Matrix of Job Assignment problem
Output: Optimal cost and Assignment of Jobs
Algorithm findMinCost (costMatrix mat[][])
{
// Initialize list of live nodes(min-Heap)
// with root of search tree i.e. a Dummy node
While (true)
{
// Find a live node with least estimated cost
E = Least();
// The found node is deleted from the list // of live nodes
if (E is a leaf node)
{
printSolution();
return;
}
for each child x of E
{
Add(x); // Add x to list of live nodes;
x->parent = E; // Pointer for path to root }
}

You might also like