Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.05.2013, 06:33
salasius salasius вне форума
Прохожий
 
Регистрация: 24.05.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Старый стал, непомню ничего =(

Дамы и господа, очень нужна ваша помощь.
Вызвали на сессию заочную, и всунули задачку на экспертные системы.
Её нужно программно реализовать.

В чём, собственно затык, абсолютно ничего не помню по дэлфи..
есть форма, на форме должно быть следующее:
Поле, где будет выводиться Вопрос и 2 кнопки "да" и "нет"
и в зависимости от ответа текст в поле будет меняться на др . вопросы.

в глубине сознания карлик кричит, что делается всё просто через IF THEN.. но засада в том что и этого без поднимания горы учебников я вспомнить не могу.

Помогите пожалуйста, достаточно при мера 1-го, остальное смогу добить сам(надеюсь)
Пример типа ..."В форме вопрос появился-дал ответ-другой вопрос."
Ответить с цитированием
  #2  
Старый 24.05.2013, 06:56
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот на скорую руку что-то типа того
Ответить с цитированием
  #3  
Старый 24.05.2013, 07:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если это задача про экспертные системы, то тут просто готовым кодом не отделаешься. А, собственно, по поводу принципа - ты почти угадал. Задача на продукционные правила, т.е. правила виды "ЕСЛИ..ТО". Вот только решаеть ее будет чуть посложнее, чем написать фиксированный код.
Для начала тебе надо реализовать базу знаний, в которой эти продукционные правила храняться. Это довольно просто, можно воспользоваться готовыми классами, получится что-то вида:
Код:
type
  TProductionRule = class
  private
    FIfClause : TStringList;
    FThenClause : TStringList;
  public
    property IfCount : Integer read GetIfCount;
    property ThenCount : Integer read GetThenCount;
    property IfClauseName[Index : Integer] : String read GetIfClauseName;
    property IfClauseValue[Index : Integer] : String read GetIfClauseValue;
    property ThenClauseName[Index : Integer] : String read GetThenClauseName;
    property ThenClauseValue[Index : Integer] : String read GetThenClauseValue;
  end;
* Здесь приведена только часть для зранения, доп. методы и поля добавяться по мере надобности.

Потом тебе надо будет написать машину логического вывода, которая будет брать правило и пытаться его вычислить. Пользователя она должна спрашивать только в том случае, если значение переменной не может быть высислено автоматически через правила. Код тут приводить не получится, т.к. там много писать придется.

Ну а интерфейс - это дело десятое.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Alegun (24.05.2013)
  #4  
Старый 24.05.2013, 07:10
salasius salasius вне форума
Прохожий
 
Регистрация: 24.05.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Ну у меня всё несколько проще....
просто Есть набор вопросов и к ним при да или нет другие вопросы и конечный результат по одной из цепочек..

Никаких подсчетов и выводов не нужно

Что то типа,
"Есть дополнительный?" капитал если "да"
то "Можно дать рекламу?"
иначе
"Можно ли сбавить цену на продукцию?"

и к ним такие же варианты...
"Можно дать рекламу?" если "да" то "Акей давай рекламу и буит те щастье" и конец проги.
если нет то "другой вопрос"
Ответить с цитированием
  #5  
Старый 25.05.2013, 08:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от salasius
Ну у меня всё несколько проще....

Ну, можно сделать тоже самое просто чуть попроще. Ты, собственно, и описал систему логического вывода на продукционных правилах. Просто если у тебя только один параметр на входе и выходе, то можно все упростить. С другой стороны, если сделать продукционные правила, то будет что-то типа:
Код:
ПРАВИЛО 1:
ЕСЛИ
  Есть доп капитал = ДА
  Можно дать рекламу = ДА
ТО
  Рекомендация = Дай рекламу в газете

ПРАВИЛО 2:
ЕСЛИ
  Есть доп капитал = НЕТ
  Можно снизить цену = ДА
ТО
  Рекомендация = Снижай цену и дай рекламу на листовках

ПРАВИЛО 3:
ЕСЛИ
  Можно изменить материалы = ДА
ТО
  Можно снизить цену товара = ДА

Теперь для запроса на вычисление [Рекомендация] система сначала спросит о наличии доп капитала, по ответу выберет правило 1 или 2, задаст второй вопрос, по необходимости (читай, по ответу) вызовет вычисление правила 3. Таким образов вычислится искомое значение и выведется результат. Это без системы самообучения и без разных других интересных штук, типа вероятностного вывода. Кстати, такая штука пишется довольно просто, в свое время на дипломку я час движок написал за вечер. Сложнее было с созданием правил, на них потратили почти неделю.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter