From d140129b65ddfc7a8def30050f91bd53cad157af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Babi=C4=8D?= Date: Tue, 26 May 2015 15:53:52 +0200 Subject: [PATCH] added matlab fuzzy controller --- fuzzy-logic/MATLAB/car_brake.fis | 47 ++++++++++++++++++++++++++++++++ fuzzy-logic/MATLAB/car_brake.m | 8 ++++++ 2 files changed, 55 insertions(+) create mode 100644 fuzzy-logic/MATLAB/car_brake.fis create mode 100644 fuzzy-logic/MATLAB/car_brake.m diff --git a/fuzzy-logic/MATLAB/car_brake.fis b/fuzzy-logic/MATLAB/car_brake.fis new file mode 100644 index 0000000..0ac54f7 --- /dev/null +++ b/fuzzy-logic/MATLAB/car_brake.fis @@ -0,0 +1,47 @@ +[System] +Name='car_brake' +Type='mamdani' +Version=2.0 +NumInputs=2 +NumOutputs=1 +NumRules=6 +AndMethod='min' +OrMethod='max' +ImpMethod='min' +AggMethod='max' +DefuzzMethod='centroid' + +[Input1] +Name='brakeTemp' +Range=[-20 180] +NumMFs=3 +MF1='cool':'pimf',[-110 -30 -10 40] +MF2='warm':'pimf',[-10 40 80 170] +MF3='hot':'pimf',[80 170 190 270] + +[Input2] +Name='carSpeed' +Range=[0 180] +NumMFs=4 +MF1='slow':'trapmf',[-54 -6 5 30] +MF2='optimal':'trapmf',[5 30 50 80] +MF3='fast':'trapmf',[50 80 100 130.446428571429] +MF4='veryFast':'trapmf',[100 130.267857142857 186 234] + +[Output1] +Name='brakePressure' +Range=[-20 20] +NumMFs=5 +MF1='greatlyDecreased':'trimf',[-30 -20 -5] +MF2='slightlyDecreased':'trimf',[-20 -5 0] +MF3='normal':'trimf',[-5 0 5] +MF4='slightlyIncreased':'trimf',[0 5 20] +MF5='greatlyIncreased':'trimf',[5 20 30] + +[Rules] +0 4, 5 (1) : 2 +1 3, 4 (0.75) : 2 +2 -4, 2 (0.5) : 1 +3 -4, 1 (0.5) : 1 +-3 1, 4 (0.25) : 1 +0 2, 3 (0.1) : 1 diff --git a/fuzzy-logic/MATLAB/car_brake.m b/fuzzy-logic/MATLAB/car_brake.m new file mode 100644 index 0000000..0d00a79 --- /dev/null +++ b/fuzzy-logic/MATLAB/car_brake.m @@ -0,0 +1,8 @@ +disp('Welcome to car brake pressure fuzzy control.'); +disp(' '); +temp = input('Please insert brake temperature in °C: '); +speed = input('Please insert car speed in km/h: '); +fis_brake = readfis('car_brake.fis'); +press = evalfis([temp speed], fis_brake); +out = sprintf('The brake pressure shoud be adjusted by %2.2f bar.', press); +disp(out); \ No newline at end of file