Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rwehresmann/opt_alg_framework
Ruby framework to work with optimization algorithms.
https://github.com/rwehresmann/opt_alg_framework
np-complete optimization-algorithms ruby scheduling
Last synced: about 6 hours ago
JSON representation
Ruby framework to work with optimization algorithms.
- Host: GitHub
- URL: https://github.com/rwehresmann/opt_alg_framework
- Owner: rwehresmann
- License: mit
- Created: 2016-06-10T03:12:17.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-09-13T23:58:31.000Z (about 8 years ago)
- Last Synced: 2024-10-20T09:56:59.361Z (27 days ago)
- Topics: np-complete, optimization-algorithms, ruby, scheduling
- Language: Ruby
- Homepage:
- Size: 40 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# 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:
```ruby
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.
```ruby
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: operatorputs 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