Курсовая работа: Применение нечёткой логики на примере простой модели зарядного устройства для батарей
hi += -lo; lo = 0;
}
else
{
lo_plat -= lo; hi_plat -= lo;
hi -= lo; lo = 0;
}
upslope =(float) (1.0 / (lo_plat - lo));
downslope = (float)(1.0 / (hi - hi_plat));
if (value < lo) return (float)0.0;
else if (value > hi) return (float)0.0;
else if ((value >= lo_plat) && (value <= hi_plat)) return (float)1.0;
else if (value < lo_plat) return ((value - lo) * upslope);
else if (value > hi_plat) return ((hi - value) * downslope);
return (float)0.0;
}
Функция, plateauProf ile, задает функцию принадлежности в форме трапеции (пример - функция принадлежности для температуры на рис. 2)Затем с помощью функции plateauProfile дополнительно создаются те функции принадлежности, которые распространяются до границ (например, функции холодно и жарко на рис. 2). Их задача заключается в том, чтобы определить степень принадлежности заданного значения и аргументов функции. График функции принадлежности для напряжения определяет в области напряжения три функции принадлежности: низкое, среднее и высокое. Аналогично задаются три функции принадлежности для области температуры: холодно, тепло и горячо. Эти значения используются только для демонстрации и не учитывают какую-либо технологию производства батарей.
Функции принадлежности для напряжения
//функция принадлежности для низкого нааряжения
public float m_voltage_low(float voltage)
{
const float lo = (float)5.0;
const float lo_plat = (float)5.0;
const float hi_plat = (float)5.0;
const float hi = (float)10.0;
if (voltage < lo) return (float)1.0;
if (voltage > hi) return (float)0.0;
return plateauProfile(voltage, lo, lo_plat, hi_plat, hi);
}