-
Notifications
You must be signed in to change notification settings - Fork 0
/
trabalho4.py
91 lines (66 loc) · 2.94 KB
/
trabalho4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from random import choice
from pyknow import *
lstRetornos = []
class TorreEmOperacao(Fact):
pass
class TorreNaoEstaEmOperacao(Fact):
pass
class CorrosaoSobControle(Fact):
pass
class RiscoDeCorrosao(Fact):
pass
class AjustarVazaoAguaLavagem(Fact):
pass
class AumentarInjecaoNeutralizante(Fact):
pass
class VerificarCorrosaoTorre(KnowledgeEngine):
@Rule(Fact(vazaoProduto=P(lambda vazaoProduto: vazaoProduto > 0)))
def verificaVazaoProduto(self):
lstRetornos.append("1 - Vazao Produto Verificada!")
self.declare(TorreEmOperacao())
@Rule(Fact(vazaoProduto=P(lambda vazaoProduto: vazaoProduto <= 0)))
def verificaVazaoProduto2(self):
lstRetornos.append("1 - Vazao Produto Verificada!")
self.declare(TorreNaoEstaEmOperacao())
@Rule(TorreNaoEstaEmOperacao())
def torreNaoEstaEmOperacao(self):
lstRetornos.append("2 - Torre não está em operacao!")
@Rule(TorreEmOperacao())
def torreEmOperacao(self):
lstRetornos.append("2 - Torre está em operacao!")
@Rule(TorreEmOperacao(), Fact(phTopoTorre=5.9), Fact(vazaoAguaLavagem=P(lambda vazaoAguaLavagem: vazaoAguaLavagem < 143 and vazaoAguaLavagem > 117)))
def verificaCorrosaoTorreEstaOk(self):
lstRetornos.append("3 - Corrosao na torre verificada!")
self.declare(CorrosaoSobControle())
@Rule(TorreEmOperacao(), Fact(phTopoTorre=5.0), Fact(vazaoAguaLavagem=P(lambda vazaoAguaLavagem: vazaoAguaLavagem < 143 and vazaoAguaLavagem < 115)))
def verificaCorrosaoTorreNaoEstaOk2(self):
lstRetornos.append("3 - Corrosao na torre verificada!")
self.declare(RiscoDeCorrosao())
self.declare(AjustarVazaoAguaLavagem())
@Rule(TorreEmOperacao(), Fact(phTopoTorre=5.0),
Fact(vazaoAguaLavagem=P(lambda vazaoAguaLavagem: vazaoAguaLavagem < 143 and vazaoAguaLavagem > 117)))
def verificaCorrosaoTorreNaoEstaOk(self):
lstRetornos.append("3 - Corrosao na torre verificada!")
self.declare(RiscoDeCorrosao())
self.declare(AumentarInjecaoNeutralizante())
@Rule(CorrosaoSobControle())
def corrosaoSobControle(self):
lstRetornos.append("4 - Corrosão sob controle na torre!")
@Rule(RiscoDeCorrosao())
def riscodecorrosao(self):
lstRetornos.append("4 - Risco elevado de corrosão na torre!")
@Rule(AjustarVazaoAguaLavagem())
def ajustarVazaoAguaLavagem(self):
lstRetornos.append("5 - Ajustar Vazao água de lavagem para > 130 * 0,9")
@Rule(AumentarInjecaoNeutralizante())
def aumentarInjecaoNeutralizante(self):
lstRetornos.append("5 - Aumentar a injeção de Neutralizante em 10 %")
engine = VerificarCorrosaoTorre()
engine.reset()
engine.declare(Fact(vazaoProduto=choice([0, 1, 2, 3, 4, 0])))
engine.declare(Fact(phTopoTorre=choice([5.0, 5.9])))
engine.declare(Fact(vazaoAguaLavagem=choice([140, 115, 110, 130, 109, 112])))
engine.run()
lstRetornos.sort()
for retorno in lstRetornos:
print(retorno)