Елементарні прийоми роботи з параметрами

 

Параметри – це змінні, які визначають процес передачі управління між усіма секціями вихідної бази знань. Опис будь-якого параметра складається з області декларації та області типу. Для опису параметра використовується ряд опціональних полів, що залежать від конкретного типу параметра. Створимо три нові параметри:

• 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 'км / год'