【问题标题】:Fuzzy set addition and squaring模糊集加法和平方
【发布时间】:2017-08-29 14:16:52
【问题描述】:

我正在处理模糊集。我想知道是否有任何可用于 Python 的库?即,我无法添加 2 个模糊集并将它们平方。我将模糊集存储在 Python 字典中,键是成员元素,值是成员值。

我的套装是:

set_A = {'3':0.1, '4': 0.8, '5': 0.5}
set_B = {'6':0.6, '7': 0.2, '8': 0.7}

我想知道set_A + set_B

还有set_A^2 + set_B^2

【问题讨论】:

  • 那么在您的示例中会产生什么结果?
  • 总和的输出是​{'0':​ ​0.7,​ ​'1':​0.6,​​'2':​0.5} @L3viathan
  • 对于平方,我使用了不同的模糊集,C = {'-1':1, '0':0.4, '1':0.2, '2':0.5} D = {' -1':0.5, '0':0.8, '1':1, '4':0.4} 我要找C^2 + D^2?所需的输出是​{'2':​1,​'1':​0.8,​'17':​0.4,​'0':​0.4,​'16':​ ​0.4,​“5”:​0.5,​“4”:​0.5,“20”:​0.4}提前致谢。 @L3viathan
  • 那么“成员元素”有什么意义呢?如果事后扔掉钥匙,为什么不将其存储在列表中?
  • 您的示例输出没有显示这一点,reference.wolfram.com/legacy/applications/fuzzylogic/Manual/… 显示了集合的元素加法。 Python 有无序集合和 dicts - bruh!

标签: python addition fuzzy


【解决方案1】:

我不确定是否还没有用于此的库,但这里有一个快速简单的类,我认为它可以满足您的期望:

class Fuzzy_Set:

    def __init__(self, set):
        self.set = set

    def __add__(self, other):
        retset = {}
        for item in set(self.set.keys()).union(set(other.set.keys())):
            retset[item] = self.set.get(item, 0) + other.set.get(item, 0)

        return retset

    def __pow__(self, power, modulo=None):
        if modulo:
            return {k:v**power%modulo for k, v in self.set.items()}
        else:
            return {k:v**power for k, v in self.set.items()}

    def __mod__(self, other):
        return pow(Fuzzy_Set(self.set), 1, other)



if __name__ == '__main__':
    s1 = Fuzzy_Set({'3':0.1, '4': 0.8, '5': 0.5})
    s2 = Fuzzy_Set({'5': .5, '6':0.6, '7': 0.2, '8': 0.7})
    print(s1 + s2)
    print(s1**2)
    print(Fuzzy_Set({'1': 1, '2': 2, '3': 3})%2)

这实现了加法和取幂以及取模。 main 的输出为:

{'3': 0.1, '6': 0.6, '5': 1.0, '7': 0.2, '8': 0.7, '4': 0.8}
{'3': 0.010000000000000002, '4': 0.6400000000000001, '5': 0.25}
{'1': 1, '2': 0, '3': 1}

【讨论】:

  • 在这种情况下模数是如何定义的?每个单独元素的模数还是不同的东西?
  • 每个单独的元素..@bendl
  • 这不会产生建议的添加输出:​{'0':​ ​0.7,​ ​'1':​ ​0.6,​ ​'2':​ ​0.5}
  • 我错过了该评论...@MaheshK 如果您有关于该问题的额外信息,请将其编辑到问题中而不是发表评论。我现在不知道你所说的模糊集是什么意思。该输出没有意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多