SlideShare a Scribd company logo
1 of 31
Download to read offline
CADERNOS DE INTELIGÊNCIA ARTIFICIAL
Exemplos em Python
Prof. Ronaldo F. Ramos, Dr
17 de julho de 2020
1/31
AULA X
Aplicando Prolog
2/31
O velho problema das rainhas
A solução do problema das N rainhas é uma lista de N Números
cujos valores variam na faixa de 1 a N. Ex.[2,4,1,3].
3/31
Permutação
Trata-se de uma permutação de números de 1 a N que sigam
regras adicionais, ou seja, representem uma configuração segura
com relação as regras do jogo. Em LPO seria algo como:
rainhas(N,Q) ← faixa(1,N,R), permutacao(R,P),seguro(P).
4/31
Predicado faixa (range)
faixa(A, A, [A]).
faixa(A, B, [A|L]) : −A < B, A1 is A + 1, faixa(A1, B, L).
Saı́da: [1,2,3,4,5,6,7,8]
5/31
Predicado permutacao
permutacao([], []).
permutacao([H|T], PL) : −permutacao(T, PT), del(H, PL, PT).
del(X, [X|L], L).
del(X, [Y |L], [Y |L1]) : −del(X, L, L1).
6/31
Predicado seguro
seguro([]).
seguro([Q|R]) : −seguro(R), naoAtaca(Q, R, 1).
naoAtaca(,[],) .
naoAtaca(Y , [Y 1|Ylist], Xdist) : −Y 1 − Y 6= Xdist, Y − Y 1 6=
Xdist, Dist1 is Xdist + 1, naoAtaca(Y , Ylist, Dist1).
7/31
Diagonal
8/31
Programa Completo
1.faixa(A, A, [A]).
2.faixa(A, B, [A|L]) : −A < B, A1isA + 1, faixa(A1, B, L).
3.permutacao([], []).
4.permutacao([H|T], PL) : −permutacao(T, PT), del(H, PL, PT).
5.del(X, [X|L], L).
6.del(X, [Y |L], [Y |L1]) : −del(X, L, L1).
7.seguro([]).
8.seguro([Q|R]) : −seguro(R), naoAtaca(Q, R, 1).
9.naoAtaca(,[],) .
10.naoAtaca(Y , [Y 1|Ylist], Xdist) : −Y 1 − Y 6= Xdist, Y − Y 1 6=
Xdist, Dist1isXdist + 1, naoAtaca(Y , Ylist, Dist1).
11.rainhas(N, Qs) :
−faixa(1, N, Ns), permutacao(Ns, Qs), seguro(Qs).
9/31
Sistemas Especialistas
o conjunto de fatos e regras do programa formam uma base de
conhecimento advinda de um especialista em um certo domı́nio de
conhecimento. A possibilidade de criar queries diferenciadas e
muitas vezes nem imaginadas pelo programador tornam o sistema
mais parecido com uma ”inteligência artificial”do que sistemas
escritos em linguagens convencionais.
10/31
Sistema Especialista em Análise de Crédito
Ben-David, A. and Sterling, 1., A Prototype Expert System for
Credit Evaluation, in Artificial Intelligence in Economics and
Management, L. F. Pau (ed.), pp. 1 2 1 -1 28, North-Holland,
Amsterdam, 1986.
11/31
Sistema Especialista em Análise de Crédito - Entrada
credit(Client,Answer) :- ok profile(Client),
collateral rating(Client,CollateralRating),
financial rating(Client,FinancialRating),
bank yield(Client,Yield),
evaluate(profile(CollateralRating,FinancialRating,Yield),Answer),
!.
12/31
Collateral = Garantias
Garantias de Primeira Classe
Depósitos em moeda corrente em bancos locais ou estrangeiros.
Garantias de Segunda Classe
Ações.
illı́quido
Ativos de hipoteca (mortgage) não lı́quido ou ilı́quido (illiquid).
13/31
Classificação Financeira = Finantial Rating
Patrimônio lı́quido por ativos do cliente e seu lucro bruto atual das
vendas ou seja, os rendimentos do cliente. Também é considerado
o endividamento do cliente, principalmente a dı́vida de curto prazo.
14/31
Ganho do Banco = Bank Yield
Todos esses fatores são analisados em formas qualitativas.
15/31
Escala
scale(collateral,[excellent,good,moderate]).
scale(finances,[excellent,good,medium,bad]).
scale(yield,[excellent,reasonable,poor]).
16/31
—Regras em palavras
”Se as garantias do cliente são excelentes, sua razão financeira
(ganhos/gastos) são bons e o rendimento previsto para o banco é
pelo menos razoável o empréstimo é garantido.”1
”Se as garantias e razão financeira são boas e o rendimento
esperado é razoável, consultar superior.”
”Se as garantias não são mais que moderadas e o financeiro é
médio, recusar o crédito.”2
1
Nenhum banqueiro fica rico dando dinheiro.
2
O Cliente é enxotado.
17/31
Regras - Formal
rule([condition(collateral,’>=’,excellent),condition(finances,’>=’,good),
condition(yield,’>=’,reasonable)],give credit).
rule([condition(collateral,’=’,good),condition(finances,’=’,good),
condition(yield,’>=’,reasonable)],consult superior).
rule([condition(collateral,’=<’,moderate),condition(finances,’=<’,
medium)],refuse credit).
18/31
Dados para teste. Cliente que teve o seu crédito aprovado.
bank yield(client1, excellent ).
requested credit(client1, 50000).
amount(local currency deposits, client1, 30000).
amount(foreign currency deposits, client1, 20000).
amount(bank guarantees,client1, 3000).
amount(negotiate instruments, client1, 5000).
amount(stocks, client1, 9000).
amount(mortgage, client1, 12000).
amount(documents, client1, 14000).
value(net worth per assets, client1, 40) .
value(last year sales growth, client1, 20) .
value(gross profits on sales, client1, 45) .
value(short term debt per annual sales, client1, 9) .
ok profile(client1).
19/31
Módulo de Classificação Colateral
collateral rating(Client,Rating) :-
collateral profile(Client,FirstClass,SecondClass,Illiquid),
collateral evaluation(FirstClass,SecondClass,Illiquid,Rating).
collateral profile(Client,FirstClass,SecondClass,Illiquid) :-
requested credit(Client,Credit),
collateral percent(first class,Client,Credit,FirstClass),
collateral percent(second class,Client,Credit,SecondClass),
collateral percent(Illiquid,Client,Credit,Illiquid).
20/31
Módulo de Classificação Collateral (Garantias)
collateral percent(Type,Client,Total,Value) :-
findall(X,(collateral(Collateral,Type),
amount(Collateral,Client,X)),Xs),
sumlist(Xs,Sum),
Value is Sum ∗ 100/Total.
21/31
Regras de Avaliação
collateral evaluation(FirstClass,SecondClass,Illiquid,excellent) :-
FirstClass >= 100.
collateral evaluation(FirstClass,SecondClass,Illiquid,excellent) :-
FirstClass > 70, FirstClass + SecondClass >= 100.
collateral evaluation(FirstClass,SecondClass,Illiquid,good) :-
FirstClass + SecondClass > 60,FirstClass + SecondClass < 70,
FirstClass + SecondClass + Illiquid >= 100.
22/31
Dados Bancários (fatos)
collateral(local currency deposits,first class).
collateral(foreign currency deposits,first class).
collateral(negotiate instruments,second class).
collateral(mortgage,illiquid).
23/31
Classificação Financeira
financial rating(Client,Rating) :-
financial factors(Factors),
score(Factors,Client,0,Score),
calibrate(Score,Rating).
24/31
Regras de Avaliação Financeira
calibrate(Score,bad) :- Score =< -500.
calibrate(Score,medium) :- -500 < Score, Score < 150.
calibrate(Score,good) :- 150 =< Score, Score < 1000.
calibrate(Score,excellent) :- Score >= 1000.
25/31
Fatores de Pesos
financial factors([(net worth per assets,5),
(last year sales growth,1),
(gross profits on sales,5),
(short term debt per annual sales,2) ]).
score([(Factor,Weight)—Factors],Client,Acc,Score) :-
value(Factor,Client,Value),
Acc1 is Acc + Weight*Value,
score(Factors,Client,Acc1,Score).
score([],Client,Score,Score).
26/31
Avaliação Final
evaluate(Profile,Answer) :-
rule(Conditions,Answer), verify(Conditions,Profile).
verify([condition(Type,Test,Rating)—Conditions],Profile) :-
scale(Type,Scale),
select value(Type,Profile,Fact),
compare(Test,Scale,Fact,Rating),
verify(Conditions,Profile).
verify([],Profile).
27/31
Avaliação Final
compare(’=’,Scale,Rating,Rating).
compare(’>’,Scale,Rating1,Rating2) :-
precedes(Scale,Rating1,Rating2).
compare(’>=’,Scale,Rating1,Rating2) :-
precedes(Scale,Rating1,Rating2) ; Rating1 = Rating2.
compare(’<’,Scale,Rating1,Rating2) :-
precedes(Scale,Rating2,Rating1).
compare(’=<’,Scale,Rating1,Rating2) :-
precedes(Scale,Rating2,Rating1) ; Rating1 = Rating2.
28/31
Avaliação Final
precedes([R1|Rs],R1,R2).
precedes([R|Rs],R1,R2) :- R 6= R2, precedes(Rs,R1,R2).
select value(collateral,profile(C,F,Y),C).
select value(finances,profile(C,F,Y),F).
select value(yield,profile(C,F,Y),Y).
29/31
Utilitários
sumlist(Is,Sum) :-
sumlist(Is,0,Sum).
sumlist([I—Is],Temp,Sum) :-
Temp1 is Temp + I,
sumlist(Is,Temp1,Sum).
sumlist([],Sum,Sum).
30/31
FIM
31/31

More Related Content

More from ronaldo ramos

javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdfronaldo ramos
 
python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdfronaldo ramos
 
paradigmas_de_programacao_2_X.pdf
paradigmas_de_programacao_2_X.pdfparadigmas_de_programacao_2_X.pdf
paradigmas_de_programacao_2_X.pdfronaldo ramos
 
paradigmas_de_programacao_1_X.pdf
paradigmas_de_programacao_1_X.pdfparadigmas_de_programacao_1_X.pdf
paradigmas_de_programacao_1_X.pdfronaldo ramos
 
paradigmas_de_programacao.pdf
paradigmas_de_programacao.pdfparadigmas_de_programacao.pdf
paradigmas_de_programacao.pdfronaldo ramos
 
paradigmas_de_programacao_3_X.pdf
paradigmas_de_programacao_3_X.pdfparadigmas_de_programacao_3_X.pdf
paradigmas_de_programacao_3_X.pdfronaldo ramos
 
python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdfronaldo ramos
 
48-aula48-modelosTemporais.pdf
48-aula48-modelosTemporais.pdf48-aula48-modelosTemporais.pdf
48-aula48-modelosTemporais.pdfronaldo ramos
 
47-aula47-fuzzy-aplicacao.pdf
47-aula47-fuzzy-aplicacao.pdf47-aula47-fuzzy-aplicacao.pdf
47-aula47-fuzzy-aplicacao.pdfronaldo ramos
 

More from ronaldo ramos (20)

03_lisp.pdf
03_lisp.pdf03_lisp.pdf
03_lisp.pdf
 
02_lisp.pdf
02_lisp.pdf02_lisp.pdf
02_lisp.pdf
 
01_lisp.pdf
01_lisp.pdf01_lisp.pdf
01_lisp.pdf
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdf
 
python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdf
 
_001_introducao.pdf
_001_introducao.pdf_001_introducao.pdf
_001_introducao.pdf
 
paradigmas_de_programacao_2_X.pdf
paradigmas_de_programacao_2_X.pdfparadigmas_de_programacao_2_X.pdf
paradigmas_de_programacao_2_X.pdf
 
paradigmas_de_programacao_1_X.pdf
paradigmas_de_programacao_1_X.pdfparadigmas_de_programacao_1_X.pdf
paradigmas_de_programacao_1_X.pdf
 
paradigmas_de_programacao.pdf
paradigmas_de_programacao.pdfparadigmas_de_programacao.pdf
paradigmas_de_programacao.pdf
 
paradigmas_de_programacao_3_X.pdf
paradigmas_de_programacao_3_X.pdfparadigmas_de_programacao_3_X.pdf
paradigmas_de_programacao_3_X.pdf
 
python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdf
 
40-aula40.pdf
40-aula40.pdf40-aula40.pdf
40-aula40.pdf
 
43-aula43.pdf
43-aula43.pdf43-aula43.pdf
43-aula43.pdf
 
48-aula48-modelosTemporais.pdf
48-aula48-modelosTemporais.pdf48-aula48-modelosTemporais.pdf
48-aula48-modelosTemporais.pdf
 
47-aula47-fuzzy-aplicacao.pdf
47-aula47-fuzzy-aplicacao.pdf47-aula47-fuzzy-aplicacao.pdf
47-aula47-fuzzy-aplicacao.pdf
 
46-aula46-fuzzy.pdf
46-aula46-fuzzy.pdf46-aula46-fuzzy.pdf
46-aula46-fuzzy.pdf
 
42-aula42.pdf
42-aula42.pdf42-aula42.pdf
42-aula42.pdf
 
39-aula39.pdf
39-aula39.pdf39-aula39.pdf
39-aula39.pdf
 
38-aula38.pdf
38-aula38.pdf38-aula38.pdf
38-aula38.pdf
 
36-aula36.pdf
36-aula36.pdf36-aula36.pdf
36-aula36.pdf
 

Recently uploaded

Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxVishalSingh1417
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfAyushMahapatra5
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docxPoojaSen20
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterMateoGardella
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 

Recently uploaded (20)

Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 

37-aula37.pdf

  • 1. CADERNOS DE INTELIGÊNCIA ARTIFICIAL Exemplos em Python Prof. Ronaldo F. Ramos, Dr 17 de julho de 2020 1/31
  • 3. O velho problema das rainhas A solução do problema das N rainhas é uma lista de N Números cujos valores variam na faixa de 1 a N. Ex.[2,4,1,3]. 3/31
  • 4. Permutação Trata-se de uma permutação de números de 1 a N que sigam regras adicionais, ou seja, representem uma configuração segura com relação as regras do jogo. Em LPO seria algo como: rainhas(N,Q) ← faixa(1,N,R), permutacao(R,P),seguro(P). 4/31
  • 5. Predicado faixa (range) faixa(A, A, [A]). faixa(A, B, [A|L]) : −A < B, A1 is A + 1, faixa(A1, B, L). Saı́da: [1,2,3,4,5,6,7,8] 5/31
  • 6. Predicado permutacao permutacao([], []). permutacao([H|T], PL) : −permutacao(T, PT), del(H, PL, PT). del(X, [X|L], L). del(X, [Y |L], [Y |L1]) : −del(X, L, L1). 6/31
  • 7. Predicado seguro seguro([]). seguro([Q|R]) : −seguro(R), naoAtaca(Q, R, 1). naoAtaca(,[],) . naoAtaca(Y , [Y 1|Ylist], Xdist) : −Y 1 − Y 6= Xdist, Y − Y 1 6= Xdist, Dist1 is Xdist + 1, naoAtaca(Y , Ylist, Dist1). 7/31
  • 9. Programa Completo 1.faixa(A, A, [A]). 2.faixa(A, B, [A|L]) : −A < B, A1isA + 1, faixa(A1, B, L). 3.permutacao([], []). 4.permutacao([H|T], PL) : −permutacao(T, PT), del(H, PL, PT). 5.del(X, [X|L], L). 6.del(X, [Y |L], [Y |L1]) : −del(X, L, L1). 7.seguro([]). 8.seguro([Q|R]) : −seguro(R), naoAtaca(Q, R, 1). 9.naoAtaca(,[],) . 10.naoAtaca(Y , [Y 1|Ylist], Xdist) : −Y 1 − Y 6= Xdist, Y − Y 1 6= Xdist, Dist1isXdist + 1, naoAtaca(Y , Ylist, Dist1). 11.rainhas(N, Qs) : −faixa(1, N, Ns), permutacao(Ns, Qs), seguro(Qs). 9/31
  • 10. Sistemas Especialistas o conjunto de fatos e regras do programa formam uma base de conhecimento advinda de um especialista em um certo domı́nio de conhecimento. A possibilidade de criar queries diferenciadas e muitas vezes nem imaginadas pelo programador tornam o sistema mais parecido com uma ”inteligência artificial”do que sistemas escritos em linguagens convencionais. 10/31
  • 11. Sistema Especialista em Análise de Crédito Ben-David, A. and Sterling, 1., A Prototype Expert System for Credit Evaluation, in Artificial Intelligence in Economics and Management, L. F. Pau (ed.), pp. 1 2 1 -1 28, North-Holland, Amsterdam, 1986. 11/31
  • 12. Sistema Especialista em Análise de Crédito - Entrada credit(Client,Answer) :- ok profile(Client), collateral rating(Client,CollateralRating), financial rating(Client,FinancialRating), bank yield(Client,Yield), evaluate(profile(CollateralRating,FinancialRating,Yield),Answer), !. 12/31
  • 13. Collateral = Garantias Garantias de Primeira Classe Depósitos em moeda corrente em bancos locais ou estrangeiros. Garantias de Segunda Classe Ações. illı́quido Ativos de hipoteca (mortgage) não lı́quido ou ilı́quido (illiquid). 13/31
  • 14. Classificação Financeira = Finantial Rating Patrimônio lı́quido por ativos do cliente e seu lucro bruto atual das vendas ou seja, os rendimentos do cliente. Também é considerado o endividamento do cliente, principalmente a dı́vida de curto prazo. 14/31
  • 15. Ganho do Banco = Bank Yield Todos esses fatores são analisados em formas qualitativas. 15/31
  • 17. —Regras em palavras ”Se as garantias do cliente são excelentes, sua razão financeira (ganhos/gastos) são bons e o rendimento previsto para o banco é pelo menos razoável o empréstimo é garantido.”1 ”Se as garantias e razão financeira são boas e o rendimento esperado é razoável, consultar superior.” ”Se as garantias não são mais que moderadas e o financeiro é médio, recusar o crédito.”2 1 Nenhum banqueiro fica rico dando dinheiro. 2 O Cliente é enxotado. 17/31
  • 18. Regras - Formal rule([condition(collateral,’>=’,excellent),condition(finances,’>=’,good), condition(yield,’>=’,reasonable)],give credit). rule([condition(collateral,’=’,good),condition(finances,’=’,good), condition(yield,’>=’,reasonable)],consult superior). rule([condition(collateral,’=<’,moderate),condition(finances,’=<’, medium)],refuse credit). 18/31
  • 19. Dados para teste. Cliente que teve o seu crédito aprovado. bank yield(client1, excellent ). requested credit(client1, 50000). amount(local currency deposits, client1, 30000). amount(foreign currency deposits, client1, 20000). amount(bank guarantees,client1, 3000). amount(negotiate instruments, client1, 5000). amount(stocks, client1, 9000). amount(mortgage, client1, 12000). amount(documents, client1, 14000). value(net worth per assets, client1, 40) . value(last year sales growth, client1, 20) . value(gross profits on sales, client1, 45) . value(short term debt per annual sales, client1, 9) . ok profile(client1). 19/31
  • 20. Módulo de Classificação Colateral collateral rating(Client,Rating) :- collateral profile(Client,FirstClass,SecondClass,Illiquid), collateral evaluation(FirstClass,SecondClass,Illiquid,Rating). collateral profile(Client,FirstClass,SecondClass,Illiquid) :- requested credit(Client,Credit), collateral percent(first class,Client,Credit,FirstClass), collateral percent(second class,Client,Credit,SecondClass), collateral percent(Illiquid,Client,Credit,Illiquid). 20/31
  • 21. Módulo de Classificação Collateral (Garantias) collateral percent(Type,Client,Total,Value) :- findall(X,(collateral(Collateral,Type), amount(Collateral,Client,X)),Xs), sumlist(Xs,Sum), Value is Sum ∗ 100/Total. 21/31
  • 22. Regras de Avaliação collateral evaluation(FirstClass,SecondClass,Illiquid,excellent) :- FirstClass >= 100. collateral evaluation(FirstClass,SecondClass,Illiquid,excellent) :- FirstClass > 70, FirstClass + SecondClass >= 100. collateral evaluation(FirstClass,SecondClass,Illiquid,good) :- FirstClass + SecondClass > 60,FirstClass + SecondClass < 70, FirstClass + SecondClass + Illiquid >= 100. 22/31
  • 23. Dados Bancários (fatos) collateral(local currency deposits,first class). collateral(foreign currency deposits,first class). collateral(negotiate instruments,second class). collateral(mortgage,illiquid). 23/31
  • 24. Classificação Financeira financial rating(Client,Rating) :- financial factors(Factors), score(Factors,Client,0,Score), calibrate(Score,Rating). 24/31
  • 25. Regras de Avaliação Financeira calibrate(Score,bad) :- Score =< -500. calibrate(Score,medium) :- -500 < Score, Score < 150. calibrate(Score,good) :- 150 =< Score, Score < 1000. calibrate(Score,excellent) :- Score >= 1000. 25/31
  • 26. Fatores de Pesos financial factors([(net worth per assets,5), (last year sales growth,1), (gross profits on sales,5), (short term debt per annual sales,2) ]). score([(Factor,Weight)—Factors],Client,Acc,Score) :- value(Factor,Client,Value), Acc1 is Acc + Weight*Value, score(Factors,Client,Acc1,Score). score([],Client,Score,Score). 26/31
  • 27. Avaliação Final evaluate(Profile,Answer) :- rule(Conditions,Answer), verify(Conditions,Profile). verify([condition(Type,Test,Rating)—Conditions],Profile) :- scale(Type,Scale), select value(Type,Profile,Fact), compare(Test,Scale,Fact,Rating), verify(Conditions,Profile). verify([],Profile). 27/31
  • 28. Avaliação Final compare(’=’,Scale,Rating,Rating). compare(’>’,Scale,Rating1,Rating2) :- precedes(Scale,Rating1,Rating2). compare(’>=’,Scale,Rating1,Rating2) :- precedes(Scale,Rating1,Rating2) ; Rating1 = Rating2. compare(’<’,Scale,Rating1,Rating2) :- precedes(Scale,Rating2,Rating1). compare(’=<’,Scale,Rating1,Rating2) :- precedes(Scale,Rating2,Rating1) ; Rating1 = Rating2. 28/31
  • 29. Avaliação Final precedes([R1|Rs],R1,R2). precedes([R|Rs],R1,R2) :- R 6= R2, precedes(Rs,R1,R2). select value(collateral,profile(C,F,Y),C). select value(finances,profile(C,F,Y),F). select value(yield,profile(C,F,Y),Y). 29/31
  • 30. Utilitários sumlist(Is,Sum) :- sumlist(Is,0,Sum). sumlist([I—Is],Temp,Sum) :- Temp1 is Temp + I, sumlist(Is,Temp1,Sum). sumlist([],Sum,Sum). 30/31