📄 chemfirm.clp
字号:
(bind ?multi2 (read))
(assert (link2 (multi ?multi2) (time 0)))
(printout t "What is the multiplier effect of chlorine-industry-demand"crlf)
(printout t "to chlorine-price? Enter 0.00044 for default." crlf)
(bind ?multi3 (read))
(assert (link3 (multi ?multi3) (time 0)))
(bind ?link44m (+ ?multi2 ?multi3))
(bind ?link44t (+ ?time2 ?time3))
(printout t "The multiplier effect of chlorine-industry-demand"crlf)
(printout t "to chemfirm-operating profit is " ?link44m crlf)
(printout t "with time lag of " ?link44t " months." crlf)
(bind ?final (* ?value ?link44m))
(assert (cashflow (value ?final )))
(printout t "The cumulative multiplier effect of all input changes to" crlf)
(printout t "chemfirm-operating profit is " ?final crlf)
(assert (link44 (multi ?link44m) (time ?link44t)))
(printout t "The path of the multiplier effect of "crlf)
(printout t "chlorine-industry-demand is as follows:"crlf)
(bind ?link45m (+ ?multi3 0))
(printout t "The multiplier effect of the path of chlorine-industry-demand"crlf)
(printout t "to chlorine-price is " ?link45m crlf)
(assert (link45 (multi ?link45m) (time ?time45)))
(bind ?link46m (+ ?multi2 0))
(printout t "The multiplier effect of the path of chlorine-industry-demand"crlf)
(printout t "to chlorine-chemfirm-demand is " ?link46m crlf)
(assert (link46 (multi ?link46m) (time ?time46)))
(bind ?link47m (+ ?multi2 ?multi3))
(printout t "The multiplier effect of the path of chlorine-industry-demand"crlf)
(printout t "to chlorine-chemfirm-profit is " ?link47m crlf)
(assert (link47 (multi ?link47m) (time ?time47)))
(assert (continue yes-or-no)))
(defrule start-na-industry-demand
?start <- (start na-industry-demand)
?link10 <- (link10 (multi ?multi10) (time ?time10))
?link11 <- (link11 (multi ?multi11) (time ?time11))
(link1 (multi ?multi1) (time ?time1))
(link2 (multi ?multi2) (time ?time2))
(link3 (multi ?multi3) (time ?time3))
(link4 (multi ?multi4) (time ?time4))
(link5 (multi ?multi5) (time ?time5))
(link6 (multi ?multi6) (time ?time6))
(link7 (multi ?multi7) (time ?time7))
(link8 (multi ?multi8) (time ?time8))
(link9 (multi ?multi9) (time ?time9))
(link12 (multi ?multi12) (time ?time12))
(link13 (multi ?multi13) (time ?time13))
(link14 (multi ?multi14) (time ?time14))
(link15 (multi ?multi15) (time ?time15))
(link16 (multi ?multi16) (time ?time16))
(link17 (multi ?multi17) (time ?time17))
(link18 (multi ?multi18) (time ?time18))
(link19 (multi ?multi19) (time ?time19))
(link20 (multi ?multi20) (time ?time20))
(link21 (multi ?multi21) (time ?time21))
(link22 (multi ?multi22) (time ?time22))
(link23 (multi ?multi23) (time ?time23))
(link24 (multi ?multi24) (time ?time24))
(link25 (multi ?multi25) (time ?time25))
(link26 (multi ?multi26) (time ?time26))
(link27 (multi ?multi27) (time ?time27))
(link28 (multi ?multi28) (time ?time28))
(link29 (multi ?multi29) (time ?time29))
(link30 (multi ?multi30) (time ?time30))
(link31 (multi ?multi31) (time ?time31))
(link32 (multi ?multi32) (time ?time32))
(link33 (multi ?multi33) (time ?time33))
(link34 (multi ?multi34) (time ?time34))
(link35 (multi ?multi35) (time ?time35))
(link36 (multi ?multi36) (time ?time36))
(link37 (multi ?multi37) (time ?time37))
(link38 (multi ?multi38) (time ?time38))
(link39 (multi ?multi39) (time ?time39))
(link40 (multi ?multi40) (time ?time40))
(link41 (multi ?multi41) (time ?time41))
(link42 (multi ?multi42) (time ?time42))
(link43 (multi ?multi43) (time ?time43))
(link44 (multi ?multi44) (time ?time44))
(link45 (multi ?multi45) (time ?time45))
(link46 (multi ?multi46) (time ?time46))
(link47 (multi ?multi47) (time ?time47))
?link48 <- (link48 (multi ?multi48) (time ?time48))
?link49 <- (link49 (multi ?multi49) (time ?time49))
?link50 <- (link50 (multi ?multi50) (time ?time50))
?link51 <- (link51 (multi ?multi51) (time ?time51))
(link52 (multi ?multi52) (time ?time52))
(link53 (multi ?multi53) (time ?time53))
(link54 (multi ?multi54) (time ?time54))
(link55 (multi ?multi55) (time ?time55))
?cashflow <- (cashflow (value ?value))
=> (retract ?start ?link10 ?link11 ?link48 ?link49 ?link50 ?link51)
(printout t "What is the multiplier effect of caustic-soda-industry-demand"crlf)
(printout t "to caustic-soda-chemfirm-demand? Enter 0.13 for default." crlf)
(bind ?multi10 (read))
(assert (link10 (multi ?multi10) (time 0)))
(printout t "What is the multiplier effect of caustic-soda-industry-demand"crlf)
(printout t "to caustic-soda-price? Enter 0.026 for default." crlf)
(bind ?multi11 (read))
(assert (link11 (multi ?multi11) (time 0)))
(bind ?link48m (+ ?multi10 ?multi11))
(bind ?link48t (+ ?time10 ?time11))
(printout t "The multiplier effect of caustic-soda-industry-demand"crlf)
(printout t "to chemfirm-operating profit is " ?link48m crlf)
(printout t "with time lag of " ?link48t " months." crlf)
(bind ?final (* ?value ?link48m))
(assert (cashflow (value ?final )))
(printout t "The cumulative multiplier effect of all input changes to " crlf)
(printout t "chemfirm-operating profit is " ?final crlf)
(assert (link48 (multi ?link48m) (time ?link48t)))
(printout t "The path of the multiplier effect of caustic-soda-industry-demand"crlf)
(printout t "is as follows:"crlf)
(bind ?link49m (+ ?multi11 0))
(printout t "The multiplier effect of the path of caustic-soda-industry-demand"crlf)
(printout t "to caustic-soda-price is " ?link49m crlf)
(assert (link49 (multi ?link49m) (time ?time49)))
(bind ?link50m (+ ?multi10 0))
(printout t "The multiplier effect of the path of caustic-soda-industry-demand"crlf)
(printout t "to caustic-soda-chemfirm-demand is " ?link50m crlf)
(assert (link50 (multi ?link50m) (time ?time50)))
(bind ?link51m (+ ?multi10 ?multi11))
(printout t "The multiplier effect of the path of caustic-soda-industry-demand"crlf)
(printout t "to caustic-soda-chemfirm-profit is " ?link51m crlf)
(assert (link51 (multi ?link51m) (time ?time51)))
(assert (continue yes-or-no)))
(defrule start-other-mfg-cost
?start <- (start other-mfg-cost)
?link15 <- (link15 (multi ?multi15) (time ?time15))
(link1 (multi ?multi1) (time ?time1))
(link2 (multi ?multi2) (time ?time2))
(link3 (multi ?multi3) (time ?time3))
(link4 (multi ?multi4) (time ?time4))
(link5 (multi ?multi5) (time ?time5))
(link6 (multi ?multi6) (time ?time6))
(link7 (multi ?multi7) (time ?time7))
(link8 (multi ?multi8) (time ?time8))
(link9 (multi ?multi9) (time ?time9))
(link10 (multi ?multi10) (time ?time10))
(link11 (multi ?multi11) (time ?time11))
(link12 (multi ?multi12) (time ?time12))
(link13 (multi ?multi13) (time ?time13))
(link14 (multi ?multi14) (time ?time14))
(link16 (multi ?multi16) (time ?time16))
(link17 (multi ?multi17) (time ?time17))
(link18 (multi ?multi18) (time ?time18))
(link19 (multi ?multi19) (time ?time19))
(link20 (multi ?multi20) (time ?time20))
(link21 (multi ?multi21) (time ?time21))
(link22 (multi ?multi22) (time ?time22))
(link23 (multi ?multi23) (time ?time23))
(link24 (multi ?multi24) (time ?time24))
(link25 (multi ?multi25) (time ?time25))
(link26 (multi ?multi26) (time ?time26))
(link27 (multi ?multi27) (time ?time27))
(link28 (multi ?multi28) (time ?time28))
(link29 (multi ?multi29) (time ?time29))
(link30 (multi ?multi30) (time ?time30))
(link31 (multi ?multi31) (time ?time31))
(link32 (multi ?multi32) (time ?time32))
(link33 (multi ?multi33) (time ?time33))
(link34 (multi ?multi34) (time ?time34))
(link35 (multi ?multi35) (time ?time35))
(link36 (multi ?multi36) (time ?time36))
(link37 (multi ?multi37) (time ?time37))
(link38 (multi ?multi38) (time ?time38))
(link39 (multi ?multi39) (time ?time39))
(link40 (multi ?multi40) (time ?time40))
(link41 (multi ?multi41) (time ?time41))
(link42 (multi ?multi42) (time ?time42))
(link43 (multi ?multi43) (time ?time43))
(link44 (multi ?multi44) (time ?time44))
(link45 (multi ?multi45) (time ?time45))
(link46 (multi ?multi46) (time ?time46))
(link47 (multi ?multi47) (time ?time47))
(link48 (multi ?multi48) (time ?time48))
(link49 (multi ?multi49) (time ?time49))
(link50 (multi ?multi50) (time ?time50))
(link51 (multi ?multi51) (time ?time51))
?link52 <- (link52 (multi ?multi52) (time ?time52))
?link53 <- (link53 (multi ?multi53) (time ?time53))
?link54 <- (link54 (multi ?multi54) (time ?time54))
?link55 <- (link55 (multi ?multi55) (time ?time55))
?cashflow <- (cashflow (value ?value))
=> (retract ?start ?link15 ?link52 ?link53 ?link54 ?link55)
(printout t "What is the multiplier effect of "crlf)
(printout t "other-manufacturing-cost-than-crude-oil to chemfirm-cost-per-ton-" crlf)
(printout t "of-chlor-alkali? Enter 1.0 for default." crlf)
(bind ?multi15 (read))
(assert (link15 (multi ?multi15) (time 0)))
(bind ?link52m (+ (* ?multi15 ?multi16)(* ?multi15 ?multi17)))
(bind ?link52t (+ ?time15 ?time16 ?time17))
(printout t "The multiplier effect of other-manufacturing-cost"crlf)
(printout t "to chemfirm-operating profit is " ?link52m crlf)
(printout t "with time lag of " ?link52t " months." crlf)
(bind ?final (* ?value ?link52m))
(assert (cashflow (value ?final )))
(printout t "The cumulative multiplier effect of all input changes to" crlf)
(printout t "chemfirm-operating profit is " ?final crlf)
(assert (link52 (multi ?link52m) (time ?link52t)))
(printout t "The path of the multiplier effect of other-manufacturing-cost"crlf)
(printout t "is as follows:"crlf)
(bind ?link53m (+ ?multi15 0))
(printout t "The multiplier effect of the path of other-manufacturing-cost"crlf)
(printout t "to chemfirm-cost-per-ton-of-chlor-alkali is " ?link53m crlf)
(assert (link53 (multi ?link53m) (time ?time53)))
(bind ?link54m (* ?multi15 ?multi17))
(printout t "The multiplier effect of the path of other-manufacturing-cost"crlf)
(printout t "to caustic-soda-chemfirm-profit is " ?link54m crlf)
(assert (link54 (multi ?link54m) (time ?time54)))
(bind ?link55m (* ?multi15 ?multi16))
(printout t "The multiplier effect of the path of other-manufacturing-cost"crlf)
(printout t "to chlorine-chemfirm-profit is " ?link55m crlf)
(assert (link55 (multi ?link55m) (time ?time55)))
(assert (continue yes-or-no)))
; The following four rules ask the user to continue assessing the analysis
; and checks for valid response
(defrule ask-continue
(continue yes-or-no)
=>
(printout t "Do you wish to continue analyzing scenarios?" crlf)
(printout t "The valid choice is yes or no." crlf)
(assert (endresponse (read))))
; good yes response
(defrule good-yes-response
?continue <- (continue yes-or-no)
?yesresponse <- (endresponse ?yes&yes)
=> (retract ?continue ?yesresponse)
(printout t "Do you wish to start over after resetting the initial facts"crlf)
(printout t "or to continue while keeping the current multiplier values?"crlf)
(printout t "The valid choice is s for start-over or c for continue."crlf)
(bind ?useranswer (read))
(if (eq ?useranswer s)
then (reset)
(run))
(if (eq ?useranswer c)
then (assert (phase startchemfirm)))
(if (neq ?useranswer s c)
then (assert (continue yes-or-no))
(assert (endresponse yes))))
; good no response
(defrule good-no-response
?continue <- (continue yes-or-no)
?noresponse <- (endresponse ?no&no)
(username (name $?user))
=> (retract ?continue ?noresponse)
(printout t "You have chosen to end the analysis of chemfirm causal mapping." crlf)
(printout t "Have a nice day, " $?user " ."crlf))
;could use clear and exit command here to clean the clips environment
;and exit from the clips program
;alternative finish-procedure
;replace - with parenthesis
;and arrow is the rule construct beginning rhs of the rule
;-assert -finished ready---
;-defrule finished-chemfirm
;-finished ready-
;arrow -clear-
; -exit--
; bad or invalid response to the question to continue the analysis
(defrule bad-response
?continue <- (continue yes-or-no)
?badresponse <- (endresponse ?bad&~yes&~no)
=> (retract ?continue ?badresponse)
(printout t "Please choose yes or no only. Remember the case-sensitivity."crlf)
(assert (continue yes-or-no)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -