GithubHelp home page GithubHelp logo

goal_seeker's Introduction

Goal Seeker

This is a small lib that tries to emulate the famous spreadsheet function that keeps trying a bunch of values until one satisfies your conditions. Very handy to brute force some math problems.

Usage

  GoalSeeker.seek(
    start, # First value to be tried
    goal, # Value that your stop function should reach to stop
    max_cycles, # Maximum number of iterations that you are willing to spend looking for the answer
    function, # fit function, it receives a number and produces another one that will be matched against the goal value
    seeker_type # [Optional] Defines which algorithm will be used to search for the goal value. Can be:
    # :binary (default): Will use a binary search to find the best fit
    # :brute_force: Will look sequentially for the best fit. This algorithm also receives a `step` value that defines the increment of each step, Default is set to 1.
    # :genetic: Will use a very simple genetic algorithm to solve find the best fit. There's an optional `epsilon` argument that can be used to specify how accurate you expect the result to be. Default is set to 0. [WARNING] this is a probabilistic strategy, so the timing to solve things can vary. So, use with care.
  )

Examples:


  GoalSeeker.seek(
    start: 100,
    goal: 0,
    max_cycles:100,
    function: lambda { |x| x*x -5*x + 6 }
  ) # Will return 3 (the other solution to the equation is 2 =] )

Running tests


Just go and rake test

goal_seeker's People

Contributors

matheusportela avatar nuk avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

goal_seeker's Issues

Not working with Ruby 2.6.6 in a Rails 6 project?

I tried installing in a Rails 6.0.3.4 projects Gemfile like this:

gem 'goal_seeker', git: 'https://github.com/nuk/goal_seeker'

And then I access the console rails c

irb(main):005:0> GoalSeeker
=> GoalSeeker

And when trying to run the README example:

irb(main):006:0>   GoalSeeker.seek(
irb(main):007:1*     start: 100,
irb(main):008:1*     goal: 0,
irb(main):009:1*     max_cycles:100,
irb(main):010:1*     function: lambda { |x| x*x -5*x + 6 }
irb(main):011:1>   )
Traceback (most recent call last):
        1: from (irb):6
ZeroDivisionError (divided by 0)

Can anyone help debug?

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.