Skip to content

Instantly share code, notes, and snippets.

@addisaden
Last active December 10, 2015 19:08
Show Gist options
  • Select an option

  • Save addisaden/4479068 to your computer and use it in GitHub Desktop.

Select an option

Save addisaden/4479068 to your computer and use it in GitHub Desktop.
Just a fun snippet for FUZZY-LOGIC
# encoding: utf-8
# please visit the repository of fuzzy-logic: https://github.com/addisaden/fuzzy-logic
require "fuzzy-logic"
temp = FuzzyLogic::Collection.new("Temperatures in °C") { |value|
value.is_a?(Numeric) ? (value <= 100 and value >= -100 ? true : false) : false
}
temp[:hot] = FuzzyLogic::Generate.trapezoid(25, 35, 100, 101)
temp[:cold] = FuzzyLogic::Generate.trapezoid(-101, -100, 5, 15)
temp[:mid] = temp[:hot].not.and temp[:cold].not
(0..40).to_a.each { |i|
puts "On #{ i } °C : #{ temp.get(i) }"
}
On 0 °C : {:cold=>1.0}
On 1 °C : {:cold=>1.0}
On 2 °C : {:cold=>1.0}
On 3 °C : {:cold=>1.0}
On 4 °C : {:cold=>1.0}
On 5 °C : {:cold=>1.0}
On 6 °C : {:cold=>0.9, :mid=>0.09999999999999998}
On 7 °C : {:cold=>0.8, :mid=>0.19999999999999996}
On 8 °C : {:cold=>0.7, :mid=>0.30000000000000004}
On 9 °C : {:cold=>0.6, :mid=>0.4}
On 10 °C : {:cold=>0.5, :mid=>0.5}
On 11 °C : {:cold=>0.4, :mid=>0.6}
On 12 °C : {:cold=>0.30000000000000004, :mid=>0.7}
On 13 °C : {:cold=>0.19999999999999996, :mid=>0.8}
On 14 °C : {:cold=>0.09999999999999998, :mid=>0.9}
On 15 °C : {:mid=>1.0}
On 16 °C : {:mid=>1.0}
On 17 °C : {:mid=>1.0}
On 18 °C : {:mid=>1.0}
On 19 °C : {:mid=>1.0}
On 20 °C : {:mid=>1.0}
On 21 °C : {:mid=>1.0}
On 22 °C : {:mid=>1.0}
On 23 °C : {:mid=>1.0}
On 24 °C : {:mid=>1.0}
On 25 °C : {:mid=>1.0}
On 26 °C : {:hot=>0.09999999999999998, :mid=>0.9}
On 27 °C : {:hot=>0.19999999999999996, :mid=>0.8}
On 28 °C : {:hot=>0.30000000000000004, :mid=>0.7}
On 29 °C : {:hot=>0.4, :mid=>0.6}
On 30 °C : {:hot=>0.5, :mid=>0.5}
On 31 °C : {:hot=>0.6, :mid=>0.4}
On 32 °C : {:hot=>0.7, :mid=>0.30000000000000004}
On 33 °C : {:hot=>0.8, :mid=>0.19999999999999996}
On 34 °C : {:hot=>0.9, :mid=>0.09999999999999998}
On 35 °C : {:hot=>1.0}
On 36 °C : {:hot=>1.0}
On 37 °C : {:hot=>1.0}
On 38 °C : {:hot=>1.0}
On 39 °C : {:hot=>1.0}
On 40 °C : {:hot=>1.0}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment