пожалуйста, помогите мне. заранее спасибо. Цели: Деление в методе 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=