Я делаю нечеткого агента с scikit-fuzzy, который определяет, насколько хорош баскетболист, основываясь на длине и мотивации. Очевидно, что это учебный проект, а не реалистичная реализация.
В простом примере только с отношением между длиной и качеством у меня есть следующие нечеткие правила:
R1 = fuzz.relation_product(l_tall, q_good)
R2 = fuzz.relation_product(l_moderate, q_moderate)
R3 = fuzz.relation_product(l_short, q_bad)
R_combined = np.fmax(R1, np.fmax(R2, R3))
fuzz.defuzz(quality, R_combined[length == 180], 'centroid')
Это возвращает четкое значение, как и ожидалось.
Однако, когда я работаю с двумя видами отношений:
#Relationships between motivation and quality of player
R1 = fuzz.relation_product(m_very, q_good)
R2 = fuzz.relation_product(m_barely, q_bad)
#Relationships between length and quality of player
R3 = fuzz.relation_product(l_tall, q_good)
R4 = fuzz.relation_product(l_short, q_bad)
Я не знаю, что делать дальше, чтобы все заработало. Объединить ли все правила или только похожие правила, и как потом использовать функцию дефаззификации? Мне нужно иметь возможность иметь два параметра (длина и мотивация), поэтому подход, который я использовал выше, не работает.