Posted by : masterdark456
miércoles, 11 de septiembre de 2019
% adaptado de Bratko, I. (1986) "Prolog: Programming for Artificial Intelligene". Addison-Wesley. % estado inicial: el mono está en la puerta, % Mono está en el piso, % Box está en la ventana, % El mono no tiene plátano. % % estructura de prólogo: structName (val1, val2, ...) % de estado (ubicación del mono en la habitación, mono en la caja / en el piso, ubicación de la caja, tiene / no tiene banana) % acciones legales do (estado (medio, bandeja de entrada, medio, no tiene),% agarrar plátano agarrar, estado (medio, onbox, medio, has)). do (estado (L, en el piso, L, plátano),% cuadro de ascenso subida, estado (L, onbox, L, Banana)). do (estado (L1, onfloor, L1, Banana),% cuadro de inserción de L1 a L2 empujar (L1, L2), estado (L2, onfloor, L2, Banana)). do (estado (L1, en el piso, caja, plátano),% de caminata de L1 a L2 caminar (L1, L2), estado (L2, piso, caja, plátano)). % canget (Estado): el mono puede obtener plátano en estado canget (estado (_, _, _, has)). % Mono ya lo tiene, estado objetivo canget (State1): -% no estado de objetivo, hacer un trabajo para conseguirlo hacer (Estado1, Acción, Estado2),% hacer algo (agarrar, trepar, empujar, caminar) canget (Estado2). % canget from State2 % obtener plan = lista de acciones canget (estado (_, _, _, has), []). % Mono ya lo tiene, estado objetivo canget (State1, Plan): -% no estado de objetivo, hacer un trabajo para conseguirlo hacer (Estado1, Acción, Estado2),% hacer algo (agarrar, trepar, empujar, caminar) canget (State2, PartialPlan),% canget from State2 agregar (Acción, Plan parcial, Plan). % agregar acción al plan agregar (X, L, [X | L]). %? - canget (estado (atdoor, onfloor, atwindow, hasnot), Plan). % Plan = [caminar (puerta, ventana), empujar (ventana, centro), subir, agarrar] % Si %? - canget (estado (atwindow, onbox, atwindow, hasnot), Plan). % No %? - canget (estado (Monkey, onfloor, atwindow, hasnot), Plan). % Monkey = atwindow % Plan = [empujar (en la ventana, centro), subir, agarrar] % Si