📄 flbinit.c
字号:
#if!defined(__flbinit_c)
#define __flbinit_c
#include <alloc.h>
#include"flbrm.h"
void init_flbrm_rules(fuzzy_system_rec *fl)
{
const int no_of_rules=49;
int i;
for(i=0;i<no_of_rules;i++)
{
fl->rules[i].inp_index[0]=in_rss;
fl->rules[i].inp_index[1]=in_rssdot;
}
fl->rules[0].inp_fuzzy_set[0]=in_nl;
fl->rules[0].inp_fuzzy_set[1]=in_nl;
fl->rules[0].out_fuzzy_set=out_nl;
fl->rules[1].inp_fuzzy_set[0]=in_nl;
fl->rules[1].inp_fuzzy_set[1]=in_nm;
fl->rules[1].out_fuzzy_set=out_nl;
fl->rules[2].inp_fuzzy_set[0]=in_nl;
fl->rules[2].inp_fuzzy_set[1]=in_ns;
fl->rules[2].out_fuzzy_set=out_nl;
fl->rules[3].inp_fuzzy_set[0]=in_nl;
fl->rules[3].inp_fuzzy_set[1]=in_ze;
fl->rules[3].out_fuzzy_set=out_nm;
fl->rules[4].inp_fuzzy_set[0]=in_nl;
fl->rules[4].inp_fuzzy_set[1]=in_ps;
fl->rules[4].out_fuzzy_set=out_nm;
fl->rules[5].inp_fuzzy_set[0]=in_nl;
fl->rules[5].inp_fuzzy_set[1]=in_pm;
fl->rules[5].out_fuzzy_set=out_ns;
fl->rules[6].inp_fuzzy_set[0]=in_nl;
fl->rules[6].inp_fuzzy_set[1]=in_pl;
fl->rules[6].out_fuzzy_set=out_ze;
fl->rules[7].inp_fuzzy_set[0]=in_nm;
fl->rules[7].inp_fuzzy_set[1]=in_nl;
fl->rules[7].out_fuzzy_set=out_nl;
fl->rules[8].inp_fuzzy_set[0]=in_nm;
fl->rules[8].inp_fuzzy_set[1]=in_nm;
fl->rules[8].out_fuzzy_set=out_nl;
fl->rules[9].inp_fuzzy_set[0]=in_nm;
fl->rules[9].inp_fuzzy_set[1]=in_ns;
fl->rules[9].out_fuzzy_set=out_nm;
fl->rules[10].inp_fuzzy_set[0]=in_nm;
fl->rules[10].inp_fuzzy_set[1]=in_ze;
fl->rules[10].out_fuzzy_set=out_nm;
fl->rules[11].inp_fuzzy_set[0]=in_nm;
fl->rules[11].inp_fuzzy_set[1]=in_ps;
fl->rules[11].out_fuzzy_set=out_ns;
fl->rules[12].inp_fuzzy_set[0]=in_nm;
fl->rules[12].inp_fuzzy_set[1]=in_pm;
fl->rules[12].out_fuzzy_set=out_ze;
fl->rules[13].inp_fuzzy_set[0]=in_nm;
fl->rules[13].inp_fuzzy_set[1]=in_pl;
fl->rules[13].out_fuzzy_set=out_ps;
fl->rules[14].inp_fuzzy_set[0]=in_ns;
fl->rules[14].inp_fuzzy_set[1]=in_nl;
fl->rules[14].out_fuzzy_set=out_nl;
fl->rules[15].inp_fuzzy_set[0]=in_ns;
fl->rules[15].inp_fuzzy_set[1]=in_nm;
fl->rules[15].out_fuzzy_set=out_nm;
fl->rules[16].inp_fuzzy_set[0]=in_ns;
fl->rules[16].inp_fuzzy_set[1]=in_ns;
fl->rules[16].out_fuzzy_set=out_nm;
fl->rules[17].inp_fuzzy_set[0]=in_ns;
fl->rules[17].inp_fuzzy_set[1]=in_ze;
fl->rules[17].out_fuzzy_set=out_ns;
fl->rules[18].inp_fuzzy_set[0]=in_ns;
fl->rules[18].inp_fuzzy_set[1]=in_ps;
fl->rules[18].out_fuzzy_set=out_ze;
fl->rules[19].inp_fuzzy_set[0]=in_ns;
fl->rules[19].inp_fuzzy_set[1]=in_pm;
fl->rules[19].out_fuzzy_set=out_ps;
fl->rules[20].inp_fuzzy_set[0]=in_ns;
fl->rules[20].inp_fuzzy_set[1]=in_pl;
fl->rules[20].out_fuzzy_set=out_pm;
fl->rules[21].inp_fuzzy_set[0]=in_ze;
fl->rules[21].inp_fuzzy_set[1]=in_nl;
fl->rules[21].out_fuzzy_set=out_nm;
fl->rules[22].inp_fuzzy_set[0]=in_ze;
fl->rules[22].inp_fuzzy_set[1]=in_nm;
fl->rules[22].out_fuzzy_set=out_nm;
fl->rules[23].inp_fuzzy_set[0]=in_ze;
fl->rules[23].inp_fuzzy_set[1]=in_ns;
fl->rules[23].out_fuzzy_set=out_ns;
fl->rules[24].inp_fuzzy_set[0]=in_ze;
fl->rules[24].inp_fuzzy_set[1]=in_ze;
fl->rules[24].out_fuzzy_set=out_ze;
fl->rules[25].inp_fuzzy_set[0]=in_ze;
fl->rules[25].inp_fuzzy_set[1]=in_ps;
fl->rules[25].out_fuzzy_set=out_ps;
fl->rules[26].inp_fuzzy_set[0]=in_ze;
fl->rules[26].inp_fuzzy_set[1]=in_pm;
fl->rules[26].out_fuzzy_set=out_pm;
fl->rules[27].inp_fuzzy_set[0]=in_ze;
fl->rules[27].inp_fuzzy_set[1]=in_pl;
fl->rules[27].out_fuzzy_set=out_pm;
fl->rules[28].inp_fuzzy_set[0]=in_ps;
fl->rules[28].inp_fuzzy_set[1]=in_nl;
fl->rules[28].out_fuzzy_set=out_nm;
fl->rules[29].inp_fuzzy_set[0]=in_ps;
fl->rules[29].inp_fuzzy_set[1]=in_nm;
fl->rules[29].out_fuzzy_set=out_ns;
fl->rules[30].inp_fuzzy_set[0]=in_ps;
fl->rules[30].inp_fuzzy_set[1]=in_ns;
fl->rules[30].out_fuzzy_set=out_ze;
fl->rules[31].inp_fuzzy_set[0]=in_ps;
fl->rules[31].inp_fuzzy_set[1]=in_ze;
fl->rules[31].out_fuzzy_set=out_ps;
fl->rules[32].inp_fuzzy_set[0]=in_ps;
fl->rules[32].inp_fuzzy_set[1]=in_ps;
fl->rules[32].out_fuzzy_set=out_pm;
fl->rules[33].inp_fuzzy_set[0]=in_ps;
fl->rules[33].inp_fuzzy_set[1]=in_pm;
fl->rules[33].out_fuzzy_set=out_pm;
fl->rules[34].inp_fuzzy_set[0]=in_ps;
fl->rules[34].inp_fuzzy_set[1]=in_pl;
fl->rules[34].out_fuzzy_set=out_pl;
fl->rules[35].inp_fuzzy_set[0]=in_pm;
fl->rules[35].inp_fuzzy_set[1]=in_nl;
fl->rules[35].out_fuzzy_set=out_ns;
fl->rules[36].inp_fuzzy_set[0]=in_pm;
fl->rules[36].inp_fuzzy_set[1]=in_nm;
fl->rules[36].out_fuzzy_set=out_ze;
fl->rules[37].inp_fuzzy_set[0]=in_pm;
fl->rules[37].inp_fuzzy_set[1]=in_ns;
fl->rules[37].out_fuzzy_set=out_ps;
fl->rules[38].inp_fuzzy_set[0]=in_pm;
fl->rules[38].inp_fuzzy_set[1]=in_ze;
fl->rules[38].out_fuzzy_set=out_pm;
fl->rules[39].inp_fuzzy_set[0]=in_pm;
fl->rules[39].inp_fuzzy_set[1]=in_ps;
fl->rules[39].out_fuzzy_set=out_pm;
fl->rules[40].inp_fuzzy_set[0]=in_pm;
fl->rules[40].inp_fuzzy_set[1]=in_pm;
fl->rules[40].out_fuzzy_set=out_pl;
fl->rules[41].inp_fuzzy_set[0]=in_pm;
fl->rules[41].inp_fuzzy_set[1]=in_pl;
fl->rules[41].out_fuzzy_set=out_pl;
fl->rules[42].inp_fuzzy_set[0]=in_pl;
fl->rules[42].inp_fuzzy_set[1]=in_nl;
fl->rules[42].out_fuzzy_set=out_ze;
fl->rules[43].inp_fuzzy_set[0]=in_pl;
fl->rules[43].inp_fuzzy_set[1]=in_nm;
fl->rules[43].out_fuzzy_set=out_ps;
fl->rules[44].inp_fuzzy_set[0]=in_pl;
fl->rules[44].inp_fuzzy_set[1]=in_ns;
fl->rules[44].out_fuzzy_set=out_pm;
fl->rules[45].inp_fuzzy_set[0]=in_pl;
fl->rules[45].inp_fuzzy_set[1]=in_ze;
fl->rules[45].out_fuzzy_set=out_pl;
fl->rules[46].inp_fuzzy_set[0]=in_pl;
fl->rules[46].inp_fuzzy_set[1]=in_ps;
fl->rules[46].out_fuzzy_set=out_pl;
fl->rules[47].inp_fuzzy_set[0]=in_pl;
fl->rules[47].inp_fuzzy_set[1]=in_pm;
fl->rules[47].out_fuzzy_set=out_pl;
fl->rules[48].inp_fuzzy_set[0]=in_pl;
fl->rules[48].inp_fuzzy_set[1]=in_pl;
fl->rules[48].out_fuzzy_set=out_pl;
return
}
//////////////////////////////////////
void init_flbrm_mem_fns(fuzzy_system_rec *fl)
{
fl->inp_mem_fns[in_rss][in_nl]=init_tria(-3,-2,-1,left);
fl->inp_mem_fns[in_rss][in_nm]=init_tria(-3,-2,-1,regular);
fl->inp_mem_fns[in_rss][in_ns]=init_tria(-2,-1,0,regular);
fl->inp_mem_fns[in_rss][in_ze]=init_tria(-1,0,1,regular);
fl->inp_mem_fns[in_rss][in_ps]=init_tria(0,1,2,regular);
fl->inp_mem_fns[in_rss][in_pm]=init_tria(1,2,3,regular);
fl->inp_mem_fns[in_rss][in_pl]=init_tria(2,3,4,right);
fl->inp_mem_fns[in_rssdot][in_nl]=init_tria(-3,-2,-1,left);
fl->inp_mem_fns[in_rssdot][in_nm]=init_tria(-3,-2,-1,regular);
fl->inp_mem_fns[in_rssdot][in_ns]=init_tria(-2,-1,0,regular);
fl->inp_mem_fns[in_rssdot][in_ze]=init_tria(-1,0,1,regular);
fl->inp_mem_fns[in_rssdot][in_ps]=init_tria(0,1,2,regular);
fl->inp_mem_fns[in_rssdot][in_pm]=init_tria(1,2,3,regular);
fl->inp_mem_fns[in_rssdot][in_pl]=init_tria(2,3,4,right);
return
}
///////////////////////////////////////////////////////////////////
void init_flbrm_fuzzy_system(fuzzy_system_rec *fl)
{
fl->no_of_inputs=2;
fl->no_of_rules=49;
fl->no_of_inp_regions=7;
fl->no_of_outputs=7;
fl->output_values[out_nl]=-3;
fl->output_values[out_nm]=-2;
fl->output_values[out_ns]=-1;
fl->output_values[out_ze]=0;
fl->output_values[out_ps]=1;
fl->output_values[out_pm]=2;
fl->output_values[out_pl]=3;
fl->rules=(rule*)malloc(size_t)(fl->no_of_rules*sizeof(rule)));
init_flbrm_rules(fl);
init_flbrm_mem_fns(fl);
return
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -