Я новичок в программном обеспечении для клипов, когда я загрузил свой файл .clp и, наконец, запустил свою программу, он показывает false

Это экспертная система, решающая проблему запуска автомобиля. Я сделал какую-либо ошибку при создании правил. Я хочу, чтобы вывод был в 5 разных.

(defrule r1
        (Key-fob-turns-to-run-and-hear-crank yes)
    =>
        (printout t "Hear engine sound (Yes/No)?" crlf)
        (assert (engine sound(read))))

(defrule r2
    (engine sound yes)
=>
    (printout t "If engine runs and stop after a while (Yes/No)?" crlf)
    (assert (engine runs and stop(read))))

(defrule r3
    (engine runs and stop no)
=>
    (printout t "There is no fuel, low battery or other issues." crlf))

(defrule r4
    (engine runs and stop yes)
=>
    (printout t "Check if engine light is on (Yes/No)?" crlf)
    (assert (engine light(read))))

(defrule r5
    (engine light no)
=>
    (printout t " Check for any other warning signs and take it to mechanic" crlf))

(defrule r6
    (engine light yes)
=>
    (printout t "Any service code (yes/no)?" crlf)
    (assert (service code(read))))

(defrule r7
    (service code yes)
=>
    (printout t "Read code and fix the problem" crlf))

(defrule r8
    (service code no)
=>
    (printout t "Check if it stalls in rain (Yes/No)?" crlf)
    (assert (stalls in rain(read))))

(defrule r9
    (stalls in rain yes)
=>
    (printout t "Check for cracked coil distributor" crlf))

(defrule r10
    (stalls in rain no)
=>
    (printout t "check if it stalls in warm (Yes/No)?" crlf)
    (assert (stalls in warm(read))))

(defrule r11
    (stalls in warm yes)
=>
    (printout t "Adjust idle, blow out fuel filter." crlf)
    (printout t "Check fuel pump output and check vaccum leak." crlf))

(defrule r12
    (stalls in warm no)
=>
    (printout t "ON cold stalling, check for stuck choke, EGR and check vaccum leak." crlf))

(defrule r13
    (engine sound no)
=>
    (printout t "check the belt is ok (Yes/No)?" crlf)
    (assert (belt ok(read))))

(defrule r14
    (belt ok yes)
=>
    (printout t "Fuel in tank (Yes/No)?" crlf)
    (assert (fuel in tank(read))))

(defrule r15
    (fuel in tank no)
=>
    (printout t "Add fuel." crlf))

(defrule r16
    (fuel in tank yes)
=>
    (printout t " Fuel leak (Yes/No)?" crlf)
    (assert (fuel leak(read))))

(defrule r17
    (fuel leak yes)
=>
    (printout t "Need diagnostic test." crlf))

(defrule r18
    (fuel leak no)
=>
    (printout t "Check for any other leaks and try again." crlf))

(defrule r19
    (belt ok no)
=>
    (printout t "check if there is cracked belt (Yes/No)?" crlf)
    (assert (cracked belt(read))))

(defrule r20
    (cracked belt yes)
=>
    (printout t "Mechanical distributor (Yes/No)?" crlf)
    (assert (mechanical distributor(read))))

(defrule r21
    (mechanical distributor yes)
=>
    (printout t "Check condenser, magnetic pickup and rotor." crlf))

(defrule r22
    (mechanical distributor no)
=>
    (printout t "For electronic distribution, see model manual for diagnostic checks." crlf))

(defrule r23
    (racked belt no)
=>
    (printout t "Check it is 12V at coil primary (Yes/No)?" crlf)
    (assert (coil primary(read))))

(defrule r24
    (coil primary yes)
=>
    (printout t "Check secondary output wire resistance." crlf))

(defrule r25
    (coil primary no)
=>
    (printout t "Check ignition system wiring and voltage regulator." crlf))

(defrule r26
    (Key-fob-turns-to-run-and-hear-crank no)
=>
    (printout t "starter runs (Yes/No)?" crlf)
    (assert (starter runs(read))))

(defrule r27
    (starter runs yes)
=>
    (printout t "Not enough power to turn engine." crlf))

(defrule r28
    (starter runs no)
=>
    (printout t "Battery reads ok (Yes/No)?" crlf)
    (assert (battery reads(read))))

(defrule r29
    (battery reads yes)
=>
    (printout t "Check if there is any corrosive terminals (yes/no)?" crlf)
    (assert (corrosive terminals(read))))

(defrule r30
    (corrosive terminals yes)
=>
    (printout t "Clean terminals and retry." crlf))

(defrule r31
    (corrosive terminals no)
=>
    (printout t "Check terminals are connected properly and retry." crlf))

(defrule r32
    (battery reads no)
=>
    (printout t "Change battery." crlf))

После загрузки этих правил из файлаassign1.clp из моей системы это отображается. Каково решение для этого? Это мое первое задание, и я не могу найти, как решить эту проблему. Какую ошибку я сделал, пожалуйста, помогите мне с этим

             CLIPS (6.30 3/17/15)
    CLIPS> (load "C:/Users/Archana/Desktop/AI/AI assignment 1.CLP")
    Defining defrule: r1 +j+j
    Defining defrule: r2 +j+j
    Defining defrule: r3 +j+j
    Defining defrule: r4 +j+j
    Defining defrule: r5 +j+j
    Defining defrule: r6 +j+j
    Defining defrule: r7 +j+j
    Defining defrule: r8 +j+j
    Defining defrule: r9 +j+j
    Defining defrule: r10 +j+j
    Defining defrule: r11 +j+j
    Defining defrule: r12 +j+j
    Defining defrule: r13 +j+j
    Defining defrule: r14 +j+j
    Defining defrule: r15 +j+j
    Defining defrule: r16 +j+j
    Defining defrule: r17 +j+j
    Defining defrule: r18 +j+j
    Defining defrule: r19 +j+j
    Defining defrule: r20 +j+j
    Defining defrule: r21 +j+j
    Defining defrule: r22 +j+j
    Defining defrule: r23 +j+j
    Defining defrule: r24 +j+j
    Defining defrule: r25 +j+j
    Defining defrule: r26 +j+j
    Defining defrule: r27 +j+j
    Defining defrule: r28 +j+j
    Defining defrule: r29 +j+j
    Defining defrule: r30 +j+j
    Defining defrule: r31 +j+j
    Defining defrule: r32 +j+j

    [CSTRCPSR1] Expected the beginning of a construct.
    FALSE
    CLIPS> 

person Archana Gurimitkala    schedule 22.02.2019    source источник
comment
Может у инструктора спросить? Документация CLIPS расскажет вам, как отлаживать ваши системы.   -  person    schedule 23.02.2019


Ответы (1)


Поскольку последнее правило в вашем файле, r32, загружается без ошибок, вероятно, что-то после этого правила вызывает проблему. Это может быть невидимый символ, поэтому вы можете попробовать удалить лишние строки внизу файла. См. также CLIPS Ожидается начало конструкции, CLIPS Ожидаемое начало построения и ожидалось начало ошибки конструкции.

person Gary Riley    schedule 22.02.2019
comment
Спасибо, помогло, есть лишний символ "-" после последнего правила. Когда я загружаю программу, я получаю TRUE, а когда я запускаю, я ничего не вижу. Не могли бы вы помочь мне, как это исправить. Это мое задание, которое я должен сдать к вечеру воскресенья. - person Archana Gurimitkala; 23.02.2019
comment
Почему вы ожидаете, что что-то произойдет? Можете ли вы определить одно написанное вами правило и объяснить, почему, по вашему мнению, оно должно выполняться при выполнении команды запуска? - person Gary Riley; 23.02.2019
comment
Я просто хочу распечатать вопрос, чтобы пользователь мог выбрать «да» или «нет» для дальнейшего процесса. Мой вопрос задания (Включите примеры выполнения — описание проблемы, которую вы хотите решить, а также исходный код. Продемонстрируйте ее выполнение с помощью дампов экрана. Вам необходимо задокументировать не менее пяти отдельных запусков вашей программы) - person Archana Gurimitkala; 23.02.2019
comment
Что я должен делать ? распечатать вопросы пользователю. - person Archana Gurimitkala; 23.02.2019
comment
У вас есть правила, которые задают вопросы, но все они имеют условия, которые должны быть выполнены, прежде чем они смогут выполняться. Если вы введете команду (подтвердить (сигнал двигателя да)) до того, как вы введете команду (выполнить), вам будут заданы вопросы. Вам нужно посмотреть на каждое условие правила и посмотреть, есть ли другое правило, которое задает вопрос и утверждает факт, который может удовлетворить этому условию. Когда вы найдете правило с условием, которое не утверждается другим правилом, вам нужно добавить правило без условий, которое задает вопросы и утверждает факт с ответом. - person Gary Riley; 24.02.2019
comment
Большое спасибо, я получил свои вопросы к пользователю, следуя вашим предложениям. Я действительно ценю твою помощь. - person Archana Gurimitkala; 24.02.2019