GithubHelp home page GithubHelp logo

rwehresmann / opt_alg_framework Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 41 KB

Ruby framework to work with optimization algorithms.

License: MIT License

Ruby 99.38% Shell 0.62%
ruby np-complete scheduling optimization-algorithms

opt_alg_framework's Introduction

opt-alg-framework (Optimization Algorithm Framework)

opt-alg-framework is a framework to work with and build optimization algorithm. The basic idea is: you will have a codificated problem with a method to calculate its fitness, an algorithm to improve this fitness and operators used with the algorithm to build new solutions.

What is already implemented:

  • Problems:

    • Flow Shop Permutation
  • Algorithms:

    • Local Searches:
      • Hill-Climbing
      • Simulated Annealing
      • Tabu Search
  • Operators

    • Crossover:
      • Two Point Crossover (permutational)
    • Selector:
      • Tournament Selection
    • Tweak:
      • Random Swap

Installation

Add this line to your application's Gemfile:

gem 'opt_alg_framework'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install opt_alg_framework

Usage

Example: Read two instances of FSP problem (about the instances format, read README in problem directory!) and get its best results with SimulatedAnnealing algorithm, using RandomSwap operator.

operator = Operator::Tweak::RandomSwap.new
problem = Problem::FSP.new
problem.load_schedule("path to instance file")
algorithm = Algorithm::LocalSearch::SimulatedAnnealing.new max_iterations: 10,
                                                           cooling_rate: 0.009,
                                                           problem: problem,
                                                           tweak_operator: operator

puts algorithm.start # It will return a hash with the best solution found and its fitness

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console or, alternatively, bundle console for an interactive prompt that will allow you to experiment.

Contributing

This gem can deal with a lot of stuff, and everything must be simple to use (a.k.a generic). Before start to code, take a look in the README inside the folder of what you want to code (algorithms, problems, etc), some tips of what your class should have are there. Sugestions are welcome too! (;

  1. Fork it ( https://github.com/[my-github-username]/opt_alg_framework/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

opt_alg_framework's People

Contributors

rwehresmann avatar

Watchers

 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.