FuzzyUniverse unUDALJ = integer discrete {-100,100,1};
FuzzyUniverse unBRZINE = integer discrete {0,100,1};
FuzzyUniverse unSMJER = integer enumerated {-1,1};
FuzzyUniverse unGAS = integer discrete {-10,10,1};
FuzzyUniverse unOKRET = integer discrete {-2,2,1};
FuzzyFunc brNULA = FuzzyTrokut(0,0,10) @ unBRZINE;
FuzzyFunc brMALA = FuzzyTrokut(0,30,60) @ unBRZINE;
FuzzyFunc brVELIKA = FuzzyTrapez(30,60,100,100) @ unBRZINE;
FuzzyFunc udaljNEG = FuzzyTrapez(-100,-100,-1,0) @ unUDALJ;
FuzzyFunc udaljKRITMALA = FuzzyTrapez(0,0,5,20) @ unUDALJ;
FuzzyFunc udaljMALA = FuzzyTrokut(10,30,60) @ unUDALJ;
FuzzyFunc udaljSRED = FuzzyTrokut(45,60,75) @ unUDALJ;
FuzzyFunc udaljVELIKA = FuzzyTrapez(60,80,100,100) @ unUDALJ;
FuzzyFunc gasVELNEG = FuzzyTrapez(-10,-10,-8,-2) @ unGAS;
FuzzyFunc gasMALNEG = FuzzyTrokut(-6,-3,0) @ unGAS;
FuzzyFunc gasNULA = FuzzyTrokut(-2,0,2) @ unGAS;
FuzzyFunc gasMALPOZ = FuzzyTrokut(0,3,6) @ unGAS;
FuzzyFunc gasVELPOZ = FuzzyTrapez(2,8,10,10) @ unGAS;
FuzzyFunc smjerPRAVI = FuzzyTrokut(0,1,2) @ unSMJER;
FuzzyFunc smjerKRIVI = FuzzyTrokut(-2,-1,0) @ unSMJER;
FuzzyFunc okretDA = FuzzyTrokut(-1,1,2) @ unOKRET;
FuzzyFunc okretNE = FuzzyTrokut(-2,-1,1) @ unOKRET;
FuzzyControlSystem sys1 (
DefineVars( udalj, brzina, smjer ),
DefineVars( gas, okreni ),
Rules(
Rule(
Min(
ValueIn(brNULA,brzina),
ValueIn(smjerKRIVI,smjer)
), okreni, okretDA
),
Rule(
Max(
Not(ValueIn(brNULA,brzina)),
ValueIn(smjerPRAVI,smjer)), okreni,
okretNE
),
Rule( Not(ValueIn(smjerPRAVI,smjer)), gas, gasVELNEG
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljVELIKA,udalj),
Not(ValueIn(brVELIKA,brzina))
)
), gas, gasVELPOZ
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljVELIKA,udalj),
ValueIn(brVELIKA,brzina)
)
), gas, gasMALPOZ
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljMALA,udalj),
ValueIn(brVELIKA,brzina)
)
), gas, gasVELNEG
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljMALA,udalj),
ValueIn(brMALA,brzina)
)
), gas, gasMALNEG
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljSRED,udalj),
ValueIn(brMALA,brzina)
)
), gas, gasMALPOZ
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljSRED,udalj),
ValueIn(brVELIKA,brzina)
)
), gas, gasMALNEG
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
Max(
ValueIn(udaljSRED,udalj),
ValueIn(udaljVELIKA,udalj)
),
ValueIn(brNULA,brzina)
)
), gas, gasVELPOZ
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
Min(
ValueIn(udaljMALA,udalj),
ValueIn(brNULA,brzina)
)
), gas, gasMALPOZ
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
ValueIn(udaljKRITMALA,udalj)
), gas, gasVELNEG
),
Rule(
Min(
ValueIn(smjerPRAVI,smjer),
ValueIn(udaljNEG,udalj)
), gas, gasVELNEG
)
),
1
);
/* Iscrtavanje skupova koji definiraju brzine */
Drawing(
SetRange(0,100,0,1),
SetTitle("Brzine"),
DrawFunc( brNULA, {Color=red, PlotJoined=true} ),
DrawFunc( brMALA, {Color=green, PlotJoined=true} ),
DrawFunc( brVELIKA, {Color=blue, PlotJoined=true} )
);
/* Iscrtavanje skupova koji definiraju brzine */
Drawing(
SetRange(-100,100,0,1),
SetTitle("Udaljenosti"),
DrawFunc( udaljNEG, {Color=red, PlotJoined=true} ),
DrawFunc( udaljKRITMALA, {Color=green, PlotJoined=true} ),
DrawFunc( udaljMALA, {Color=blue, PlotJoined=true} ),
DrawFunc( udaljSRED, {Color=gray, PlotJoined=true} ),
DrawFunc( udaljVELIKA, {Color=magenta, PlotJoined=true} )
);
/* Iscrtavanje skupova koji definiraju gas */
Drawing(
SetRange(-10,10,0,1),
SetTitle("Gas"),
DrawFunc( gasVELNEG, {Color=red, PlotJoined=true} ),
DrawFunc( gasMALNEG, {Color=green, PlotJoined=true} ),
DrawFunc( gasNULA, {Color=blue, PlotJoined=true} ),
DrawFunc( gasMALPOZ, {Color=gray, PlotJoined=true} ),
DrawFunc( gasVELPOZ, {Color=magenta, PlotJoined=true} )
);
/* Iscrtavanje skupova koji definiraju smjer */
Drawing(
SetRange(-1,1,0,1),
SetTitle("Smjer"),
DrawFunc( smjerPRAVI, {Color=red, PlotJoined=true} ),
DrawFunc( smjerKRIVI, {Color=green, PlotJoined=true} )
);
/* Iscrtavanje skupova koji definiraju okret */
Drawing(
SetRange(-2,2,0,1),
SetTitle("Okret"),
DrawFunc( okretDA, {Color=red, PlotJoined=true} ),
DrawFunc( okretNE, {Color=green, PlotJoined=true} )
);
ExternalJavaCall Proba3;
|