A solver for the generalized assignment problem.
The variant handled here is the variant:
- with a minimization objective (items have costs)
- where all items have to be assigned
It is possible to solve the variant with a maximization objective (items have profits) by setting the cost of assigning item an j to agent an i to maximum profit of item j - profit of assigning item j to agent i.
It is possible to solve the variant where not all items have to be assigned by adding an additional dummy agent i such that the weight of assigning an item j to this agent i is equal to 0 and the cost of assigning an item j to this agent i is equal to maximum profit of item j
-
Polynomial algorithms from "Generalized Assignment Problems" (Martello et al., 1992), options
--desirability cij--desirability wij--desirability cij*wij--desirability -pij/wij--desirability wij/ti:- Basic greedy
--algorithm "greedy --desirability wij" - Greedy with regret measure
--algorithm "greedy-regret --desirability wij" - MTHG, basic greedy (+ n shifts)
--algorithm "mthg --desirability wij" - MTHG, greedy with regret measure (+ n shifts)
--algorithm "mthg-regret --desirability wij"
- Basic greedy
-
Mixed-Integer Linear Program
--algorithm milp --solver highs
-
Local search algorithm implemented with fontanf/localsearchsolver
--algorithm "local-search --threads 3" -
Tree search algorithms based on the Dantzig-Wolfe reformulation branching scheme (i.e. column generation heuristics) implemented with fontanf/columngenerationsolver:
- Column generation
--algorithm column-generation --linear-programming-solver highs - Greedy
--algorithm column-generation-heuristic-greedy --linear-programming-solver highs - Limited discrepency search
--algorithm column-generation-heuristic-limited-discrepancy-search --linear-programming-solver highs
- Column generation
Compile:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DGENERALIZEDASSIGNMENTSOLVER_USE_HIGHS=ON
cmake --build build --config Release --parallel
cmake --install build --config Release --prefix installSolve:
./install/bin/generalizedassignmentsolver --verbosity-level 1 --algorithm mthg --desirability "-pij/wij" --input "data/chu1997/a05100" --output "a05100_output.json" --certificate "a05100_solution.txt"=====================================
GeneralizedAssignmentSolver
=====================================
Instance
--------
Number of agents: 5
Number of items: 100
Total cost: 15634
Maximum cost: 50
Maximum weight: 25
Algorithm
---------
MTHG
Parameters
----------
Time limit: inf
Messages
Verbosity level: 1
Standard output: 1
File path:
# streams: 0
Logger
Has logger: 0
Standard error: 0
File path:
Time (s) Value Bound Gap Gap (%) Comment
-------- ----- ----- --- ------- -------
0.000 inf 1694 inf inf
0.001 1713 1694 19 1.12
Final statistics
----------------
Value: 1713
Bound: 1694
Absolute optimality gap: 19
Relative optimality gap (%): 1.12161
Time (s): 0.0082436
Solution
--------
Number of items: 100 / 100 (100%)
Feasible: 1
Cost: 1713
Checker:
./install/bin/generalizedassignmentsolver_checker data/chu1997/a05100 a05100_solution.txt