Я создаю экспертную систему, которая должна быть способна собрать компьютер после того, как он задаст пользователю вопрос, чтобы понять его потребности!Моя проблема в том, чтобы выбрать лучший процессор, лучший RAM, лучший VGA ecc ecc, чтобы показать пользователю только одну конфигурацию!
Компоненты хранятся следующим образом:
configuration(P, M, R, C, A, V, S, D, H, Dvd, Price_range) :-
processor(P, Proc_price, Price_range),
motherboard(M, Motherboard_price, Price_range),
ram(R, Ram_price, Price_range),
case(C, Case_price, Price_range),
ali(A, Ali_price, Price_range),
video_card(V, Vga_price, Price_range),
ssd(S, Ssd_price, Price_range),
monitor(D, Monitor_price, Price_range),
dvd(Dvd, Dvd_price, Price_range),
hdd(H, Hdd_price, Price_range).
Price is Proc_price + Motherboard_price + Ram_price + Case_price + Ali_price + Vga_price + Ssd_price + Dvd_price + Monitor_price + Hdd_price.
Я непрошу вас сделать это для меня, я просто прошу некоторые предложения, чтобы сделать это, я, вероятно, должен добавить некоторые элементы для каждого компонента и, возможно, некоторые отношения, но я нахожусь в тупике.
РЕДАКТИРОВАТЬ:
Я определил предикат конфигурации, но таким образом я могу определить все возможные конфигурации с помощью forall
/ findall
, но мне нужно сгенерировать только лучшую конфигурацию, поэтомувозможно, мне нужно определить один предикат выбора для каждого компонента.
Вы говорили о балле, я мог бы установить балл для каждого компонента, который означает, как компонент подходит для удовлетворения пользователя.
Я добавил некоторые связи между компонентами, я должен использовать их при определении конфигурации.Что касается этих отношений, я не уверен, нужно ли мне хранить их как другие компоненты по умолчанию, или я должен утверждать их, например, проверяя, имеют ли компоненты ботов один и тот же сокет.
compatibility(motherboard, processor)
compatibility(motherboard, ram)
compatibility(motherboard, vga)
compatibility(processor, ram)