Задать вопрос
@Resa12_2n

Не работает экспертная система по выбору телефона?

Просто ничего не выводит, а какую то полезную информацию не нашла не все влезло, отблагодарю ((implement main
open core, console
class facts
    fact : (integer, string).
class predicates
    rule : (integer [out], string, string [out], integer* [out]) nondeterm.
    ask : (integer) determ.
    recognition : (string).
    discover : (integer*) nondeterm.
    complete : (integer) determ.
clauses
    rule(1, "Телефон ", "Для игр", [1]).
    rule(2, "Телефон", "Для фотосъемки", [2]).
    rule(3, "Телефон", "Для повседневных задач", [3]).
    rule(4, "Для игр", "Цена до 35000", [1, 4]).
    rule(5, "Для игр", "Цена от 35000 до 50000", [1, 5]).
    rule(6, "Для игр", "Цена свыше 50000", [1, 6]).
    rule(7, "Для фотосъемки", "Цена от 15000 до 25000", [2, 7]).
    rule(8, "Для фотосъемки", "Цена от 25000 до 50000", [2, 8]).
    rule(9, "Для фотосъемки", "Цена от 50000 до 70000", [2, 9])
    rule(10, "Для повседневных задач", "Цена от 5000 до 15000", [3, 10]).
    rule(11, "Для повседневных задач", "Цена от 15000 до 25000", [3, 7, 11]).
    rule(12, "Цена до 35000", "Производитель процессора - MediaTek", [4, 12]).
    rule(13, "Цена до 35000", "Производитель процессора - Qualcomm", [4, 13]).
    rule(14, "Цена от 35000 до 50000", "Производитель процессора - MediaTek", [5, 12, 14]).
    rule(16, "Цена от 35000 до 50000", "Производитель процессора - Qualcomm", [5, 13, 16]).
    rule(17, "Цена свыше 50000", "Производитель процессора - MediaTek", [6, 12, 17]).
    rule(18, "Цена свыше 50000", "Производитель процессора - Qualcomm", [6, 13, 18]).
    rule(19, "Цена от 15000 до 25000", "Разрешение основной камеры - от 40 до 59 Мпикс", [7, 19]).
    rule(20, "Цена от 15000 до 25000", "Разрешение основной камеры - от 60 до 99 Мпикс", [7, 20]).
    rule(21, "Цена от 25000 до 50000", "Разрешение основной камеры - от 60 до 99 Мпикс", [8, 20, 21]).
    rule(22, "Цена от 25000 до 50000", "Разрешение основной камеры - от 100 Мпикс", [8, 22]).
    rule(23, "Цена от 50000 до 70000", "Разрешение основной камеры - от 100 Мпикс", [9, 22, 23]).
    rule(24, "Цена от 5000 до 15000", "Емкость аккумулятора - до 3499 мАч", [10, 24]).
    rule(25, "Цена от 5000 до 15000", "Емкость аккумулятора - от 4000 до 4499 мАч", [10, 25]).
    rule(26, "Цена от 15000 до 25000", "Емкость аккумулятора - от 4500 до 4999 мАч", [11, 26]).
    rule(27, "Цена от 15000 до 25000", "Емкость аккумулятора - от 5000 до 5499 мАч", [11, 27]).
    rule(28, "Производитель процессора - MediaTek", "Оперативная память - 6 ГБ", [12, 28]).
    rule(29, "Производитель процессора - MediaTek", "Оперативная память - 8 ГБ", [12, 29]).
    rule(30, "Производитель процессора - Qualcomm", "Оперативная память - 6 ГБ", [13, 30]).
    rule(31, "Производитель процессора - Qualcomm", "Оперативная память - 8 ГБ", [13, 31]).
    rule(32, "Производитель процессора - MediaTek", "Оперативная память - 8 ГБ", [14, 29, 32]).
    rule(33, "Производитель процессора - MediaTek", "Оперативная память - 12 ГБ", [14, 33]).
    rule(34, "Производитель процессора - Qualcomm", "Оперативная память - 8 ГБ", [16, 31, 34]).
    rule(35, "Производитель процессора - Qualcomm", "Оперативная память - 12 ГБ", [16, 33, 35]).
    rule(36, "Производитель процессора - MediaTek", "Оперативная память - 12GB", [1, 6, 12, 33, 36]).
    rule(37, "Производитель процессора - MediaTek", "Оперативная память - 16GB", [1, 6, 12, 37]).
    rule(38, "Производитель процессора - Qualcomm", "Оперативная память - 12GB", [1, 6, 13, 33, 38]).
    rule(39, "Производитель процессора - Qualcomm", "Оперативная память - 16GB", [1, 6, 13, 37, 39]).
    rule(40, "Разрешение основной камеры - от 40 до 59Мпикс", "Показатель апертуры от 2.5 до 2.3", [2, 7, 19, 40]).
    rule(41, "Разрешение основной камеры - от 40 до 59Мпикс", "Показатель апертуры от 2.2 до 1.9", [2, 7, 19, 41]).
    rule(42, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 2.5 до 2.3", [2, 7, 20, 40, 42]).
    rule(43, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 2.2 до 1.9", [2, 7, 20, 41, 43]).
    rule(44, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 2.0 до 1.8", [2, 8, 20, 21, 44]).
    rule(45, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 1.7 до 1.5", [2, 8, 20, 21, 45]).
    rule(46, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 2.0 до 1.8", [2, 8, 22, 44, 46]).
    rule(47, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 1.7 до 1.5", [2, 8, 22, 45, 47]).
    rule(48, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 2.0 до 1.8", [2, 9, 22, 23, 44, 46, 48]).
    rule(49, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 1.7 до 1.5", [2, 9, 22, 23, 45, 47, 49]).
    ask(X) :-
        fact(X, "y"),
        !.
    ask(X) :-
        fact(X, "n"),
        !,
        fail.
    ask(1) :-
        write("Для игр?"),
        !,
        complete(1).
    ask(2) :-
        write("Для фотосъемки?"),
        !,
        complete(2).
    ask(3) :-
        write("Для повседневных задач?"),
        !,
        complete(4).
    ask(4) :-
        write("Ценовая категория до 35000 тысяч?"),
        !,
        complete(4).
    ask(5) :-
        write("Ценовая категория от 35000 до 50000 тысяч?"),
        !,
        complete(5).
    ask(6) :-
        write("Ценовая категория свыше 50000 тысяч?"),
        !,
        complete(6).
    ask(7) :-
        write("Ценовая категория от 15000 до 25000 тысяч?"),
        !,
        complete(7).
    ask(8) :-
        write("Ценовая категория от 25000 до 50000 тысяч?"),
        !,
        complete(8).
    ask(9) :-
        write("Ценовая категория от 50000 до 70000 тысяч?"),
        !,
        complete(9).
    ask(10) :-
        write("Ценовая категория от 5000 до 15000 тысяч?"),
        !,
        complete(10).
    ask(11) :-
        write("Производитель процессора MediaTek?"),
        !,
        complete(11).
    ask(12) :-
        write("Производитель процессора Qualcomm?"),
        !,
        complete(12).
    ask(13) :-
        write("Разрешение основной камеры от 40 до 59 Мпикс?"),
        !,
        complete(13).
    ask(14) :-
        write("Разрешение основной камеры от 60 до 99 Мпикс?"),
        !,
        complete(14).
    ask(15) :-
        write("Разрешение основной камеры от 100 Мпикс?"),
        !,
        complete(15).
    ask(16) :-
        write("Ёмкость аккумулятора до 3499 мАч?"),
        !,
        complete(16).
    ask(17) :-
        write("Ёмкость аккумулятора от 4000 до 4499 мАч?"),
        !,
        complete(17).
    ask(18) :-
        write("Ёмкость аккумулятора от 4500 до 4999 мАч?"),
        !,
        complete(18).
    ask(19) :-
        write("Ёмкость аккумулятора от 5000 до 5499 мАч?"),
        !,
        complete(19).    recognition(X) :-
        rule(N, X, Y, Z),
        discover(Z),
        !,
        write("       это более всего похоже на ", X, " - ", Y, " (правило ", N, ")"),
        nl,
        recognition(Y).
    recognition("Для игр") :-
        write("2этот телефон системе не известен!"),
        nl,
        !.
    recognition("Для фотосъемки") :-
        write("3этот телефон системе не известен!"),
        nl,
        !.
    recognition("Для повседневных задач") :-
        write("4этот телефон системе не известен!"),
        nl,
        !.
    recognition(_).
    discover([X | Y]) :-
        ask(X),
        discover(Y).
    discover([]).
    complete(X) :-
        write(" y/n"),
        nl,
        Y = readline(),
        ((Y = "y" or Y = "Y") and assert(fact(X, "y")) and ! or assert(fact(X, "n")) and ! and fail).
    run() :-
        init(),
        recognition("телефон"),
        _ = readchar().
end implement main
goal
    mainExe::run(main::run).
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы