AI-FuzzyInference
view release on metacpan or search on metacpan
FuzzyInference.pm view on Meta::CPAN
# sub value() - public method.
#
# one argument: the name of an output variable.
# This method returns the computed value of a given output var.
sub value {
my ($self,
$var,
) = @_;
return undef unless exists $self->{RESULTS}{$var};
return $self->{RESULTS}{$var};
}
# sub reset() - public method
#
# cleans the data structures used.
sub reset {
my $self = shift;
FuzzyInference/Set.pm view on Meta::CPAN
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;
FuzzyInference/Set.pm view on Meta::CPAN
my @coords = $self->coords($name);
my $i = 0;
return map {++$i % 2 ? $_ : 1 - $_} @coords;
}
sub coords {
my ($self,
$name,
) = @_;
return undef unless $self->exists($name);
return @{$self->{TS}{$name}};
}
sub scale { # product implication
my ($self,
$name,
$scale,
) = @_;
FuzzyInference/Set.pm view on Meta::CPAN
}
# had to roll my own centroid algorithm.
# not sure why standard algorithms didn't work
# correctly!
sub centroid { # center of mass.
my ($self,
$name,
) = @_;
return undef unless $self->exists($name);
my @coords = $self->coords($name);
my @ar;
my $x0 = shift @coords;
my $y0 = shift @coords;
my ($x1, $y1);
while (@coords) {
$x1 = shift @coords;
( run in 1.189 second using v1.01-cache-2.11-cpan-d80b1682f3f )