Giter Site home page Giter Site logo

nikronic / optimized-mdvrp Goto Github PK

View Code? Open in Web Editor NEW
41.0 3.0 8.0 322 KB

"Using Genetic Algorithms for Multi-depot Vehicle Routing" paper implementation.

License: MIT License

Python 100.00%
genetic-algorithms multi-objective-optimization evolutionary-algorithms multi-depots mdvrp

optimized-mdvrp's Introduction


Hi there ๐Ÿ‘‹

I am Nikan Doosti
'Nikan' means genuine and good and it's Persian originated name, and 'Doosti' literally means friendship!

About

I am a master's graduate of Computer Engineering (Artificial Intelligence) from Iran University of Science and Technology (IUST) one of the most prestigious universities in Iran.
In my work, I utilize Artificial Intelligence to provide data-driven decision making for different services. Previously, I did a research internship at Max Planck Institute for Informatics at AIDAM group in Germany ๐Ÿ‡ฉ๐Ÿ‡ช, working on applications of machine learning in fabrication. Prior to that, I was mainly focused on classic computer vision, specifically digital image processing.

  • ๐Ÿง I'm interested in devising self-supervised deep learning models for efficient and accurate modeling, and I always love to work on interdisciplinary topics such as intersection of AI and Science/Engineering.
  • ๐ŸŒฑ I'm currently (re)learning C++ and started learning MLOps.
  • ๐Ÿ‘ฏ I'm looking to collaborate on PyTorch framework. Meet me on official PyTorch forum: PyTorch Discuss
  • ๐Ÿ’“ I'd love to play games, particularly video games. I mostly play Dota 2 and CnC Generals ZH. I am noob in execution (slow body, eyes, FPS, and refresh rate :D), but I plan well!
  • ๐Ÿ’ฌ Ask me about anything, but I don't know how much I don't know. However, I know a bit about AI and Computer Graphics/Vision.
  • ๐Ÿ“ซ How to reach me: My email nikan [dot] doosti [at] outlook [dot] com (more details on the bottom of home page of my website)
  • โญ Giving stars is a small gesture, but it means a lot! So give stars to cool projects.

I follow Github timeline almost everyday (Works as a social media for me :D).


optimized-mdvrp's People

Contributors

nikronic avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

optimized-mdvrp's Issues

Change `id` in all classes to string and make it optional arg

Currently, id is a mandatory int value to be filled. Actually, the value itself represents no meaning, so I think it would be better to change it to string then name it through different functions at the time of initializing to make it easier to trace bugs or process.

suggested default value: unnamed
other states names: `{current_scope_func_name_[within if\within else, etc]}

Github Action does not find the uploaded files in the code repo

When I wanted to test F.single_data_loader, CI failed due to file not found exception while the tests on local system runs successfully. (Pytest)

Actually, I really do not know what is difference between tests on local or remote virtual machine. This issue may occur because of some other ways of cloning repo into virtual machine which may has been used by the template of CI I am using.

`extract_random_route` sometimes extracts zero-length routes!

The possibility is very low, because the capacity of the each depot is so big so at least we have 2 customer in each route of depot. But still there is no reason to extract an empty route when there is no empty route in the depot itself.

May be initial_routing is generating bad routes sometimes??? When the capacity was between [0, 100], there were a lot of single customer routes, so maybe caused empty route too. I have changed the random to [100, 200]so now each route approximately has at least twocustomers` so we won't be able to see an empy route again maybe.

I have not added tests for empty route in initial_routing but I have added some tests that checks there should not be any sequential customers with ID=999 which represents null customers. It means if there is an empty route, only a null customer will be added so we it cannot pass this test.

What should I do if after calling `extract_random_route`, a Depot gets empty?

The utils.functional.extract_random_route method looks for a random route then remove it and return the removed random route.

Now if a Depot has only one route, after calling this method, the route will be removed and the Depot will no longer have any Customers in it to construct a route, actually, the Depot will be an empty object.

What is the instruction to deal with this situation?

Possible behaviours:

  1. If we remove Depot itself, it means we are not using one of the provided Depots in the dataset or problem itself which means we will use less routes (less vehicles). It seems good but does not mean efficient. Note that creating a new Depot would be a new challenge for assigning new routes to a non-existance Depot.
  2. Having a empty Depot won't cost us anything in term of number of routes (vehicles) or the maximum capacity restriction. By the way, adding new routes to the Depot would be much easier so I think this option is much better to be considered. [PREFERED]

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.