Skip to content

Releases: speters9/JobMatch

v1.1

13 Sep 03:01
Compare
Choose a tag to compare

Job Matching Tool - How-To Guide (Version 1.1)

Overview

This tool helps departments match instructors to courses based on their preferences, using multiple matching algorithms. Version 1.1 introduces a new Genetic Algorithm option and enhanced handling of pre-assigned course directors. The tool provides preliminary allocations, prioritizing preferences, though qualifications and availability should still be manually reviewed.

Reference the included example CSV files for input structure.

Matching Strategies

  1. Bipartite Matching
    Maximizes instructor-course matches by assigning weights to preferences and priorities using a bipartite graph method.

  2. Stable Marriage
    Based on the Gale-Shapley algorithm, it ensures stable matches where neither side can improve their situation by switching.

  3. Linear Programming
    Minimizes the sum of ranks in preferences to find an optimal allocation.

  4. Genetic Algorithm (New in Version 1.1)
    Uses evolutionary principles to iteratively improve matches.

  5. Which to Use?
    Stable marriage and bipartite matching often produce the highest satisfaction, but all methods provide slightly different results. Users might want to try all 4 to see which algorithm most closely approximates their desired end state.

Required Inputs

Two Excel files (.csv or .xlsx) are required:

  1. Courses Spreadsheet

    • Required Columns:
      • Course Name: The name of the course (e.g., "PS211").
      • Course ID: Numeric course identifier.
      • Sections Available: Number of sections needing instructors.
      • (Optional) Course Director: Pre-assigned instructor for this course (if applicable).
  2. Instructors Spreadsheet

    • Required Columns:
      • Instructor Name: Full name of the instructor.
      • Degree: Highest degree obtained.
      • Max Classes: Maximum number of courses the instructor can teach.
      • Preferences: Ranked columns for course preferences (e.g., Preference_1, Preference_2).

Operating Instructions

  1. Load Instructor File
    Drag and drop or use the file dialog to load the instructors’ CSV file.

  2. Load Course File
    Drag and drop or use the file dialog to load the course CSV file.

  3. Assign Course Directors
    Version 1.1 will auto-assign any pre-listed course directors before running the matching algorithms.

  4. Select Matching Algorithm
    Choose one of the four algorithms from the dropdown.

  5. Run Matching
    Click the 'Run Matching' button to start the process.

  6. View and Export Results
    Review the output by instructor or course and export results as a CSV.

Important Notes

  1. Pre-assigned Course Directors
    Ensure course directors are included in the Course Director column to lock them into their respective courses.

  2. Instructor Qualifications
    Matches are based solely on preferences; qualifications and other factors should be manually verified.

  3. Required Input Structure
    Preferences should have a matching entry in the Course Name column of the course spreadsheet.

    • Instructor file must include Instructor Name, Degree, Max Classes, and at least one preference column (e.g., Preference_1).

Refer to example CSV files when structuring your inputs.

Initial Release - v1.0

02 Sep 04:39
Compare
Choose a tag to compare

Job Matching Tool - How-To Guide

This release consists of a standalone executable file that implements the code in this repository, allowing users to execute the various matching algorithms without having to set up their own Python environment. It also includes example course and instructor spreadsheets to assist as you build your own inputs. Below is a quick how-to for the program.

Overview

This tool is designed to help academic departments match instructors to courses based on their stated preferences. It offers three different matching strategies to accommodate various departmental needs. The tool simplifies the initial phase of assignment by generating a list of course allocations that prioritize preferences independent of qualifications. Therefore, it's important to view these results as a starting point rather than a final solution.

Please reference the included example CSV files when structuring your inputs.

Matching Strategies

  1. Bipartite Matching
    Maximizes the number of matched pairs between instructors and courses. This method efficiently tries to satisfy as many preferences as possible. The edges between instructor and course nodes are weighted according to the instructor's preference for the course and the priority of the instructor.

  2. Stable Marriage
    Based on the Gale-Shapley algorithm, this strategy creates stable matches where neither instructors nor courses have a preferred alternative that would make them better off. This ensures mutually agreeable matches but may not maximize the number of matches.

  3. Linear Programming
    Uses an optimization approach to maximize overall satisfaction of preferences. This method aims to find an optimal solution where the sum of ranks is minimized, but in so doing might leave some classes unassigned.

  4. Which to Use?
    All strategies work well, but initial experiments suggest that stable marriage and bipartite matching often provide the highest satisfaction levels and course fill rates.

Required Inputs

The tool requires two Excel files (.csv or .xlsx):

  1. Courses Spreadsheet

    • Required Columns:
      • Course Name: The name of the course (e.g., "PS211").
      • Course ID: The numeric identifier of the course (e.g., "211" if course name is "PS211").
      • Sections Available: The number of sections that need to be filled (integer-type).
      • (Optional) Section Description: The long-form name of the course (e.g., "History of the Western World").
  2. Instructors Spreadsheet

    • Required Columns:
      • Instructor Name: The name of the instructor.
      • Degree: Highest degree obtained by the instructor (i.e., 'phd' or 'mas').
      • Max Classes: The maximum number of courses an instructor can teach (integer-type).
      • Preferences: A series of columns representing a ranked list of course names that the instructor prefers to teach. These columns should be named something like Preference_1, Preference_2, etc. The program identifies preference order based on trailing numbers in column names.

Operating Instructions

Note: When activated, JobMatch.exe spins up an instance of Python and some required dependencies under the hood. This may cause a delay of about 15-20 seconds on initialization. Future iterations will try to make this initialization period shorter.

  1. Load Instructor File
    Drag and drop to load the instructor CSV file.

  2. Load Course File
    Drag and drop to load the course CSV file.

  3. Select Matching Algorithm
    Choose one of the three matching algorithms from the dropdown.

  4. Run Matching
    Click the 'Run Matching' button to start the matching process. The results will be computed based on the selected algorithm.

  5. Print Results
    View the results in a new window. You can choose to view matches by instructors or by courses.

  6. Export Results to CSV
    Save the results to a CSV file for further analysis or adjustments.

Important Notes

  1. Instructor Qualifications
    The tool does not account for instructor qualifications. Matches are based solely on preferences, so it is important to manually review the output to ensure that assigned instructors are qualified for the courses.

  2. Preliminary Solution
    The matches generated by the tool are meant to serve as a starting point. They should not be considered final until reviewed and potentially adjusted based on qualifications, availability, and other factors.

  3. Instructor Order Matters
    The order of instructors in the CSV file influences the matching process. Instructors with higher priority (e.g., department heads) should be listed earlier in the file to increase their chances of getting their top preferences.

  4. Required Input Structure

    • Instructor preferences should correspond with the Course Name column in your course spreadsheet.
    • The program requires specific columns in each spreadsheet:
      • Courses: Course Name, Course ID, and Sections Available.
      • Instructors: Instructor Name, Degree, Max Classes, and at least one preference column (identifier ending with _1).
    • Please reference the included example CSV files when structuring your inputs.