Курсовая работа: Применение нечёткой логики на примере простой модели зарядного устройства для батарей
public float m_voltage_medium(float voltage)
{
const float lo = (float)5.0;
const float lo_plat = (float)10.0;
const float hi_plat = (float)20.0;
const float hi = (float)25.0;
if (voltage < lo) return (float)0.0;
if (voltage > hi) return (float)0.0;
return plateauProfile(voltage, lo, lo_plat, hi_plat, hi);
}
//функцияпринадлежностидлявысокогонааряжения
public float m_voltage_high(float voltage)
{
const float lo = (float)25.0;
const float lo_plat = (float)30.0;
const float hi_plat = (float)30.0;
const float hi = (float)30.0;
if (voltage < lo) return (float)0.0;
if (voltage > hi) return (float)1.0;
return plateauProfile(voltage, lo, lo_plat, hi_plat, hi);
}
Все функции принадлежности используют функцию plateau Profile, чтобы построить график. Каждая из них принимает значение напряжения и затем возвращает значение, которое соответствует ее степени принадлежности. Каждая функция сначала проверяет переданное значение на соответствие диапазону функции принадлежности. Если значение не выходит за рамки диапазона, оно передается в функцию plateauPro f ile . При этом ее сигнатура задается как вектор [lo, lo__plat, hi_plat, hi], а затем пользователю возвращается результат.
Функции принадлежности для температуры
// функция принадлежностми для высокой температуры
public float m_temp_hot(float temp)
{
const float lo = (float)35.0;
const float lo_plat = (float)45.0;
const float hi_plat = (float)45.0;