A tool for explainable makespan scheduling using abstract argumentation frameworks, as proposed and described in the research paper Argumentation for Explainable Scheduling
Figure: Tool GUI showing problem and schedule input and explanation output
The tool runs on Python3.
Requirements:
- GLPK
pip3 install matplotlib
pip3 install pillow
pip3 install pyomo
apt install glpk-utils
apt install python-glpk
brew install glpk
- get GLPK, add it to PATH (environment variables)
In src/
run python3 main.py -g
- Machines are indexed by integers 1, 2, 3, ...
- Jobs are indexed by capital letters A, B, C, ...
- Job processing times are floats
- Negative fixed decisions impose which machines cannot do which jobs
- Positive fixed decisions impose which machines must do which jobs
- The \texttt{Optimise} button finds the optimal schedule using a solver, which is by default GLPK.
To specify a solver, starting the tool with
python3 main.py -g -S SOLVER_NAME
whereSOLVER\_NAME
is GLPK or CPLEX, for instance. Note that for large problems, optimisation may take a long time, so a solver time limit can be enforced by starting the tool withpython3 main.py -g -t TIME\_LIMIT
whereTIME\_LIMIT
is in seconds. - The
Randomize
button generates some feasible schedule, which may violate fixed decisions. - To explain the schedule, click the
Explain
button.
Explanations pertain to feasibility, satisfaction of fixed decisions and efficiency.
Feasibility ensures that each job is allocated once. Satisfaction of fixed decisions ensures the schedule satisfies fixed decisions.
Efficiency amounts to at most 4/3 of the optimal makespan.
Explanations are ordered in order of decreasing makespan improvements.
To improve the schedule, select a line in the explanation listbox to address, then select a line in the actions listbox and click the Apply
button.
The dot-highlighted boxes in the cascade chart illustrate newly and removed allocations compared to before the applying the action.