Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :- consult(mondo_aspirapolvere).
- :- consult(pianificatore_aspirapolvere).
- :- consult('rrs/decisore_ci').
- :- consult(utilities).
- :- multifile([type/1, pred/1, local_pred/1, open_pred/1, skipped/1, user_unit/1]).
- :- maplist(writeln,
- ['***** Aspirapolvere con conoscenza completa *****',
- 'USARE:',
- '********************************************************']).
- user_unit(aspirapolvere).
- % unitΓ che governa la "vita" dell'aspirapolvere usando
- % l'RRS decisore (in 'rrs/decisore.pl').
- % Usa (importa) i tipi e i predicati definiti in mondo_aspirapolvere
- %
- % import_type(mondo_aspirapolvere:action).
- % action, le azioni del mondo aspirapolvere+appartamento da pulire
- % import_type(mondo_aspirapolvere:luogo).
- % i luoghi, stanze e balcone
- % import_pred(mondo_aspirapolvere:sporco(luogo,number)).
- % lo sporco nei luaoghi
- % import_pred(mondo_aspirapolvere:esecuzione(action)).
- % il mondo delle stanze da puire ed esecuzione
- % effettiva delle azioni dell'agente nel mondo
- %
- % Usa il predicato
- % piano(decisione_complessa, list(action), number)).
- % di pianificatore_aspirapolvere
- start :- decisore(attesa).
- type([attesa, pulizia]:state).
- % chiudo il tipo state; l'aspirapolvere attende di essere risvegliato
- % in stato attesa ed procede a far pulizia nello stato pulizia;
- % quando non ci sono stanze sporche torna in attesa
- type([esegui_pulizia]:decisione_complessa).
- % chiudo decisione_compessa con l'unica decisione esegui_pulizia
- % (pulire tutte le stanze e svuotare tutto lo sporco)
- type([avvio_pulizia]:event).
- % evento scatenato dal calendario delle pulizie
- local_pred(event(event)).
- % event(E) : Γ¨ avvenuto E
- % MODO: predicato che resta in attesa di eventi
- % implementato con readln
- decidi(riparti, esegui_pulizia) :- !.
- decidi(attesa, do([sveglia])) :- !,
- event(avvio_pulizia).
- decidi(pulizia, do([dormi])) :-
- not((sporco(_,Q), Q>0)), !.
- decidi(pulizia, esegui_pulizia) :- !.
- decidi(interr(_, _, _, _), va_a_versare) :- !.
- decidi(D,_) :-
- writeln("??????????-----":D), fail.
- pianifica(esegui_pulizia, _, Plan, Time) :-
- piano(esegui_pulizia, Plan, Time).
- tratta_decisione_impossibile(_,_,_) :-
- throw('Quacosa non va, non sono previste decisioni impossibili').
- do_action(sveglia,attesa,pulizia) :-
- esecuzione(sveglia).
- do_action(dormi, pulizia, attesa) :-
- esecuzione(dormi).
- do_action(va(S), pulizia, pulizia) :-
- esecuzione(va(S)).
- do_action(versa_sporco, pulizia, pulizia) :-
- esecuzione(versa_sporco).
- do_action(pulisci(Q), pulizia, pulizia) :-
- esecuzione(pulisci(Q)).
- do_action(va_a_versare, _, riparti) :-
- esecuzione(va_a_versare).
- event(avvio_pulizia) :-
- write('\n************* EVENTO avvio pulizia : '),
- read_command.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement