VisiRule are ca principala caracteristica reprezentarea grafica de tip
organigrama a algoritmilor. Prin adoptarea sa putem maximiza eficienta programarii sistemelor de tip expert, stiut fiind ca una dintre metodele predilecte de reprezentare a algoritmilor de decizie este tocmai reprezentarea prin organigrame. Nimic mai simplu si mai direct decat sa trecem direct de la organigrama sursa a algoritmului la o alta organigrama cu rol de implementare. Pe langa inteligenta implicita pe care o inglobeaza un algoritm de tip organigrama, VisiRule este capabil sa creeze sisteme bazate pe cunostinte(knowledge-based systems) si este interactiv, ghidand intr-un mod inteligent proiectarea aplicatiilor. VisiRule opereaza cu un numar redus de blocuri care pot fi configurate si interconectate de catre programator. Cea mai simpla organigrama poate fi obtinuta utilizand urmatoarele blocuri: -START BOX (colorat cu verde) punctul initial al algoritmului; -QUESTION BOX (colorat cu galben) bloc care initiaza un dialog cu utilizatorul; -EXPRESSION BOX (colorat cu alb); -END BOX (colorat cu rosu) punctul final al algoritmului. Prolog este unul dintre limbajele clasice ale Inteligentei artificiale, dedicat dezvoltarii de sisteme de decizie luat eprin calcul propozitional. Versiunea moderna WinProlog se distinge prin compatibilitatea cu toate standardele din componenta sistemului de operarea Windows. Lansarea VisiRule se face fie vizual, fie din fereastra de comenzi WinProlog, dupa indicatiile care insotesc fiecare pachet de programe.
Prezentarea programului in Visirule
Programul facut de mine simuleaza acordarea unui credit la banca. Programul calculeaza acordarea creditului in functie de contractul de munca al solicitantului creditului(norma intreaga, jumate de norma), vechimea acestuia in colaborarea cu banca la care se face cererea de acordare a creditului, in functie de alte credite existente ale solicitantului si rambursarea acestora la timp. In functie de aceste date programul acorda sau respinge cererea de acordare a creditului.
Codul flex al aplicatiei produse de Calculeaza zilele.vsr este urmatorul:
do ensure_loaded( system(vrlib) ) . relation start( Conclusion ) if 'q_Norma intreaga'( Conclusion ) . relation 'q_Norma intreaga'( Conclusion ) if the answer to 'Norma intreaga' is _ and check( 'Norma intreaga', =, da ) and q_Peste3ani( Conclusion ) . relation 'q_Norma intreaga'( Conclusion ) if the answer to 'Norma intreaga' is _ and check( 'Norma intreaga', =, nu ) and q_Peste5ani( Conclusion ) . relation q_Peste3ani( Conclusion ) if the answer to 'Peste3ani' is _ and check( 'Peste3ani', =, da ) and Conclusion = 'Imprumut acordat' . relation q_Peste3ani( Conclusion ) if the answer to 'Peste3ani' is _ and check( 'Peste3ani', =, nu ) and 'q_Imprumut Precedent'( Conclusion ) . relation 'q_Imprumut Precedent'( Conclusion ) if the answer to 'Imprumut Precedent' is _ and check( 'Imprumut Precedent', =, da ) and 'q_Rambursat la timp'( Conclusion ) . relation 'q_Imprumut Precedent'( Conclusion ) if the answer to 'Imprumut Precedent' is _ and check( 'Imprumut Precedent', =, nu ) and Conclusion = 'Imprumut neacordat' . relation 'q_Rambursat la timp'( Conclusion ) if the answer to 'Rambursat la timp' is _ and check( 'Rambursat la timp', =, da ) and Conclusion = 'Imprumut acordat' . relation 'q_Rambursat la timp'( Conclusion ) if the answer to 'Rambursat la timp' is _ and check( 'Rambursat la timp', =, nu ) and
Conclusion = 'Imprumut neacordat'
relation q_Peste5ani( Conclusion ) if
the answer to 'Peste5ani' is _ and check( 'Peste5ani', =, da ) and 'q_Imprumut Precedent'( Conclusion ) . relation q_Peste5ani( Conclusion ) if the answer to 'Peste5ani' is _ and check( 'Peste5ani', =, nu ) and Conclusion = 'Imprumut neacordat' . group group1 da, nu . question 'Norma intreaga' 'Este solicitantul creditului un angajat cu norm ntreag ?' ; choose one of group1 because explanation . question 'Rambursat la timp' 'Si a fost rambursat la timp ?' ; choose one of group1 because explanation . question 'Imprumut Precedent' 'A avut un mprumut anterior ?' ; choose one of group1 because explanation . question 'Peste3ani' 'Lucreaza cu banca de peste 3 ani ?' ; choose one of group1 because explanation . question 'Peste5ani' 'Lucreaza cu banca de peste 5 ani ?' ; choose one of group1 because explanation .