A collection of methods for Active Time Problem
Project description
Description
This package comprises various algorithms for solving the Active Time Problem developed to this date. The following
table provides a list of the implemented algorithms available in the subpackage schedulers
and the corresponding
articles where these algorithms were developed.
Scheduler | Reference |
---|---|
LazyActivationSchedulerNLogN |
"A model for minimizing active processor time" (Chang et al., 2012) |
LazyActivationSchedulerT |
"A model for minimizing active processor time" (Chang et al., 2012) |
MatchingScheduler |
"A model for minimizing active processor time" (Chang et al., 2012) |
DegreeConstrainedSubgraphScheduler |
"A model for minimizing active processor time" (Chang et al., 2012) |
GreedyScheduler |
"Brief announcement: A greedy 2 approximation for the active time problem" (Kumar and Khuller, 2018) |
GreedyIntervalsScheduler |
-- |
MinFeasScheduler |
"LP rounding and combinatorial algorithms for minimizing active and busy time" (Chang et al., 2017) |
GreedyLocalSearchScheduler |
"Brief announcement: A greedy 2 approximation for the active time problem" (Kumar and Khuller, 2018) |
GreedyLowestDensityFirstScheduler |
-- |
BruteForceScheduler |
Used for testing |
LinearProgrammingScheduler |
"A model for minimizing active processor time" (Chang et al., 2012) |
LinearProgrammingRoundedScheduler |
"LP rounding and combinatorial algorithms for minimizing active and busy time" (Chang et al., 2017) |
BatchScheduler |
"Optimal batch schedules for parallel machines" (Koehler and Khuller, 2013) |
Usage Examples
To create a job set, the subclasses of AbstractJobPool
from the subpackage models
are used. Different subclasses can be
to represent different properties for the jobs in them, for example FixedLengthJobPool
demands a fixed length from its
jobs. The following example demonstrates the process of creating a job pool and adding a job to it:
from models import JobPool
job_pool = JobPool()
job_pool.add_job(release_time=5, deadline=8, duration=2)
To process the job pool, the subclasses of AbstractScheduler
from the subpackage schedulers
are used. To perform the
processing, the job pool should be passed into the process
function. The result of the function is the computed job
schedule, which, if the problem instance is feasible, contains the information regarding the active time slots as well as
individual schedules:
from schedulers import FlowMethod, GreedyScheduler
scheduler = GreedyScheduler(FlowMethod.PREFLOW_PUSH)
schedule = scheduler.process(job_pool, max_concurrency=2)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for active-time-scheduling-1.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fed043af4f72130889b183b6c67db1e245626311dee294f939de47ac9871b40 |
|
MD5 | fff43cd253817b3525343188987a5ba6 |
|
BLAKE2b-256 | 53d1418e71ae7d2dbd692215fedff6faf0ff9f54d16de5c442f928b125669a2a |
Hashes for active_time_scheduling-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e25577a78c845b160fe0799eb3bd1f6169059425418d4a98eca539c1ece65bb5 |
|
MD5 | 80fe14af212ad3f7b8830fa2b0abae2e |
|
BLAKE2b-256 | 57c45eaf1dfbcc1c5c1c4976add68e497b775223b9f070d461728d2db6d6fa24 |