Abstract Autonomous Mobile Robots (AMRs) rely on rechargeable batteries to execute several objective tasks during navigation. Previous research has focused on minimizing task downtime by coordinating task allocation and/or charge scheduling across multiple AMRs. However, they do not jointly ensure low task downtime and high-quality battery life.In this paper, we present TCM, a Task allocation and Charging Manager for AMR fleets. TCM allocates objective tasks to AMRs and schedules their charging times at the available charging stations for minimized task downtime and maximized AMR batteries’ quality of life. We formulate the TCM problem as an MINLP problem and propose a polynomial-time multi-period TCM greedy algorithm that periodically adapts its decisions for high robustness to energy modeling errors. We experimentally show that, compared to the MINLP implementation in Gurobi solver, the designed algorithm provides solutions with a performance ratio of 1.15 at a fraction of the execution time. Furthermore, compared to representative baselines that only focus on task downtime, TCM achieves similar task allocation results while providing much higher battery quality of life.
DOI: 10.1109/ACSOS55765.2022.00024
Following are the important packages that are required to execute the TCM.py and MINLP.py files:
package | pip installation command |
---|---|
gurobipy | python -m pip install gurobipy |
numpy | pip install numpy |
matplotlib | python -m pip install -U matplotlib |
time | pip install times |
pandas | pip install pandas |
math | pip install python-math |
Note: to use gurobypy, a Gurobi license is needed. This license is free for academic use and can be obtained from this website. Gurobi is only required for solving the baseline optimization problem in MINLP, MIN_DT and MIN_DTC.
This repository contains the proposed TCM algorithm and other baselines MINLP, MID_DT and MIN_DTC explained in the paper. It also contains an experimentSetup.py
file which creates initial parameters in random order for different experiment setups.
MIN_DTC is an MINLP model that considers maximizing the task allocation while ensuring that the energy level remains within the minimum (EDOD ) and maximum (Emax) battery threshold.
MIN_DT is a simple MINLP model for task allocation and charging schedule that maximizes only Task Allocation.
MINLP is a simple MINLP model for the proposed approach, which performs task allocation considering the battery degradation cost.
TCM is the proposed greedy algorithm.
TCM_Static is a greedy algorithm that provides a solution once at the beginning of the working period; hence, this baseline cannot able to handel any modeling errors it encounters.
To create different scenarios, change the range of variables used in experimentSetup.py.
This will create a CSV file with multiple experimental setups. Each row in the CSV(e.g., test.csv) is a different experimental setup. Use this file as input by changing the File_name
variable and set File_Execution = True
in TCM and other baselines to get the solution for each scenario. TCM and other baselines will write their respective results in the same file. ( Note that the CSV file must be in the same folder along with other scripts )
- Update the
File_name
variable with the CSV file name and setFile_Execution = True
. This will make the script get the initial parameters from the CSV file and write the results to the CSV file. - When a script gets an experiment result and updates it to the CSV file, it also sets the respective execution value to 1 (as shown in column CP for MINLP in the screenshot). This is done to avoid re-running the experiments that already have a solution.
- If there is a need to re-run all the experiments, then delete the respective column, or if there is a need to solve a particular experiment again, then delete the respective cell value(e.g., in the above figure if you want to re-run the entire experiments for MINLP again then delete column for MINLP).
- When the
File_Execution = False,
the program reads the initial conditions fromInitial_Conditions()
functions in TCM and other baselines. You can change the parameters in the Initial Condition function of the respective script.
To test TCM to modeling erros,
- Set
Error_introduced
to1
and provide a minimum (error_lower_limit) and maximum (error_upper_limit) modeling error percentage inexperimentSetup.py
. This will create a random error within the given range in each time period and save it in the CSV file. - In
TCM.py,
setError_introduced
to1
. By default TCM dynamically updates the solution in each time period; therefore, it handles any modeling errors it encounters.- To check the effect of the error on a
TCM_Static
baseline, in which the solution is obtained only once and does not take care of the modeling errors, set RR = 0 in theTCM.py
file.
- To check the effect of the error on a
Citation
@INPROCEEDINGS{9935008, author={Chavan, Akshar Shravan and Brocanelli, Marco}, booktitle={2022 IEEE International Conference on Autonomic Computing and Self-Organizing Systems (ACSOS)}, title={Towards High-Quality Battery Life for Autonomous Mobile Robot Fleets}, year={2022}, volume={}, number={}, pages={61-70}, keywords={Greedy algorithms;Schedules;Navigation;Computational modeling;Charging stations;Robustness;Batteries;Autonomous Mobile Robots;Task and charge Scheduling;Battery Lifespan;Energy}, doi={10.1109/ACSOS55765.2022.00024}}