Елементарні прийоми роботи з параметрами
Параметри – це змінні, які визначають процес передачі управління між усіма секціями вихідної бази знань. Опис будь-якого параметра складається з області декларації та області типу. Для опису параметра використовується ряд опціональних полів, що залежать від конкретного типу параметра. Створимо три нові параметри:
• user_name – текстового типу, який визначатиме поточного користувача ЕС,
• view_list_films – логічного типу, який визначить бажання виведення афіші,
• v_sr – числового типу, що визначає середню швидкість руху до кінотеатру.
Для створення будь-якого нового параметра слід в головному меню вибрати Parameter -> New Parameter, а потім в діалоговому вікні вказати тип параметра, ввести його ім'я та натиснути кнопку ОК. Після цього ESTA відкриє вікно з шаблоном опису цього параметра, яке слід відредагувати.
Так, наприклад, при створенні нового текстового параметра user_name шаблон його опису матиме вигляд, аналогічний тому, що наведений на рис. 7.14.
Рисунок 7.14– Створення текстового параметра user_name
Після редагування опис цього параметра може мати вигляд:
parameter user_name: 'Ім'я користувача'
type text
explanation 'Система хоче з Вами познайомитися'
question 'Як вас звуть?'
Аналогічну послідовність дій треба виконати і при створенні нового логічного параметра view_list_films.
Рисунок 7.15– Створення логічного параметра view_list_films
Після редагування опис цього параметра може мати вигляд:
parameter view_list_films: ''
type boolean
explanation 'Чи повинна система завантажувати файл list_films.txt'
question user_name ', хочете переглянути афішу?'
Особливість опису параметра view_list_films полягає в тому, що в питанні на вибір значення цього параметра використовується значення параметра user_name. Якщо до моменту використання в системі параметра view_list_films значення параметра user_name не буде означено, то система автоматично намагатиметься встановити його значення.
Розглянемо приклад. З цією метою дещо видозмінимо секцію before_start, щоб її опис мав такий вигляд:
section before_start : ' '
advice 'Починаємо консультацію'
if view_list_films call display ('list_films.txt')
Зберігши зроблені зміни і запустивши режим консультації, отримаємо таку послідовність вікон (рис. 7.16), які будуть викликані роботою двох операторів секції before_start.
Рисунок 7.16 – Послідовність роботи системи
Якщо в секції before_start змінити опис першого оператора так, щоб у ньому був наявний параметр user_name:
section before_start : ' '
advice user_name '!!! Починаємо консультацію '
if view_list_films call display (' list_films.txt ')
то після запуску режиму консультації, отримаємо іншу послідовність вікон (рис. 7.17), які також відповідають роботі двох операторів секції before_start.
Рисунок 7.17 – Послідовність роботи системи
Таким чином, використання одного і того ж параметра, але в різних місцях опису секцій, може впливати на послідовність ходу проведення консультації.
Разом з тим відмова користувача від введення того чи іншого параметра може призвести до небажаного поводження системи. Так, наприклад, якщо користувач не вводитиме значення параметра user_name, то повідомлення та питання діалогових вікон будуть виглядати не так, як це було задумано. Позбутися цього можна, якщо передбачити перевірку на обов'язковість введення цього параметра:
section before_start : ' '
if user_name = ' ' (
advice 'Наступного разу не забудьте представитися',
exit
)
advice user_name '!!! Починаємо консультацію '
if view_list_films call display (' list_films.txt ')
Розглянемо ще один приклад використання параметрів. Нехай потрібно, щоб наша експертна система крім рекомендації по способу переміщення до кінотеатру, ще б радила потрібну середню швидкість руху. З цією метою створимо новий числовий параметр, опис якого може мати вигляд:
parameter v_sr: 'середня швидкість'
type number
rules
distance / time * 60 if time> 0.
Відобразимо значення цього параметра в кінці консультації. Для цього замінимо в секції start останній оператор на новий оператор, який буде мати вигляд:
advice 'Середня швидкість руху =' v_sr 'км / год'