GithubHelp home page GithubHelp logo

zm31 / ascending-auction Goto Github PK

View Code? Open in Web Editor NEW

This project forked from petros94/ascending-auction

0.0 0.0 0.0 556 KB

Implementation of the Ascending Auction algorithm for Decentralized Scheduling

License: MIT License

Python 0.42% Jupyter Notebook 99.58%

ascending-auction's Introduction

Implementation of the Ascending Auction algorithm for Decentralized Scheduling

Task allocation is a common problem found in everyday life. Examples include organizing a project’s plan to meet specific deadlines or allocating CPU time for executing user programs. The problem essentially boils down to orchestrating the allocation of a shared resource used to carry out tasks, in such a way that the value produced by completing these tasks is maximized.

In this repo we examine the application of the ascending auction algorithm in solving a certain task allocation problem, known as the scheduling problem.

While optimality is not guaranteed, in our experiments we observed that most of times the algorithm converges to an adequate solution. Combined with the distributed nature and easy scaling, the algorithm stands as a strong alternative among others, in solving such type of problems.

You can read more about the algorithm in my paper included in the repo.

The code

I recommend you to run the demo.ipynb notebook for testing out the code.

Ascending Auction

The file auction.py contains the implementation of the ascending auction.

The AuctionBoard is like a literal task allocation board, which includes the current allocations of the tasks. Agents are informed from the board about the current allocation state, and communicate back their changes. The specific board is passive, in a sense that all the scheduling logic is carried out by the agents and not the board. Thus the solution is decentralized.

The AuctionAgent is a representation of the agents. The class contains a bid method which holds the bidding logic. Each agent can and should run on a separate machine.

Priority First

The file priority_first.py contains the implementation of the priority first algorithm. It uses a greedy logic to allocate the tasks with the highest utility first, closest to their deadline.

Weighted Job Schedule

The file weighted_job_schedule.py contains the implementation of the weighted job schedule algorithm. It uses dynamic programming to allocate the tasks avoiding overlaps.

Brute Force

The file brute_force.py contains the implementation of the brute force algorithm. It is recommended to run this algorithm only for small problem sizes, since it tries all the potental allocations to find the best one. It should be used for benchmarking only, to provide a baseline for comparison.

ascending-auction's People

Contributors

cgntpmitseas avatar petros94 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.