4 base
= os
.path
.dirname(__file__
)
5 path
= os
.path
.dirname(base
)
6 sys
.path
.insert(0, path
)
8 sys
.stdout
= open(sys
.argv
[1], "w")
10 import liba
# type: ignore
21 [liba
.mf
.TRI
, NL
, NL
, NM
],
22 [liba
.mf
.TRI
, NL
, NM
, NS
],
23 [liba
.mf
.TRI
, NM
, NS
, ZO
],
24 [liba
.mf
.TRI
, NS
, ZO
, PS
],
25 [liba
.mf
.TRI
, ZO
, PS
, PM
],
26 [liba
.mf
.TRI
, PS
, PM
, PL
],
27 [liba
.mf
.TRI
, PM
, PL
, PL
],
37 [liba
.mf
.TRI
, NL
, NL
, NM
],
38 [liba
.mf
.TRI
, NL
, NM
, NS
],
39 [liba
.mf
.TRI
, NM
, NS
, ZO
],
40 [liba
.mf
.TRI
, NS
, ZO
, PS
],
41 [liba
.mf
.TRI
, ZO
, PS
, PM
],
42 [liba
.mf
.TRI
, PS
, PM
, PL
],
43 [liba
.mf
.TRI
, PM
, PL
, PL
],
54 [NL
, NL
, NM
, NM
, NS
, ZO
, ZO
],
55 [NL
, NL
, NM
, NS
, NS
, ZO
, PS
],
56 [NM
, NM
, NM
, NS
, ZO
, PS
, PS
],
57 [NM
, NM
, NS
, ZO
, PS
, PM
, PM
],
58 [NS
, NS
, ZO
, PS
, PS
, PM
, PM
],
59 [NS
, ZO
, PS
, PM
, PM
, PM
, PL
],
60 [ZO
, ZO
, PM
, PM
, PM
, PL
, PL
],
71 [PL
, PL
, PM
, PM
, PS
, ZO
, ZO
],
72 [PL
, PL
, PM
, PS
, PS
, ZO
, ZO
],
73 [PL
, PM
, PS
, PS
, ZO
, NS
, NS
],
74 [PM
, PM
, PS
, ZO
, NS
, NM
, NM
],
75 [PM
, PS
, ZO
, NS
, NS
, NM
, NL
],
76 [ZO
, ZO
, NS
, NS
, NM
, NL
, NL
],
77 [ZO
, ZO
, NS
, NM
, NM
, NL
, NL
],
88 [NS
, PS
, PL
, PL
, PL
, PM
, NS
],
89 [NS
, PS
, PL
, PM
, PM
, PS
, ZO
],
90 [ZO
, PS
, PM
, PM
, PS
, PS
, ZO
],
91 [ZO
, PS
, PS
, PS
, PS
, PS
, ZO
],
92 [ZO
, ZO
, ZO
, ZO
, ZO
, ZO
, ZO
],
93 [NL
, NS
, NS
, NS
, NS
, NS
, NL
],
94 [NL
, NM
, NM
, NM
, NS
, NS
, NL
],
105 num
= [6.59492796e-05, 6.54019884e-05]
106 den
= [1.0, -1.97530991, 0.97530991]
108 tf
= liba
.tf(num
, den
[1:])
110 liba
.pid_fuzzy().rule(me
, mec
, mkp
, mki
, mkd
).set_block(2).op(liba
.pid_fuzzy
.CAP_ALGEBRA
)
112 pid_fuzzy
.outmax
= MAX
113 pid_fuzzy
.outmin
= MIN
124 for i
in range(len(x
)):
125 y1
[i
] = tf(pid_fuzzy
.pos(r
, tf
.output
[0]))
131 for i
in range(len(x
)):
132 y2
[i
] = tf(pid_fuzzy
.inc(r
, tf
.output
[0]))
134 for i
in range(len(x
)):
135 print("%g,%g,%g,%g" % (x
[i
], r
, y1
[i
], y2
[i
]))
142 pid_fuzzy
.kp
= pid_fuzzy
.kp
143 pid_fuzzy
.ki
= pid_fuzzy
.ki
144 pid_fuzzy
.kd
= pid_fuzzy
.kd
145 pid_fuzzy
.summax
= pid_fuzzy
.summax
146 pid_fuzzy
.summin
= pid_fuzzy
.summin
148 pid_fuzzy
.outmax
= pid_fuzzy
.outmax
149 pid_fuzzy
.outmin
= pid_fuzzy
.outmin
159 pid_fuzzy
.block
= pid_fuzzy
.block
+ 1