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 matplotlibpip3 install pillowpip3 install pyomo
apt install glpk-utilsapt 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_NAMEwhereSOLVER\_NAMEis 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\_LIMITwhereTIME\_LIMITis in seconds. - The
Randomizebutton generates some feasible schedule, which may violate fixed decisions. - To explain the schedule, click the
Explainbutton.
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.