Нечеткие логики c арифметические c операции - PullRequest
0 голосов
/ 28 апреля 2020

пожалуйста, помогите мне. заранее спасибо. Цели: Деление в методе truediv Суммирование в методе add

Буду благодарен, если вы перенаправите в нужное место, спасибо.

Нечеткая логика c Нечеткое число Нечеткая логика c Нечеткое число Нечеткая логика c Нечеткая логика c

Я делаю это как, но я думаю, что это неправильно:

 def __truediv__(self, o):
        # Put your code here

        return max(self.val/o.val, self.val/o.width, self.width/o.val, self.width/o.width), min(self.val/o.val, self.val/o.width, self.width/o.val, self.width/o.width)
        #return FuzzyValue(self.val/o.val,self.width+o.width)

    def __add__(self, o): 
        # Put your code here
        self.op = o

        return self.val+o.val, self.width+o.width

Исходный код:

def mu_max(val,width,x):
    buff = ((x-val)/width)*((x-val)/width)
    print(max(0,1-buff))
    return max(0,1-buff)  


class FuzzyValue():

    def __init__(self,val,width,mu = None):
        self.val = float(val)
        self.width = float(width)
        if mu is not None:
            self.mu = partial(mu,self.val,self.width)
            print(self.mu)
        self.op = None


    def __call__(self,x):
        if self.mu is not None:
            return float(self.mu(x))


    def __truediv__(self, o):
        # Put your code here


        return FuzzyValue(self.val/o.val,self.width+o.width)

    def __add__(self, o): 
        # Put your code here
        self.op = o

        return self

    def draw(self):
        xs = np.linspace(-7,14,num=1000)
        y = [self(x) for x in xs]
        plt.figure()
        plt.plot(xs,y)        

a = FuzzyValue(5.1,1.5,mu_max)
b = FuzzyValue(4.3,2,mu_max)
# (a+b).draw()
#print(b(3))
#c=a+b
#d=

...