回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p><strong>下面的代码集使用SCI-KIT学习中的SKFUZZY用PYTHON编写:</strong></p>
<pre><code>import skfuzzy as fuzz
import numpy as np
from skfuzzy import control as ctrl
import matplotlib.pyplot as plt
# New Antecedent/Consequent objects hold universe variables and membership
# functions
quality = ctrl.Antecedent(np.arange(0, 11, 1),'quality')
service = ctrl.Antecedent(np.arange(0, 11, 1), 'service')
tip = ctrl.Consequent(np.arange(0, 26, 1), 'tip')
# Auto-membership function population is possible with .automf(3, 5, or 7)
quality.automf(5)
service.automf(5)
tip['lower'] = fuzz.gaussmf(tip.universe,5,2)
tip['low'] = fuzz.gaussmf(tip.universe,10,2)
tip['average'] = fuzz.gaussmf(tip.universe,15,2)
tip['high'] = fuzz.gaussmf(tip.universe,20,1)
tip['higher'] = fuzz.gaussmf(tip.universe,23,0.5)
rule1 = ctrl.Rule(((quality['poor'] | quality['mediocre']) and (service['poor'] | service['mediocre'])), tip['lower'])
rule2 = ctrl.Rule(((quality['average'] | quality['mediocre']) and (service['poor'] | service['mediocre'])), tip['low'])
rule3 = ctrl.Rule(((quality['average'] | quality['decent']) and (service['mediocre'] | service['average'])), tip['average'])
rule4 = ctrl.Rule(((quality['decent'] | quality['good']) and (service['poor'] | service['mediocre'])), tip['average'])
rule5 = ctrl.Rule(((quality['decent'] | quality['good']) and (service['decent'] | service['mediocre'])), tip['high'])
rule6 = ctrl.Rule(((quality['decent'] | quality['good']) and (service['decent'] | service['good'])), tip['higher'])
tipping_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5, rule6])
tipping = ctrl.ControlSystemSimulation(tipping_ctrl)
tipping.input['service'] = 10
tipping.input['quality'] = 10
tipping.compute()
print(tipping.output['tip'])
tip.view(sim=tipping)
</code></pre>
<p><strong>在执行代码集时给出以下错误。错误是一个值错误,不确定我为什么会得到这个?是因为我输入规则集的方式吗?:</strong></p>
<pre><code>Traceback (most recent call last):
File "/Users/gaurangsmacbookpro/Desktop/Gaurang/PYTHON_CODE/FuzzyLogic/employee_salary.py", line 60, in <module>
tipping.input['quality'] = 10
File "/usr/local/lib/python3.8/site-packages/skfuzzy/control/controlsystem.py", line 168, in __setitem__
raise ValueError("Unexpected input: " + key)
ValueError: Unexpected input: quality
</code></pre>
<p>有人能告诉我我做错了什么吗?有点过时了。</strong></p>