Я написал свой первый код CLIPS для школьного проекта, но я не знаком с CLIPS (я использую C# и python в качестве основных языков).Первый код CLIPS не работает
Это мой код и ошибки я собирающий:
(defrule determine-closing-date
(not (day-to-close ?))
(billing-size ?)
(unpaid-invoices-number ?)
=>
(if
(or
(< billing-size 1000000)
(< unpaid-invoices-number 1000000)
)
then (assert (day-to-close MtTh))
else (assert (day-to-close friday))
)
(defrule determine-billing-size ""
(not (billing-size ?))
(not (day-to-close ?))
=>
(printout t "¿Cuál es el tamaño de la facturacion?")
(assert (billing-size ?size (read))))
(defrule determine-unpaid-invoices-number ""
(not (unpaid-invoices-number ?))
(not (day-to-close ?))
=>
(printout t "¿Cuál es la cantidad de facturas no pagadas")
(assert (unpaid-invoices-number ?size (read))))
(defrule determine-friday-load ""
(day-to-close friday)
(not (friday-load ?))
=>
(printout t "¿Cuál es la carga de cierres para el viernes?")
(assert (friday-load ?load (read))))
(defrule determine-saturday-closing ""
(day-to-close friday)
(not(< friday-load 1000000))
=>
(assert (day-to-close saturday)))
(defrule day-to-close-conclulssion ""
(day-to-close ?)
=>
(if (eq day-to-close MtTh)
then (printout t "Se puede cerrar de Lunes a Jueves")
else (
if (eq day-to-close friday)
then (printout t "Se debe cerrar viernes.")
else (printout t "Se debe cerrar sabado.")
)
))
В errores являются:
[ARGACCES5] Функция < ожидается аргумент # 1, чтобы быть целочисленного типа или плавать
[PRCCODE3] Неопределенный размер переменной, указанный в RHS дефлектора.
[CSTRCPSR1] ПРЕДУПРЕЖДЕНИЕ: Переопределение defrule: определить,-субботу-закрытие + J + J + J
[CSTRCPSR1] ПРЕДУПРЕЖДЕНИЕ: Переопределение defrule: изо дня в близком conclulssion + J + J
Спасибо за вашу помощь! Можете ли вы сказать, что я делаю неправильно. Я действительно хочу изучить этот CLIPS languague – Yatiac
1) Синтаксис, используемый для привязки переменных, был неправильным. –
2) В правиле определения-субботы-закрытия шаблон пятнистой нагрузки необходимо проверить на наличие нагрузки менее 1000000, а не на отсутствие факта с нагрузкой менее 1000000. 3) День чтобы закрыть правило вывода, чтобы иметь более низкую значимость, чем другие правила, чтобы он выполнялся только после применения всех других правил. Если вы удалите значимость и запустите программу с размером платежа и оплаченными счетами 3000000, вы поймете, почему. –