{; ****************************************** AC-SETUP2.LSP } {; **** Plan Selection Demo } {; **** Written in DSPL } {; **** Specialist SpA has four plans P1, P2, P3 and P4 } {; **** Each plan has an associated Sponsor } {; **** SpA has a Selector which takes as input the results from the sponsors } {; **** Each plan contains two dummy tasks consisting only of s constraint } {; **** Task T1 is fixed to always fail } (DSKIN "AC-TRACE.LSP") (MSG T "----------------- DATA BASE ----------------------" T ) (DSKIN "AC-FRL-KB.LSP") (MSG T "------------------ DESIGN AGENTS -----------------" T) (SPECIALIST (NAME SpA) (DESIGN-PLANS P1 P2 P3 P4) (DESIGN-PLAN-SELECTOR SpASelector) ) (PLAN (NAME P1) (TYPE Design) (USED-BY SpA) (SPONSOR P1Sponsor) (BODY T1 T2 ) ) (PLAN (NAME P2) (TYPE Design) (USED-BY SpA) (SPONSOR P2Sponsor) (BODY T2 T1 ) ) (PLAN (NAME P3) (TYPE Design) (USED-BY SpA) (SPONSOR P3Sponsor) (BODY T3 T1 ) ) (PLAN (NAME P4) (TYPE Design) (USED-BY SpA) (SPONSOR P4Sponsor) (BODY T1 T3 ) ) (TASK (NAME T1) (USED-BY P1 P2 P3 P4 ) (REDESIGN NOT-POSSIBLE) (BODY (TEST-CONSTRAINT C1) ) ) (TASK (NAME T2) (USED-BY P1 P2 ) (REDESIGN NOT-POSSIBLE) (BODY (TEST-CONSTRAINT C2) ) ) (TASK (NAME T3) (USED-BY P3 P4 ) (REDESIGN NOT-POSSIBLE) (BODY (TEST-CONSTRAINT C2) ) ) {; There are no Steps } (MSG T "------------------ CONSTRAINTS -------------------" T) (CONSTRAINT (NAME C1) (USED-BY T1) (FAILURE-MESSAGE "C1 forced failure") (BODY (TEST (1 = 2) ) ) ) (CONSTRAINT (NAME C2) (USED-BY T2 T3) (FAILURE-MESSAGE "C2 shouldn't fail") (BODY (TEST (1 = 1) ) ) ) (MSG T "------------------ PLAN SELECTION -------------------" T) (SPONSOR (NAME P1Sponsor) (USED-BY SpASelector) (PLAN P1) (BODY REPLY (IF (ALREADY-TRIED? PLAN) THEN RULE-OUT) REPLY (IF (EQUAL 'T1 LAST-FAILING-ITEM) THEN DONT-KNOW ELSE SUITABLE ) ) ) (SPONSOR (NAME P2Sponsor) (USED-BY SpASelector) (PLAN P2) (BODY REPLY (IF (ALREADY-TRIED? PLAN) THEN RULE-OUT) REPLY (IF (ALREADY-TRIED? 'P3) THEN UNSUITABLE) Qualities (TABLE (DEPENDING-ON (RELIABILITY-REQS) (MANUFACTURABILITY-REQS) (COST-REQS) ) (MATCH (IF (Reliable Easy Cheap) THEN PERFECT) (IF (Reliable ? ? ) THEN SUITABLE) ) (OTHERWISE RULE-OUT) ) OpMed (KB-FETCH 'Requirements 'OperatingMedium) REPLY (TABLE (DEPENDING-ON OpMed Qualities) (MATCH (IF ( Air SUITABLE) THEN SUITABLE) (IF ( Air ? ) THEN DONT-KNOW) )) ) ) (SPONSOR (NAME P3Sponsor) (USED-BY SpASelector) (PLAN P3) (BODY REPLY (IF (ALREADY-TRIED? PLAN) THEN RULE-OUT) REPLY PERFECT ) ) (SPONSOR (NAME P4Sponsor) (USED-BY SpASelector) (PLAN P4) (BODY REPLY (IF (ALREADY-TRIED? PLAN) THEN RULE-OUT) REPLY PERFECT ) ) (SELECTOR (NAME SpASelector ) (USED-BY SpA ) (USES P1Sponsor P2Sponsor P3Sponsor P4Sponsor ) (TYPE Design ) (SELECTION-METHODS (METHOD (NAME M1) (INPUT-VARIABLE PlanNames) (BODY REPLY (IF (ONLY-ONE? PlanNames) THEN PlanNames ELSE (DESIGNER-PREFERENCE PlanNames) ) ) ) ) (BODY REPLY (IF (MEMBER 'P4 PERFECT-PLANS) THEN 'P4 ELSE (IF PERFECT-PLANS THEN (USE-METHOD M1 ON PERFECT-PLANS) ELSE (IF SUITABLE-PLANS THEN (USE-METHOD M1 ON SUITABLE-PLANS) ELSE NO-PLANS-APPLICABLE ) ) ) ) ) (MSG T "------------------ FAILURE HANDLING -------------------" T) (DSKIN "AC-FAILURE-HANDLERS.LSP")