AI-FuzzyInference
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
FuzzyInference/Set.pm view on Meta::CPAN
# A module to implement a fuzzy term set.
# Only triangular term sets are allowed.
#
# Copyright Ala Qumsieh (ala_qumsieh@yahoo.com) 2002.
# This program is distributed under the same terms as Perl itself.
package AI::FuzzyInference::Set;
use strict;
#our $VERSION = 0.02;
use vars qw/$VERSION/; # a bit more backward compatibility.
$VERSION = 0.04;
1;
sub new {
my $self = shift;
my $class = ref($self) || $self;
my $obj = bless {} => $class;
$obj->_init;
return $obj;
}
sub _init {
my $self = shift;
$self->{TS} = {};
$self->{AREA} = {};
}
sub add {
my ($self,
$name,
$xmin,
$xmax,
@coords,
) = @_;
# make sure coords span the whole universe.
if ($coords[0] > $xmin) {
unshift @coords => ($xmin, $coords[1]);
}
if ($coords[-2] < $xmax) {
push @coords => ($xmax, $coords[-1]);
}
$self->{TS}{$name} = \@coords;
}
sub delete {
my ($self,
$name,
) = @_;
delete $self->{$_}{$name} for qw/TS AREA/;
}
sub membership {
my ($self,
$name,
$val,
) = @_;
return undef unless $self->exists($name);
my $deg = 0;
my @c = $self->coords($name);
my $x1 = shift @c;
my $y1 = shift @c;
while (@c) {
my $x2 = shift @c;
my $y2 = shift @c;
next if $x1 == $x2; # hmm .. why do we have this?
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.979 second using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )