(define (domain mealPlanningPantry) (:requirements :negative-preconditions :conditional-effects :equality :typing :fluents :durative-actions :derived-predicates :disjunctive-preconditions :timed-initial-literals ;; :negative-preconditions :conditional-effects :equality :typing ;; :fluents :durative-actions :disjunctive-preconditions ) (:types agent instance product supplier type storageLocation unit - object ) (:predicates (instanceFn ?product - product ?instance - instance) (consumed ?instance - instance) (notConsumed ?instance - instance) (consumedByAgent ?instance - instance ?agent - agent) (isReplete ?agent - agent) (storageLocation ?instance - instance ?storageLocation - storageLocation) (owns_is ?instance - instance ?supplier - supplier) (owns_ia ?instance - instance ?agent - agent) ;; (atLocation_asu ?agent - agent - ?supplier - supplier) ;; (atLocation_ast ?agent - agent - ?storageLocation - storageLocation) ) (:functions (nfact ?type - type ?unit - unit ?product - product) (intake ?type - type ?unit - unit ?agent - agent) (costs ?product - product ?supplier - supplier) (funds ?agent - agent) (actions) ) ;; DURATIVE ACTIONS (:durative-action purchase :parameters (?agent - agent ?product - product ?instance - instance ?supplier - supplier) :duration (= ?duration 0.1) :condition (and (at start (owns_is ?instance ?supplier)) (at start (not (owns_ia ?instance ?agent))) (at start (instanceFn ?product ?instance)) ) :effect (and (at end (not (owns_is ?instance ?supplier))) (at end (owns_ia ?instance ?agent)) (at end (decrease (funds ?agent) (costs ?product ?supplier))) ) ) (:durative-action consume :parameters (?agent - agent ?product - product ?instance - instance ?supplier - supplier) :duration (= ?duration 0.1) :condition (and ;; (at start (not (isReplete ?agent))) (at start (owns_ia ?instance ?agent)) (at start (notConsumed ?instance)) (at start (instanceFn ?product ?instance)) ) :effect (and (at end (consumed ?instance)) (at end (not (notConsumed ?instance))) (at end (consumedByAgent ?instance ?agent)) (at end (increase (intake total_fat grams ?agent) (nfact total_fat grams ?product))) (at end (increase (intake saturated_fat grams ?agent) (nfact saturated_fat grams ?product))) (at end (increase (intake cholesterol milligrams ?agent) (nfact cholesterol milligrams ?product))) (at end (increase (intake sodium milligrams ?agent) (nfact sodium milligrams ?product))) (at end (increase (intake total_carbohydrate grams ?agent) (nfact total_carbohydrate grams ?product))) (at end (increase (intake dietary_fiber grams ?agent) (nfact dietary_fiber grams ?product))) (at end (increase (intake calories calories_u ?agent) (nfact calories calories_u ?product))) (at end (assign (actions) (+ (actions) 1))) ) ) (:durative-action replete :parameters (?agent - agent) :duration (= ?duration 0.1) :condition (and ;; daily values mode ;; <= fat 65g (at end (<= (intake total_fat grams ?agent) 65.0)) ;; <= saturated fat 20g (at end (<= (intake saturated_fat grams ?agent) 20.0)) ;; <= cholesterol 300mg (at end (<= (intake cholesterol milligrams ?agent) 300.0)) ;; <= sodium 2400mg (at end (<= (intake sodium milligrams ?agent) 2400.0)) ;; <= carboydrate 300g (at end (<= (intake total_carbohydrate grams ?agent) 300.0)) ;; >= dietary fiber 25g (at end (>= (intake dietary_fiber grams ?agent) 25.0)) (at start (>= (intake calories calories_u ?agent) 1850.0)) (at end (<= (intake calories calories_u ?agent) 2150.0)) ;; survival mode ;; savings mode ;; ;; health mode ;; (at start (>= (intake calories calories_u ?agent) 1500.0)) ;; (at end (<= (intake calories calories_u ?agent) 1900.0)) ;; (at end (<= (intake sodium milligrams ?agent) 2400.0)) ;; (at end (>= (funds ?agent) 0.0)) ) :effect (and (at end (isReplete ?agent)) ) ) )