Code Monkey home page Code Monkey logo

sanelmoumni / scheduling-problem-in-operational-research-dynamic-programming-metaheuristic-vns-solutions. Goto Github PK

View Code? Open in Web Editor NEW
14.0 3.0 4.0 71 KB

In this project, I implemented with Python the solutions of the scheduling problem using different methods, the metaheuristic : genetic algorithm and secondly the dynamic programming.

Python 100.00%
operational-research scheduling metaheuristic variable-neighborhood-search dynamic-programming recursive-algorithm constraints

scheduling-problem-in-operational-research-dynamic-programming-metaheuristic-vns-solutions.'s Introduction

Scheduling problem in operational research.

Table of Contents

Problem's Description

Solution's description

Objectif

Solution 1 : Dynamic Programming (recursive) approach

Solution 2 : Metaheuristic approach VNS : Variable Neighborhood Search

About the files (input and output)

The input

The output

A scheduling problem is a classic problem in operations research which consists in organizing the performance of tasks over time, considering time constraints (deadlines, sequencing constraints) and constraints relating to the availability of the required resources.

Scheduling problem

I implemented two different solutions to the scheduling problem. It is defined by scheduling for each task an execution time of a "sequence of tasks performed one after the other".

Each task has a start and end date, which requires a minimal execution time (denoted in the scripts P), a due date denoted (D), which each task has to be executed before its own due date.

The objectif if to find the better sequence of tasks which gives the minimal delay (penalty) if we exceed each task's due date, in a way that we minimize the total execution time or the average time to complete a set of tasks, and minimize delays if they exist.

This solutions implements a set of mathematical and algorithmic tools to study the processes of sequential decisions and possibly calculate exact optimal strategies.

A policy (or strategy) is a decision-making rule which, for each possible situation (state of the system), tells us what decision (or action) to take in the aim to optimize an overall objective function.

Often, the objective function is a mathematical expectation. Sometimes we can characterize the optimal policy by theorems, often it can be calculated, or calculate an approximation; in some cases (Large size problem) the resolution will be too difficult.

This approach is implemented in the script : ordo_Dynamique_Iterative.py [More details in the script's comments].

A metaheuristic is an optimization algorithm used for solving problems difficult to optimize (often in operational research, engineering or artificial intelligence) for which no method is known classic more efficient.

There are a lot of different metaheuristics, ranging from simple search local to complex global search algorithms, to solve our scheduling problem I will use the neighborhood search method variable variable neighborhood search.

Variable Neighborhood Research (RVV) was proposed by Mladenovic and Hansen in 1997 which methodically uses several types of neighborhood structures.

VNS

In this project, I used 3 neighborhood structures: L = (N (1), N (2), N (3)) a list of finite neighborhoods such as:

1- N(1) represents the permutation;
2- N(2) represents the insertion;
3- N(3) represents the left pivot. 

The input data (Tasks) is stored in LesDonnesMeta.csv and LesDonneesDyna.csv file, where each task has an execution time, a dude date, and a weight.

A weight must be between 20% and 60% of the sum of the task's execution time This is explained more in script's comments.

The output using the dynamic programming and the metaheuristic is stored in the files resultat.txt and resultat_meta.csv respectively.

Text me if you need more details !

scheduling-problem-in-operational-research-dynamic-programming-metaheuristic-vns-solutions.'s People

Contributors

sanelmoumni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

scheduling-problem-in-operational-research-dynamic-programming-metaheuristic-vns-solutions.'s Issues

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.