|
| 1 | +(defrule load-domain |
| 2 | + (executive-init) |
| 3 | + (not (domain-loaded)) |
| 4 | +=> |
| 5 | + (parse-pddl-domain (path-resolve "simple-agent/domain.pddl")) |
| 6 | + (assert (domain-loaded)) |
| 7 | +) |
| 8 | + |
| 9 | +(defrule domain-set-sensed-predicates |
| 10 | + " Mark some predicates as sensed predicates. |
| 11 | + That means, the truth value of these predicates can be changed not directly but by some external trigger |
| 12 | + " |
| 13 | + (domain-loaded) |
| 14 | + ?p <- (domain-predicate (name mps-state|zone-content) (sensed FALSE)) |
| 15 | +=> |
| 16 | + (modify ?p (sensed TRUE)) |
| 17 | +) |
| 18 | + |
| 19 | + |
| 20 | +(defrule domain-set-value-predicates |
| 21 | + ?p <- (domain-predicate (name mps-state|zone-content) (value-predicate FALSE)) |
| 22 | +=> |
| 23 | + (modify ?p (value-predicate TRUE)) |
| 24 | +) |
| 25 | + |
| 26 | + |
| 27 | +(defrule domain-nowait-actions |
| 28 | + " Mark some actions that have a sensed effect as non-waiting. That means the effect is applied without sensing for it " |
| 29 | + (domain-loaded) |
| 30 | + ?o <- (domain-operator (name wp-put|prepare-bs|prepare-rs|prepare-ds|prepare-cs|location-unlock) (wait-sensed ~FALSE)) |
| 31 | +=> |
| 32 | + (modify ?o (wait-sensed FALSE)) |
| 33 | +) |
| 34 | + |
| 35 | + |
| 36 | +(defrule domain-exogenous-actions |
| 37 | + "Mark all actions, that model state changes of the machines, as exogenous" |
| 38 | + ?op <- (domain-operator |
| 39 | + (name bs-dispense | cs-mount-cap | cs-retrieve-cap | rs-mount-ring1 | |
| 40 | + rs-mount-ring2 | rs-mount-ring3 | fulfill-order-c0 | fulfill-order-discard | |
| 41 | + fulfill-order-c1 | fulfill-order-c2 | fulfill-order-c3 | ss-retrieve-c0) |
| 42 | + (exogenous FALSE) |
| 43 | + ) |
| 44 | +=> |
| 45 | + (modify ?op (exogenous TRUE)) |
| 46 | +) |
| 47 | + |
| 48 | +(deffunction domain-load-local-facts (?team-color) |
| 49 | +" Initialize facts that are not synced." |
| 50 | + (if (eq ?team-color CYAN) |
| 51 | + then |
| 52 | + (bind ?bs C-BS) |
| 53 | + (bind ?cs1 C-CS1) |
| 54 | + (bind ?cs2 C-CS2) |
| 55 | + (bind ?rs1 C-RS1) |
| 56 | + (bind ?rs2 C-RS2) |
| 57 | + (bind ?ds C-DS) |
| 58 | + (bind ?ss C-SS) |
| 59 | + else |
| 60 | + (bind ?bs M-BS) |
| 61 | + (bind ?cs1 M-CS1) |
| 62 | + (bind ?cs2 M-CS2) |
| 63 | + (bind ?rs1 M-RS1) |
| 64 | + (bind ?rs2 M-RS2) |
| 65 | + (bind ?ds M-DS) |
| 66 | + (bind ?ss M-SS) |
| 67 | + ) |
| 68 | + (assert |
| 69 | + (domain-fact (name at) (param-values robot1 START INPUT)) |
| 70 | + (domain-fact (name at) (param-values robot2 START INPUT)) |
| 71 | + (domain-fact (name at) (param-values robot3 START INPUT)) |
| 72 | + (domain-fact (name mps-team) (param-values ?bs ?team-color)) |
| 73 | + (domain-fact (name can-hold) (param-values robot1)) |
| 74 | + (domain-fact (name can-hold) (param-values robot2)) |
| 75 | + (domain-fact (name can-hold) (param-values robot3)) |
| 76 | + (domain-fact (name mps-team) (param-values ?ds ?team-color)) |
| 77 | + (domain-fact (name mps-team) (param-values ?ss ?team-color)) |
| 78 | + (domain-fact (name mps-team) (param-values ?cs1 ?team-color)) |
| 79 | + (domain-fact (name mps-team) (param-values ?cs2 ?team-color)) |
| 80 | + (domain-fact (name mps-team) (param-values ?rs1 ?team-color)) |
| 81 | + (domain-fact (name mps-team) (param-values ?rs2 ?team-color)) |
| 82 | + |
| 83 | + (domain-fact (name mps-type) (param-values C-BS BS)) |
| 84 | + (domain-fact (name mps-type) (param-values C-DS DS)) |
| 85 | + (domain-fact (name mps-type) (param-values C-SS SS)) |
| 86 | + (domain-fact (name mps-type) (param-values C-CS1 CS)) |
| 87 | + (domain-fact (name mps-type) (param-values C-CS2 CS)) |
| 88 | + (domain-fact (name mps-type) (param-values C-RS1 RS)) |
| 89 | + (domain-fact (name mps-type) (param-values C-RS2 RS)) |
| 90 | + |
| 91 | + (domain-fact (name mps-type) (param-values M-BS BS)) |
| 92 | + (domain-fact (name mps-type) (param-values M-DS DS)) |
| 93 | + (domain-fact (name mps-type) (param-values M-SS SS)) |
| 94 | + (domain-fact (name mps-type) (param-values M-CS1 CS)) |
| 95 | + (domain-fact (name mps-type) (param-values M-CS2 CS)) |
| 96 | + (domain-fact (name mps-type) (param-values M-RS1 RS)) |
| 97 | + (domain-fact (name mps-type) (param-values M-RS2 RS)) |
| 98 | + (domain-fact (name rs-sub) (param-values THREE TWO ONE)) |
| 99 | + (domain-fact (name rs-sub) (param-values THREE ONE TWO)) |
| 100 | + (domain-fact (name rs-sub) (param-values THREE ZERO THREE)) |
| 101 | + (domain-fact (name rs-sub) (param-values TWO TWO ZERO)) |
| 102 | + (domain-fact (name rs-sub) (param-values TWO ONE ONE)) |
| 103 | + (domain-fact (name rs-sub) (param-values TWO ZERO TWO)) |
| 104 | + (domain-fact (name rs-sub) (param-values ONE ONE ZERO)) |
| 105 | + (domain-fact (name rs-sub) (param-values ONE ZERO ONE)) |
| 106 | + (domain-fact (name rs-sub) (param-values ZERO ZERO ZERO)) |
| 107 | + (domain-fact (name rs-inc) (param-values ZERO ONE)) |
| 108 | + (domain-fact (name rs-inc) (param-values ONE TWO)) |
| 109 | + (domain-fact (name rs-inc) (param-values TWO THREE)) |
| 110 | + (domain-fact (name cs-color) (param-values ?cs1 CAP_GREY)) |
| 111 | + (domain-fact (name cs-color) (param-values ?cs2 CAP_BLACK)) |
| 112 | + |
| 113 | + (domain-fact (name mirror-orientation) (param-values 0 180)) |
| 114 | + (domain-fact (name mirror-orientation) (param-values 45 135)) |
| 115 | + (domain-fact (name mirror-orientation) (param-values 90 90)) |
| 116 | + (domain-fact (name mirror-orientation) (param-values 135 45)) |
| 117 | + (domain-fact (name mirror-orientation) (param-values 180 0)) |
| 118 | + (domain-fact (name mirror-orientation) (param-values 225 315)) |
| 119 | + (domain-fact (name mirror-orientation) (param-values 270 270)) |
| 120 | + (domain-fact (name mirror-orientation) (param-values 315 225)) |
| 121 | + |
| 122 | + (domain-object (name CCB1) (type cap-carrier)) |
| 123 | + (domain-object (name CCB2) (type cap-carrier)) |
| 124 | + (domain-object (name CCB3) (type cap-carrier)) |
| 125 | + (domain-object (name CCG1) (type cap-carrier)) |
| 126 | + (domain-object (name CCG2) (type cap-carrier)) |
| 127 | + (domain-object (name CCG3) (type cap-carrier)) |
| 128 | + (domain-object (name ?bs) (type mps)) |
| 129 | + (domain-object (name ?cs1) (type mps)) |
| 130 | + (domain-object (name ?cs2) (type mps)) |
| 131 | + (domain-object (name ?ds) (type mps)) |
| 132 | + (domain-object (name ?rs1) (type mps)) |
| 133 | + (domain-object (name ?rs2) (type mps)) |
| 134 | + (domain-object (name ?ss) (type mps)) |
| 135 | + (domain-object (name INPUT) (type mps-side)) |
| 136 | + (domain-object (name OUTPUT) (type mps-side)) |
| 137 | + (domain-object (name WAIT) (type mps-side)) |
| 138 | + (domain-object (name ?team-color) (type team-color)) |
| 139 | + (domain-object (name O1) (type order)) |
| 140 | + (domain-object (name O2) (type order)) |
| 141 | + (domain-object (name O3) (type order)) |
| 142 | + (domain-object (name O4) (type order)) |
| 143 | + (domain-object (name O5) (type order)) |
| 144 | + (domain-object (name O6) (type order)) |
| 145 | + (domain-object (name O7) (type order)) |
| 146 | + (domain-object (name O8) (type order)) |
| 147 | + (domain-object (name O9) (type order)) |
| 148 | + (domain-fact (name rs-ring-spec) (param-values ?rs1 RING_NONE ZERO)) |
| 149 | + (domain-fact (name rs-ring-spec) (param-values ?rs2 RING_NONE ZERO)) |
| 150 | + ) |
| 151 | +) |
| 152 | + |
| 153 | +(defrule domain-load-initial-facts |
| 154 | +" Load all initial domain facts on startup of the game " |
| 155 | + (domain-loaded) |
| 156 | + => |
| 157 | + (printout info "Initializing worldmodel" crlf) |
| 158 | + (bind ?team-color MAGENTA) |
| 159 | + (if (eq ?team-color CYAN) |
| 160 | + then |
| 161 | + (bind ?bs C-BS) |
| 162 | + (bind ?cs1 C-CS1) |
| 163 | + (bind ?cs2 C-CS2) |
| 164 | + (bind ?rs1 C-RS1) |
| 165 | + (bind ?rs2 C-RS2) |
| 166 | + (bind ?ds C-DS) |
| 167 | + (bind ?ss C-SS) |
| 168 | + else |
| 169 | + (bind ?bs M-BS) |
| 170 | + (bind ?cs1 M-CS1) |
| 171 | + (bind ?cs2 M-CS2) |
| 172 | + (bind ?rs1 M-RS1) |
| 173 | + (bind ?rs2 M-RS2) |
| 174 | + (bind ?ds M-DS) |
| 175 | + (bind ?ss M-SS) |
| 176 | + ) |
| 177 | + |
| 178 | + (domain-load-local-facts ?team-color) |
| 179 | + (foreach ?mps (create$ ?bs ?cs1 ?cs2 ?rs1 ?rs2 ?ds ?ss) |
| 180 | + (assert |
| 181 | + (domain-fact (name mps-side-free) (param-values ?mps INPUT)) |
| 182 | + (domain-fact (name mps-side-free) (param-values ?mps OUTPUT)) |
| 183 | + (domain-fact (name mps-side-approachable) (param-values ?mps INPUT)) |
| 184 | + (domain-fact (name mps-side-approachable) (param-values ?mps OUTPUT)) |
| 185 | + (domain-fact (name mps-side-approachable) (param-values ?mps WAIT)) |
| 186 | + ) |
| 187 | + ) |
| 188 | + (foreach ?robot (create$ robot1 robot2 robot3) |
| 189 | + (assert |
| 190 | + (domain-fact (name at) (param-values ?robot START INPUT)) |
| 191 | + (domain-fact (name can-hold) (param-values ?robot)) |
| 192 | + ) |
| 193 | + ) |
| 194 | + (foreach ?cc (create$ CCB1 CCB2 CCB3 CCG1 CCG2 CCG3) |
| 195 | + (assert |
| 196 | + (domain-fact (name wp-base-color) (param-values ?cc BASE_CLEAR)) |
| 197 | + (domain-fact (name wp-ring1-color) (param-values ?cc RING_NONE)) |
| 198 | + (domain-fact (name wp-ring2-color) (param-values ?cc RING_NONE)) |
| 199 | + (domain-fact (name wp-ring3-color) (param-values ?cc RING_NONE)) |
| 200 | + ) |
| 201 | + ) |
| 202 | + (assert |
| 203 | + (domain-fact (name wp-cap-color) (param-values CCB1 CAP_BLACK)) |
| 204 | + (domain-fact (name wp-cap-color) (param-values CCB2 CAP_BLACK)) |
| 205 | + (domain-fact (name wp-cap-color) (param-values CCB3 CAP_BLACK)) |
| 206 | + (domain-fact (name wp-cap-color) (param-values CCG1 CAP_GREY)) |
| 207 | + (domain-fact (name wp-cap-color) (param-values CCG2 CAP_GREY)) |
| 208 | + (domain-fact (name wp-cap-color) (param-values CCG3 CAP_GREY)) |
| 209 | + (domain-fact (name wp-on-shelf) (param-values CCB1 ?cs2 LEFT)) |
| 210 | + (domain-fact (name wp-on-shelf) (param-values CCB2 ?cs2 MIDDLE)) |
| 211 | + (domain-fact (name wp-on-shelf) (param-values CCB3 ?cs2 RIGHT)) |
| 212 | + (domain-fact (name wp-on-shelf) (param-values CCG1 ?cs1 LEFT)) |
| 213 | + (domain-fact (name wp-on-shelf) (param-values CCG2 ?cs1 MIDDLE)) |
| 214 | + (domain-fact (name wp-on-shelf) (param-values CCG3 ?cs1 RIGHT)) |
| 215 | + (domain-fact (name cs-can-perform) (param-values ?cs1 RETRIEVE_CAP)) |
| 216 | + (domain-fact (name cs-can-perform) (param-values ?cs2 RETRIEVE_CAP)) |
| 217 | + (domain-fact (name cs-free) (param-values ?cs1)) |
| 218 | + (domain-fact (name cs-free) (param-values ?cs2)) |
| 219 | + (domain-fact (name cs-color) (param-values ?cs1 CAP_GREY)) |
| 220 | + (domain-fact (name cs-color) (param-values ?cs2 CAP_BLACK)) |
| 221 | + (domain-fact (name rs-filled-with) (param-values ?rs1 ZERO)) |
| 222 | + (domain-fact (name rs-filled-with) (param-values ?rs2 ZERO)) |
| 223 | + ) |
| 224 | + (assert (domain-facts-loaded)) |
| 225 | +) |
0 commit comments