Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3794656
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T12:57:47+00:00 2026-05-19T12:57:47+00:00

(Before anyone asks, this is not homework.) I have a set of workers with

  • 0

(Before anyone asks, this is not homework.)

I have a set of workers with interests, i.e.:

  • Bob: Java, XML, Ruby

  • Susan: Java, HTML, Python

  • Fred: Python, Ruby

  • Sam: Java, Ruby

  • etc.

(There are actually somewhere in the range of 10-25 “interests” for each worker, and I have around 40-50 workers)

At the same time, I have a very large set of tasks that need to be distributed among the workers. Each task has to be assigned to at least 3 workers, and the workers must match at least one of the tasks’ interests:

Task 1: Ruby, XML
Task 2: XHTML, Python

and so on. So Bob, Fred, or Sam could get Task 1; Susan or Fred could get Task 2.

This is all stored in a database thusly:

Task
    id integer primary key
    name varchar

TaskInterests
    task_id integer
    interest_id integer

Workers
    id integer primary key
    name varchar
    max_assignments integer

WorkerInterests
    worker_id
    interest_id

Assignments
    task_id
    worker_id
    date_assigned

Each worker has a maximum number of assignments they will do, around 10. Some interests are more rare than others (i.e. only 1 or 2 workers have listed them as a interest), some interests are more common (i.e. half of the workers list them).

The algorithm must:

  • Assign every task to 3 workers (it is
    assumed that at least 3 of the
    workers are interested in one of the
    interests of the task).
  • Assign every worker 1 or more tasks

Ideally, the algorithm will:

  • Assign each worker a number of tasks proportional to their maximum assignments and the total number of tasks. For example, if Susan says she will do 20 tasks and most people will only do 10 tasks and there are 50 workers and 300 tasks, she should be assigned 12 tasks (20/10*(300/50)).
  • Assign a variety of tasks to each worker, so if Susan lists 4 interests she gets tasks that include 4 interests (rather than getting 10 tasks all with the same interest)

The most difficult aspect so far has been dealing with theses issues:

  • tasks having interests with few corresponding workers
  • workers who have few interests, especially
  • workers who have a few interests, for which there are relatively few tasks
  • 1 1 Answer
  • 3 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-19T12:57:48+00:00Added an answer on May 19, 2026 at 12:57 pm

    Try mapping your task to the stable marriage problem. Tasks become prospective wives `, and your staff become suitors.

    You might want to add some extra algorithm for assigning preferences of each task to the staff, and vice-versa – you could assign some ideal proficiency neccessary for the components of each task, and then allow your staff to rank each task. You could assign a proficiency for each component that each staff member posses and use that to get each tasks preference in staff members.

    Once you have the preferences then run the algorithm, post the results, then allow people to apply in pairs to you to swap assignments – after all this is a people problem and people work better when they have a degree of control.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

(Before anyone asks, it's not homework.) Say you have 2 Arrays y0 and y1
(Before anyone says anything Yes this was homework but i have already turned it
Ok, before anyone attempts to label this as a duplicate, I am not asking
Before anyone comments, I must use HSQLDB RDBMS; it's for university java project. My
Has anyone ever run into this issue before? Sometimes the string displays, sometimes half
Has anyone had this unusual(recurring) experience before? I'm trying to check out the project
Has anyone come across this issue before?
Does anyone know how to set the working directory in JavaScript before? Code I
Before someone asks me why the hell I would want to do this let
Before anyone votes to close this as a dupe, know that every question I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.