Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
:-discontiguous culture/1,region/1, type_sol/1, date_semence/1, qualite_sol/1, presence_eau/1, pente/1, vent/1, altitude/1, ombrage/1, eclairage/1, terrain/1, province/2, periode/2, typesol/2, qualitesol/2, presenceeau/2, eclair/2, ombre/2, qualitevent/2, niveaupente/2. %printresul. :-dynamic culture_weigth/2, db_connexion/1, caracteristique_weigth/2. main :- identify. identify:- retractall(known(_,_,_)), % clear stored information retractall(culture_weigth(_,_)), forall(member(Culture,[pineapple,cacao,carrot,cabbage,ginger,bean,plantain,coffee,sweetpotatoes]),asserta(culture_weigth(Culture,0))), %db_delete(F), %db_connexion(root), %db_registration(tomate,90), culture, %write(X), %pengine_output('La culture approprie est '), %pengine_output(X), %identify2(A), %findall(Poids,culture_weigth(Culture,Poids),L), %insertion(Y,L,R), printresul. %printresul([ananas,cacaoyer,carotte,chou,gingembre,haricot,plantain]). %db_deconnexion. /*insertion(X,[],[X]). insertion(X,[Y|L],[X,Y|L]) :- X =<Y. insertion(X,[Y|L],[Y|L1]) :- X > Y, insertion(X,L,L1)*/ /*identify:- forall(culture_weigth(Culture,Poids), printresul(Culture,Poids)), pengine_output('Impossible d\'identifier la culture').*/ %============================================================================================== %printresul([Item | Rest]):- printresul:- order_by([desc(Poids)], culture_weigth(Item,Poids)), (Poids>=72 -> pengine_output(Item), pengine_output(Poids)). %printresul(Rest); %printresul(Rest)). %=========================================== POIDS DES DIFFERENTES CONTRAINTES ====================================== caracteristique_weigth(periode,20.85). caracteristique_weigth(region,20.85). caracteristique_weigth(eclairage,6.76). caracteristique_weigth(ombrage,6.76). caracteristique_weigth(eau,10.53). caracteristique_weigth(altitude,2.51). caracteristique_weigth(sol,13.36). caracteristique_weigth(qualite,13.36). caracteristique_weigth(vent,2.51). caracteristique_weigth(pente,2.51). %================================================================================================================== culture:- region(cul), date_semence(cul), type_sol(cul), qualite_sol(cul), presence_eau(cul), ombrage(cul), eclairage(cul), vent(cul), pente(cul). date_semence(cul):- date_semis(X), member(X, [janvier,fevrier,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,decembre]). region(cul):- regions(X), member(X, [adamaoua,est,extreme-nord,centre,littoral,nord,nord-ouest,ouest,sud,sud-ouest]). type_sol(cul):- type_sols(X), member(X,[sablonneux, argileux, limoneux, calcaire, humifaire, sablo-argileux, sablo-limoneux]). qualite_sol(cul):- qualite_sols(X), member(X,[noir, leger, riche_en_matiere_organique]). presence_eau(cul):- eaux(X), member(X, [tres_peu, peu, suffisamment, tres_suffisamment]). eclairage(cul):- eclairages(X), member(X, [jamais,certaines_heures_de_la_journee, toute_la_journee]). ombrage(cul):- ombrages(X), member(X, [jamais, certaines_heures_de_la_journee, toute_la_journee]). vent(cul):- vents(X), member(X, [faible,moyen,eleve]). pente(cul):- pentes(X), member(X, [plat, faible, moyenne, forte]). %========================================================================================================================= date_semence(pineapple):- date_semis(X), member(X, [janvier,fevrier,mars,decembre]). periode(pineapple,decembre). periode(pineapple,janvier). periode(pineapple,fevrier). periode(pineapple,mars). date_semence(plantain):- date_semis(X), member(X, [janvier,fevrier,juillet,aout,septembre,octobre]). periode(plantain,janvier). periode(plantain,fevrier). periode(plantain,juillet). periode(plantain,aout). periode(plantain,septembre). periode(plantain,octobre). region(pineapple):- regions(X), member(X, [centre,littoral,sud-ouest]). province(pineapple,centre). province(pineapple,littoral). province(pineapple,sud-ouest). type_sol(pineapple):- type_sols(X), member(X,[sablonneux, argileux, limoneux, calcaire, humifaire, sablo-argileux, sablo-limoneux]). typesol(pineapple,sablonneux). typesol(pineapple,argileux). typesol(pineapple,limoneux). typesol(pineapple,calcaire). typesol(pineapple,humifaire). typesol(pineapple,sablo-argileux). typesol(pineapple,sablo-limoneux). region(plantain):- regions(X), member(X, [centre,ouest,sud-ouest,sud]). province(plantain,sud-ouest). province(plantain,centre). province(plantain,ouest). province(plantain,sud). type_sol(plantain):- type_sols(X), member(X,[sablonneux, argileux, sablo-argileux]). typesol(plantain,sablonneux). typesol(plantain,argileux). typesol(plantain,sablo-argileux). qualite_sol(plantain):- qualite_sols(X), member(X,[riche_en_matiere_organique]). qualitesol(plantain,riche_en_matiere_organique). presence_eau(plantain):- eaux(X), member(X, [tres_peu, peu, suffisamment, tres_suffisamment]). presenceeau(plantain,peu). presenceeau(plantain,suffisamment). eclairage(plantain):- eclairages(X), member(X,[toute_la_journee]). eclair(plantain,toute_la_journee). ombrage(plantain):- ombrages(X), member(X,[jamais]). ombre(plantain,jamais). vent(plantain):- vents(X), member(X,[faible]). qualitevent(plantain,faible). pente(plantain):- pentes(X), member(X, [plat, faible]). niveaupente(plantain,plat). niveaupente(plantain,faible). qualite_sol(pineapple):- qualite_sols(X), member(X,[noir, leger, riche_en_matiere_organique]). qualitesol(pineapple,noir). qualitesol(pineapple,leger). qualitesol(pineapple,riche_en_matiere_organique). presence_eau(pineapple):- eaux(X), member(X, [tres_peu, peu, suffisamment, tres_suffisamment]). presenceeau(pineapple,tres_peu). presenceeau(pineapple,peu). presenceeau(pineapple,suffisamment). presenceeau(pineapple,tres_suffisamment). eclairage(pineapple):- eclairages(X), member(X,[certaines_heures_de_la_journee, toute_la_journee]). eclair(pineapple,certaines_heures_de_la_journee). eclair(pineapple,toute_la_journee). ombrage(pineapple):- ombrages(X), member(X,[certaines_heures_de_la_journee, toute_la_journee]). ombre(pineapple,certaines_heures_de_la_journee). ombre(pineapple,toute_la_journee). vent(pineapple):- vents(X), member(X,[faible, moyen]). qualitevent(pineapple,faible). qualitevent(pineapple,moyen). pente(pineapple):- pentes(X), member(X, [plat, faible]). niveaupente(pineapple,plat). niveaupente(pineapple,faible). %==============================================================CACAOYER======================================================================= date_semence(cacao):- date_semis(X), member(X, [avril,mai,juin]). periode(cacao,avril). periode(cacao,mai). periode(cacao,juin). region(cacao):- regions(X), member(X, [centre,littoral,sud-ouest,sud]). province(cacao,centre). province(cacao,littoral). province(cacao,sud). province(cacao,sud-ouest). type_sol(cacao):- type_sols(X), member(X,[sablonneux, argileux, limoneux, calcaire, humifaire, sablo-argileux, sablo-limoneux]). typesol(cacao,sablonneux). typesol(cacao,argileux). typesol(cacao,limoneux). typesol(cacao,calcaire). typesol(cacao,humifaire). typesol(cacao,sablo-argileux). typesol(cacao,sablo-limoneux). qualite_sol(cacao):- qualite_sols(X), member(X,[riche_en_matiere_organique]). qualitesol(cacao,riche_en_matiere_organique). presence_eau(cacao):- eaux(X), member(X, [tres_peu, peu, suffisamment, tres_suffisamment]). presenceeau(cacao,tres_peu). presenceeau(cacao,peu). presenceeau(cacao,suffisamment). presenceeau(cacao,tres_suffisamment). eclairage(cacao):- eclairages(X), member(X, [jamais]). eclair(cacao,jamais). ombrage(cacao):- ombrages(X), member(X, [toute_la_journee]). ombre(cacao,toute_la_journee). vent(cacao):- vents(X), member(X, [faible,moyen]). qualitevent(cacao,faible). qualitevent(cacao,moyen). pente(cacao):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(cacao,plat). niveaupente(cacao,faible). niveaupente(cacao,moyenne). niveaupente(cacao,forte). %==============================================================CAFE======================================================================= date_semence(coffee):- date_semis(X), member(X, [avril,mai]). periode(coffee,avril). periode(coffee,mai). region(coffee):- regions(X), member(X, [littoral,ouest]). province(coffee,ouest). province(coffee,littoral). type_sol(coffee):- type_sols(X), member(X,[argileux]). typesol(coffee,argileux). qualite_sol(coffee):- qualite_sols(X), member(X,[riche_en_matiere_organique]). qualitesol(coffee,riche_en_matiere_organique). presence_eau(coffee):- eaux(X), member(X, [suffisamment, tres_suffisamment]). presenceeau(cacao,suffisamment). presenceeau(cacao,tres_suffisamment). eclairage(coffee):- eclairages(X), member(X, [certaines_heures_de_la_journee,toute_la_journee]). eclair(coffee,certaines_heures_de_la_journee). eclair(coffee,toute_la_journee). ombrage(coffee):- ombrages(X), member(X, [certaines_heures_de_la_journee, toute_la_journee]). ombre(coffee,certaines_heures_de_la_journee). ombre(coffee,toute_la_journee). vent(coffee):- vents(X), member(X, [faible,moyen]). qualitevent(coffee,faible). qualitevent(coffee,moyen). qualitevent(coffee,eleve). pente(coffee):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(coffee,plat). niveaupente(coffee,faible). niveaupente(coffee,moyenne). niveaupente(coffee,forte). %============================================================== BC CAROTTE ========================================================= date_semence(carrot):- date_semis(X), member(X, [janvier,fevrier,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,decembre]). periode(carrot,janvier). periode(carrot,fevrier). periode(carrot,mars). periode(carrot,avril). periode(carrot,mai). periode(carrot,juin). periode(carrot,juillet). periode(carrot,aout). periode(carrot,septembre). periode(carrot,octobre). periode(carrot,novembre). periode(carrot,decembre). region(carrot):- regions(X), member(X, [adamaoua,est,extreme-nord,centre,littoral,nord,nord-ouest,ouest,sud,sud-ouest]). province(carrot,adamaoua). province(carrot,est). province(carrot,extreme-nord). province(carrot,centre). province(carrot,littoral). province(carrot,nord). province(carrot,nord-ouest). province(carrot,ouest). province(carrot,sud). province(carrot,sud-ouest). type_sol(carrot):- type_sols(X), member(X,[sablonneux,sablo-limoneux]). typesol(carrot,sablonneux). typesol(carrot,sablo-limoneux). qualite_sol(carrot):- qualite_sols(X), member(X,[riche_en_matiere_organique]). qualitesol(carrot,riche_en_matiere_organique). presence_eau(carrot):- eaux(X), member(X, [suffisamment, tres_suffisamment]). presenceeau(carrot,suffisamment). presenceeau(carrot,tres_suffisamment). eclairage(carrot):- eclairages(X), member(X, [jamais,certaines_heures_de_la_journee, toute_la_journee]). eclair(carrot,jamais). eclair(carrot,certaines_heures_de_la_journee). eclair(carrot,toute_la_journee). ombrage(carrot):- ombrages(X), member(X, [jamais, certaines_heures_de_la_journee, toute_la_journee]). ombre(carrot,jamais). ombre(carrot,certaines_heures_de_la_journee). ombre(carrot,toute_la_journee). vent(carrot):- vents(X), member(X, [faible,moyen,eleve]). qualitevent(carrot,faible). qualitevent(carrot,moyen). qualitevent(carrot,eleve). pente(carrot):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(carrot,plat). niveaupente(carrot,faible). niveaupente(carrot,moyenne). niveaupente(carrot,forte). %============================================================== BC % ========================================================= date_semence(cabbage):- date_semis(X), member(X, [janvier,fevrier,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,decembre]). periode(cabbage,avril). periode(cabbage,mai). periode(cabbage,juin). periode(cabbage,juillet). periode(cabbage,aout). periode(cabbage,septembre). region(cabbage):- regions(X), member(X, [adamaoua,est,extreme-nord,centre,littoral,nord,nord-ouest,ouest,sud,sud-ouest]). province(cabbage,adamaoua). province(cabbage,est). province(cabbage,extreme-nord). province(cabbage,centre). province(cabbage,littoral). province(cabbage,nord). province(cabbage,nord-ouest). province(cabbage,ouest). province(cabbage,sud). province(cabbage,sud-ouest). type_sol(cabbage):- type_sols(X), member(X,[limoneux]). typesol(cabbage,limoneux). qualite_sol(cabbage):- qualite_sols(X), member(X,[noir, leger, riche_en_matiere_organique]). qualitesol(cabbage,noir). qualitesol(cabbage,leger). qualitesol(cabbage,riche_en_matiere_organique). presence_eau(cabbage):- eaux(X), member(X, [suffisamment, tres_suffisamment]). presenceeau(cabbage,suffisamment). presenceeau(cabbage,tres_suffisamment). eclairage(cabbage):- eclairages(X), member(X, [jamais,certaines_heures_de_la_journee]). eclair(cabbage,jamais). eclair(cabbage,certaines_heures_de_la_journee). ombrage(cabbage):- ombrages(X), member(X, [certaines_heures_de_la_journee, toute_la_journee]). ombre(cabbage,certaines_heures_de_la_journee). ombre(cabbage,toute_la_journee). vent(cabbage):- vents(X), member(X, [faible,moyen,eleve]). qualitevent(cabbage,faible). qualitevent(cabbage,moyen). qualitevent(cabbage,eleve). pente(cabbage):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(cabbage,plat). niveaupente(cabbage,faible). niveaupente(cabbage,moyenne). niveaupente(cabbage,forte). %============================================================== BC GINGEMBRE ========================================================= date_semence(ginger):- date_semis(X), member(X, [mars,avril]). periode(ginger,mars). periode(ginger,avril). region(ginger):- regions(X), member(X, [adamaoua,est,extreme-nord,centre,littoral,nord,nord-ouest,ouest,sud,sud-ouest]). province(ginger,adamaoua). province(ginger,est). province(ginger,extreme-nord). province(ginger,centre). province(ginger,littoral). province(ginger,nord). province(ginger,nord-ouest). province(ginger,ouest). province(ginger,sud). province(ginger,sud-ouest). type_sol(ginger):- type_sols(X), member(X,[sablonneux,sablo-limoneux]). typesol(ginger,sablonneux). typesol(ginger,sablo-limoneux). qualite_sol(ginger):- qualite_sols(X), member(X,[leger]). qualitesol(ginger,leger). presence_eau(ginger):- eaux(X), member(X, [suffisamment, tres_suffisamment]). presenceeau(ginger,suffisamment). presenceeau(ginger,tres_suffisamment). eclairage(ginger):- eclairages(X), member(X, [certaines_heures_de_la_journee, toute_la_journee]). eclair(ginger,certaines_heures_de_la_journee). eclair(ginger,toute_la_journee). ombrage(ginger):- ombrages(X), member(X, [jamais, certaines_heures_de_la_journee, toute_la_journee]). ombre(ginger,certaines_heures_de_la_journee). ombre(ginger,toute_la_journee). vent(ginger):- vents(X), member(X, [faible,moyen]). qualitevent(ginger,faible). qualitevent(ginger,moyen). pente(ginger):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(ginger,plat). niveaupente(ginger,faible). niveaupente(ginger,moyenne). niveaupente(ginger,forte). %============================================================== BC HARICOT ========================================================= date_semence(bean):- date_semis(X), member(X, [mars,aout,septembre]). periode(bean,mars). periode(bean,aout). periode(bean,septembre). region(bean):- regions(X), member(X, [est,centre,nord-ouest,ouest,adamaoua]). province(bean,est). province(bean,centre). province(bean,nord-ouest). province(bean,ouest). province(bean,adamaoua). type_sol(bean):- type_sols(X), member(X,[sablonneux, argileux, limoneux, calcaire, humifaire, sablo-argileux]). typesol(bean,sablonneux). typesol(bean,argileux). typesol(bean,limoneux). typesol(bean,calcaire). typesol(bean,humifaire). typesol(bean,sablo-argileux). qualite_sol(bean):- qualite_sols(X), member(X,[riche_en_matiere_organique]). qualitesol(bean,riche_en_matiere_organique). presence_eau(bean):- eaux(X), member(X, [tres_peu, peu, suffisamment, tres_suffisamment]). presenceeau(bean,suffisamment). presenceeau(bean,tres_suffisamment). eclairage(bean):- eclairages(X), member(X,[certaines_heures_de_la_journee, toute_la_journee]). eclair(bean,certaines_heures_de_la_journee). eclair(bean,toute_la_journee). ombrage(bean):- ombrages(X), member(X, [jamais, certaines_heures_de_la_journee]). ombre(bean,jamais). ombre(bean,certaines_heures_de_la_journee). vent(bean):- vents(X), member(X, [faible,moyen]). qualitevent(bean,faible). qualitevent(bean,moyen). pente(bean):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(bean,plat). niveaupente(bean,faible). niveaupente(bean,moyenne). niveaupente(bean,forte). %============================================================== BC PATATE ========================================================= date_semence(sweetpotatoes):- date_semis(X), member(X, [avril,mai,juin,juillet,septembre,octobre]). periode(sweetpotatoes,avril). periode(sweetpotatoes,mai). periode(sweetpotatoes,juin). periode(sweetpotatoes,juillet). periode(sweetpotatoes,septembre). periode(sweetpotatoes,octobre). region(sweetpotatoes):- regions(X), member(X, [adamaoua,est,extreme-nord,centre,littoral,nord,nord-ouest,ouest,sud,sud-ouest]). province(sweetpotatoes,adamaoua). province(sweetpotatoes,est). province(sweetpotatoes,extreme-nord). province(sweetpotatoes,centre). province(sweetpotatoes,littoral). province(sweetpotatoes,nord). province(sweetpotatoes,nord-ouest). province(sweetpotatoes,ouest). province(sweetpotatoes,sud). province(sweetpotatoes,sud-ouest). type_sol(sweetpotatoes):- type_sols(X), member(X,[sablonneux, argileux, limoneux, calcaire, humifaire, sablo-argileux]). typesol(sweetpotatoes,sablonneux). typesol(sweetpotatoes,argileux). typesol(sweetpotatoes,limoneux). typesol(sweetpotatoes,calcaire). typesol(sweetpotatoes,humifaire). qualite_sol(sweetpotatoes):- qualite_sols(X), member(X,[riche_en_matiere_organique]). qualitesol(sweetpotatoes,riche_en_matiere_organique). presence_eau(sweetpotatoes):- eaux(X), member(X, [tres_peu, peu]). presenceeau(sweetpotatoes,tres_peu). presenceeau(sweetpotatoes,peu). eclairage(sweetpotatoes):- eclairages(X), member(X,[certaines_heures_de_la_journee, toute_la_journee]). eclair(sweetpotatoes,certaines_heures_de_la_journee). eclair(sweetpotatoes,toute_la_journee). ombrage(sweetpotatoes):- ombrages(X), member(X, [jamais, certaines_heures_de_la_journee]). ombre(sweetpotatoes,jamais). ombre(sweetpotatoes,certaines_heures_de_la_journee). vent(sweetpotatoes):- vents(X), member(X, [faible,moyen,eleve]). qualitevent(sweetpotatoes,faible). qualitevent(sweetpotatoes,moyen). qualitevent(sweetpotatoes,eleve). pente(sweetpotatoes):- pentes(X), member(X, [plat, faible, moyenne, forte]). niveaupente(sweetpotatoes,plat). niveaupente(sweetpotatoes,faible). niveaupente(sweetpotatoes,moyenne). niveaupente(sweetpotatoes,forte). %==================================================================================================================================== date_semis(X):-menuask(periode,X,[janvier,fevrier,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,decembre,vide]). regions(X):-menuask(region,X,[adamaoua,centre,est,extreme-nord,littoral,ouest,nord,nord-ouest,sud,sud-ouest,vide]). type_sols(X):-menuask(sol,X,[argileux,calcaire,humifaire,limoneux,sablonneux,sablo-argileux]). eclairages(X):-menuask(eclairage,X,[jamais, certaines_heures_de_la_journee, toute_la_journee]). ombrages(X):-menuask(ombrage,X,[jamais, certaines_heures_de_la_journee, toute_la_journee]). eaux(X):-menuask(eau,X,[tres_peu, peu, suffisamment, tres_suffisamment]). altitudes(X):-menuask(altitude,X,[basse, moyenne, elevee]). qualite_sols(X):-menuask(qualite,X,[noir, leger, riche_en_matiere_organique]). vents(X):-menuask(vent,X,[faible,moyen,eleve]). pentes(X):-menuask(pente,X, [plat,faible,moyenne,elevee]). menuask(Attribute,AskValue,Menu):- pengine_output(Attribute), %display_menu(Menu), pengine_input('Entrer le numero choisi', Num), pick_menu(Num,AnswerValue,Menu), asserta(known(yes,Attribute,AnswerValue)), pick_caracteristique(Attribute,AnswerValue,Y), updateweigth(Attribute,Y), AskValue = AnswerValue. % succeed or fail based on answer display_menu(Menu):- disp_menu(1,Menu), !. % make sure we fail on backtracking disp_menu(_,[]). disp_menu(N,[Item | Rest]):- % recursively write the head of pengine_format('~w :',N),pengine_format('~w',Item),% the list and disp_menu the tail NN is N + 1, disp_menu(NN,Rest). pick_menu(N,Val,Menu):- integer(N), % make sure they gave a number pic_menu(1,N,Val,Menu), !. % start at one pick_menu(Val,Val,_). % if they didn't enter a number, use % what they entered as the value pic_menu(_,_,none_of_the_above,[]). % if we've exhausted the list pic_menu(N,N, Item, [Item|_]). % the counter matches the number pic_menu(Ctr,N, Val, [_|Rest]):- NextCtr is Ctr + 1, % try the next one pic_menu(NextCtr, N, Val, Rest). pick_caracteristique(Attribute,AnswerValue,Y):- (Attribute = 'region' -> setof(Culture,province(Culture,AnswerValue),Y)); (Attribute = 'periode' -> setof(Culture,periode(Culture,AnswerValue),Y)); (Attribute = 'sol' -> setof(Culture,typesol(Culture,AnswerValue),Y)); (Attribute = 'qualite' -> setof(Culture,qualitesol(Culture,AnswerValue),Y)); (Attribute = 'eau' -> setof(Culture,presenceeau(Culture,AnswerValue),Y)); (Attribute = 'eclairage' -> setof(Culture,eclair(Culture,AnswerValue),Y)); (Attribute = 'ombrage' -> setof(Culture,ombre(Culture,AnswerValue),Y)); (Attribute = 'vent' -> setof(Culture,qualitevent(Culture,AnswerValue),Y)); (Attribute = 'pente' -> setof(Culture,niveaupente(Culture,AnswerValue),Y)). updateweigth(_,[]). %updateweigth(Attribute,[]). updateweigth(Attribute,[Item | Rest]):- forall(member(A, [Item | Rest]), updates(Attribute,A)). updates(Attribute,Item):- call(culture_weigth(Item,Poids)), culture_weigth(Item,Poids), caracteristique_weigth(Attribute,SPoids), Newpoids is Poids + SPoids, retract(culture_weigth(Item,Poids)), asserta(culture_weigth(Item,Newpoids)).