Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

active-time-scheduling-1.0.2.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

active_time_scheduling-1.0.2-py3-none-any.whl (28.4 kB view details)

Uploaded Python 3

File details

Details for the file active-time-scheduling-1.0.2.tar.gz.

File metadata

File hashes

Hashes for active-time-scheduling-1.0.2.tar.gz
Algorithm Hash digest
SHA256 4fed043af4f72130889b183b6c67db1e245626311dee294f939de47ac9871b40
MD5 fff43cd253817b3525343188987a5ba6
BLAKE2b-256 53d1418e71ae7d2dbd692215fedff6faf0ff9f54d16de5c442f928b125669a2a

See more details on using hashes here.

File details

Details for the file active_time_scheduling-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for active_time_scheduling-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e25577a78c845b160fe0799eb3bd1f6169059425418d4a98eca539c1ece65bb5
MD5 80fe14af212ad3f7b8830fa2b0abae2e
BLAKE2b-256 57c45eaf1dfbcc1c5c1c4976add68e497b775223b9f070d461728d2db6d6fa24

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page