Про качества, желательные у программиста
Очки системного мышления и Гарри Поттер
вторник, 26 декабря 2017 г.
понедельник, 25 декабря 2017 г.
Паттерны построения пользовательского интерфейса
Не все, что описано в этих статьях, сразу станет понятно. Но пробовать понять нужно.
Паттерны для новичков: MVC vs MVP vs MVVM
Паттерн MVC на примере Cапера
Структурные паттерны проектирования в Python
Паттерны проектирования
Паттерны для новичков: MVC vs MVP vs MVVM
Паттерн MVC на примере Cапера
Структурные паттерны проектирования в Python
Паттерны проектирования
Создание графических приложений. События
События
В системе современного графического интерфейса имеется
возможность отслеживать различные события, связанные с клавиатурой и
мышью, и происходящие на «территории» того или иного виджета. В Tk
события описываются в виде текстовой строки — шаблона события,
состоящего из трех элементов (модификаторы, тип события и детализация
события).Тип события | Содержание события |
---|---|
Activate |
Активизация окна |
ButtonPress |
Нажатие кнопки мыши |
ButtonRelease |
Отжатие кнопки мыши |
Deactivate |
Деактивация окна |
Destroy |
Закрытие окна |
Enter |
Вхождение курсора в пределы виджета |
FocusIn |
Получение фокуса окном |
FocusOut |
Потеря фокуса окном |
KeyPress |
Нажатие клавиши на клавиатуре |
KeyRelease |
Отжатие клавиши на клавиатуре |
Leave |
Выход курсора за пределы виджета |
Motion |
Движение мыши в пределах виджета |
MouseWheel |
Прокрутка колесика мыши |
Reparent |
Изменение родителя окна |
Visibility |
Изменение видимости окна |
""
или просто "<3>"3>
— щелчок правой кнопки мыши (то есть, третьей, если считать на трехкнопочной мыши слева–направо). ""
— двойной щелчок мышью (левой кнопкой) с нажатой кнопкой Shift. В
качестве модификаторов могут быть использованы следующие (список
неполный):Control
, Shift
, Lock
,Button1
–Button5
или B1
–B5
,Meta
, Alt
, Double
, Triple
.Просто символ обозначает событие — нажатие клавиши. Например, «
k
» — тоже, что ""
. Для неалфавитно–цифровых клавиш есть специальные названия:Cancel
, BackSpace
, Tab
, Return
, Shift_L
, Control_L
, Alt_L
,Pause
, Caps_Lock
, Escape
, Prior
, Next
, End
, Home
, Left
,Up
, Right
, Down
, Print
, Insert
, Delete
, F1
, F2
, F3
, F4
, F5
, F6
, F7
,F8
, F9
, F10
, F11
, F12
, Num_Lock
, Scroll_Lock
, space
, less
Здесь
обозначает пробел, а
— знак меньше.
,
,
,
— стрелки.
,
— это PageUp и PageDown. Остальные клавиши более или менее соответствуют надписям на стандартной клавиатуре.Примечание: Следует заметить, что
Shift_L
, в отличие от Shift
, нельзя использовать как модификатор.В конкретной среде комбинации, означающие что–то особенное в системе, могут не дойти до графического приложения. Например, известный всем Ctrl–Alt–Del.
Следующая программа позволяет печатать направляемые виджету события, в частности — keysym, а также анализировать, как различные клавиши можно представить в шаблоне события:
from Tkinter import *
tk = Tk() # основное окно приложения
txt = Text(tk) # текстовый виджет, принадлежащий окну tk
txt.pack() # располагается менеджером pack
# функция обработки события
def event_info(event):
txt.delete("1.0", END) # удаляется с начала до конца текста
for k in dir(event): # цикл по атрибутам события
if k[0] != "_": # берутся только неслужебные атрибуты
# готовится описание атрибута события
ev = "%15s: %s\n" % (k, repr(getattr(event, k)))
txt.insert(END, ev) # добавляется в конец текста
# привязывается виджету txt функция event_info для обработки событий,
# соответствующих шаблону
txt.bind("", event_info)
tk.mainloop() # главный цикл обработки событий
При нажатии клавиши Esc в окне можно увидеть примерно следующее:
char: '\x1b'
delta: 9
height: 0
keycode: 9
keysym: 'Escape'
keysym_num: 65307
num: 9
send_event: False
serial: 159
state: 0
time: -1072960858
type: '2'
widget:
width: 0
x: 83
x_root: 448
y: 44
y_root: 306
Следует объяснить некоторые из этих атрибутов:
•
char
Нажатый символ (для некоторых событий — ??)•
height
, width
Высота и ширина.•
focus
Был ли в момент события фокус у окна?•
keycode
Код символа (скан–код клавиатуры).•
keysym
Символическое имя клавиши.•
serial
Серийный номер события. Увеличивается по мере возникновения событий.•
time
Время возникновения события. Все время увеличивается.•
widget
Виджет, в котором возникло событие.•
x
, y
Координаты указателя в виджете во время события.•
x_root
, y_root
Координаты указателя на экране во время события.В принципе, совсем необязательно, чтобы события обрабатывал тот же виджет, который их первично принял. Например, можно перенаправить все события внутри подчиненных виджетов на данный виджет с помощью метода
grab_set()
(grab_release()
освобождает виджет от этой обязанности). В Tk существуют и другие
возможности управления событиями, которые можно изучить по документации.
вторник, 19 декабря 2017 г.
Ресуры для начинающих программистов
Чем заняться после работы: языки и среды программирования для самых маленьких
Тест: насколько хорошо вы разбираетесь в Python?
Подборка книг о языке Python для программистов любого уровня
Где искать ответы на свои вопросы: 10 лучших ресурсов с ответами на программистские «почему» и «как»
10 полезных ресурсов для обучения Python
Самоучитель Python
Тест: насколько хорошо вы разбираетесь в Python?
Подборка книг о языке Python для программистов любого уровня
Где искать ответы на свои вопросы: 10 лучших ресурсов с ответами на программистские «почему» и «как»
10 полезных ресурсов для обучения Python
Самоучитель Python
Шифрование и криптография в Python
Ссылки на ресурсы про реализацию криптографических алгоритмов на языке Python:
Криптография для самых маленьких: шифрование с примерами на Python
10 популярных кодов и шифров
Взламываем шифры с Python
Шифрование и криптография в Python
Python Cryptography Toolkit
Материалы по криптографии
python / Безопасность и криптография
Криптография для самых маленьких: шифрование с примерами на Python
10 популярных кодов и шифров
Взламываем шифры с Python
Шифрование и криптография в Python
Python Cryptography Toolkit
Материалы по криптографии
python / Безопасность и криптография
Построение сценария игры с помощью карт Проппа
На занятиях я говорил о картах Проппа, как методе составления сценария сказки или игры.
Фольклорист Владимир Яковлевич Пропп подробно изучал сказки народов мира, анализировал сотни сюжетов и выделил 31 функциональный элемент,
без которых не обходится ни одно сказочное произведение. Не
обязательно, что они все вместе будут присутствовать в сказке, иногда
нарушается их последовательность, но идея, содержание сказки при этом не
страдают.
Дж. Родари сократил число этих функций до 20:
- запрет или предписание;
- нарушение;
- вредительство;
- отъезд героя;
- задача;
- встреча с дарителем;
- волшебные дары;
- появление героя;
- сверхъестественные свойства антигероя;
- борьба;
- победа;
- возвращение домой;
- прибытие домой;
- ложный герой;
- трудные испытания;
- ликвидация беды;
- узнавание героя;
- изобличение ложного героя;
- наказание ложного героя;
- Свадьба или счастливый конец.
Все функциональные элементы в реальном сценарии определяются конкретным образом, например, могут быть выбраны из списка возможных реализаций. даже небольшое количество вариантов для каждого элемента дает огромное множество сценариев.
Здесь приведен
список основных мотивов, выделенных исследователем Проппом с вариантами их реализаций:
1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с вводных слов "давным-давно", "жили-были", "в тридесятом царстве").
2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона", "дожди перестали лить, и наступила засуха").
3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей водицы").
4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется новое лицо — антагонист, вредитель).
5. Герой покидает дом (при этом герой может либо отправляться, отсылаться из дома, скажем, с благословения родителей разыскивать сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь в лес, либо уходить из дома, превратившись в козлика после того, как запрет нарушен).
6. Появление друга-помощника (серый волк, кот в сапогах).
7. Способ достижения цели (это может быть полет на ковре-самолете, использование меча-кладенца и т.п.).
8. Враг начинает действовать (змей похищает царевну, колдунья отравляет яблоко).
9. Одержание победы (разрушение злых чар, физическое уничтожение антагониста — Змея, Кощея Бессмертного, победа в состязании).
10. Преследование (какая сказка, как и детектив, обходится без погони? Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо Окаянное и прочие, не менее "симпатичные" персонажи).
11. Герой спасается от преследования (прячась в печку, превращаясь в кого-то или с помощью волшебных средств и преодолевая огромные расстояния).
12. Даритель испытывает героя. И тут появляется новый персонаж – волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает девушке задание выполнить домашнюю работу, Змей предлагает герою поднять тяжелый камень.
13. Герой выдерживает испытание дарителя (все очевидно).
14. Получение волшебного средства (оно может передаваться, изготовляться, покупаться, появляться неведомо откуда, похищаться, даваться дарителем).
15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает, дракон прячется обратно в пещеру).
16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем Горынычем, иногда состязание или игра в карты).
17. Враг оказывается поверженным (в сказках антагониста не только побеждают в бою или состязании, но и изгоняют или уничтожают с помощью хитрости).
18. Героя метят (метку наносят на тело или дают особый предмет - кольцо, полотенце, образок, он что-то забирает у поверженного врага).
19. Герою дают сложное задание (достать перстень со дна моря; соткать ковер; построить дворец за одну ночь; принести то, не знаю что). 20. Герой исполняет задание (а как же иначе?).
21. Герою дается новый облик (частый прием -погружение в кипящую воду или горячее молоко, которое делает героя еще краше).
22. Герой возвращается домой (обычно это происходит в тех же формах, что и прибытие, но это может быть и победный прилет на поверженном драконе).
23. Героя не узнают дома (иногда вследствие произошедших с ним внешних изменений, наведенного заклятья, увечья, взросления).
24. Появляется ложный герой (то есть тот, кто выдает себя за героя или присваивает себе его заслуги).
25. Разоблачение ложного героя (это может произойти в результате специальных испытаний или свидетельства авторитетных лиц). 26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с позором изгоняется, а нашего персонажа принимает в объятия любящая королевская чета)
27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу). 28. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с вводных слов "давным-давно", "жили-были", "в тридесятом царстве").
2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона", "дожди перестали лить, и наступила засуха").
3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей водицы").
4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется новое лицо — антагонист, вредитель).
5. Герой покидает дом (при этом герой может либо отправляться, отсылаться из дома, скажем, с благословения родителей разыскивать сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь в лес, либо уходить из дома, превратившись в козлика после того, как запрет нарушен).
6. Появление друга-помощника (серый волк, кот в сапогах).
7. Способ достижения цели (это может быть полет на ковре-самолете, использование меча-кладенца и т.п.).
8. Враг начинает действовать (змей похищает царевну, колдунья отравляет яблоко).
9. Одержание победы (разрушение злых чар, физическое уничтожение антагониста — Змея, Кощея Бессмертного, победа в состязании).
10. Преследование (какая сказка, как и детектив, обходится без погони? Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо Окаянное и прочие, не менее "симпатичные" персонажи).
11. Герой спасается от преследования (прячась в печку, превращаясь в кого-то или с помощью волшебных средств и преодолевая огромные расстояния).
12. Даритель испытывает героя. И тут появляется новый персонаж – волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает девушке задание выполнить домашнюю работу, Змей предлагает герою поднять тяжелый камень.
13. Герой выдерживает испытание дарителя (все очевидно).
14. Получение волшебного средства (оно может передаваться, изготовляться, покупаться, появляться неведомо откуда, похищаться, даваться дарителем).
15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает, дракон прячется обратно в пещеру).
16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем Горынычем, иногда состязание или игра в карты).
17. Враг оказывается поверженным (в сказках антагониста не только побеждают в бою или состязании, но и изгоняют или уничтожают с помощью хитрости).
18. Героя метят (метку наносят на тело или дают особый предмет - кольцо, полотенце, образок, он что-то забирает у поверженного врага).
19. Герою дают сложное задание (достать перстень со дна моря; соткать ковер; построить дворец за одну ночь; принести то, не знаю что). 20. Герой исполняет задание (а как же иначе?).
21. Герою дается новый облик (частый прием -погружение в кипящую воду или горячее молоко, которое делает героя еще краше).
22. Герой возвращается домой (обычно это происходит в тех же формах, что и прибытие, но это может быть и победный прилет на поверженном драконе).
23. Героя не узнают дома (иногда вследствие произошедших с ним внешних изменений, наведенного заклятья, увечья, взросления).
24. Появляется ложный герой (то есть тот, кто выдает себя за героя или присваивает себе его заслуги).
25. Разоблачение ложного героя (это может произойти в результате специальных испытаний или свидетельства авторитетных лиц). 26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с позором изгоняется, а нашего персонажа принимает в объятия любящая королевская чета)
27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу). 28. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
Если вы занимаетесь с
детьми, то детям карты Проппа помогут хорошо запомнить сказку и облегчат
её пересказ.
А ВАМ САМИМ,МАМОЧКИ,ИСПОЛЬЗУЮ ДАННУЮ СХЕМУ МОЖНО СОЧИНИТЬ СКАЗКУ ПРО
СВОЕГО МАЛЫША!!!
Здесь мы приводим список основных мотивов, выделенных исследователем
Проппом:
1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с
вводных слов "давным-давно", "жили-были", "в тридесятом царстве").
2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона",
"дожди перестали лить, и наступила засуха").
3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей
водицы").
4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со
двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется
новое лицо — антагонист, вредитель).
5. Герой покидает дом (при этом герой может либо отправляться,
отсылаться из дома, скажем, с благословения родителей разыскивать
сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь
в лес, либо уходить из дома, превратившись в козлика после того, как
запрет нарушен).
6. Появление друга-помощника (серый волк, кот в сапогах).
7. Способ достижения цели (это может быть полет на ковре-самолете,
использование меча-кладенца и т.п.).
8. Враг начинает действовать (змей похищает царевну, колдунья отравляет
яблоко).
9. Одержание победы (разрушение злых чар, физическое уничтожение
антагониста — Змея, Кощея Бессмертного, победа в состязании).
10. Преследование (какая сказка, как и детектив, обходится без погони?
Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо
Окаянное и прочие, не менее "симпатичные" персонажи).
11. Герой спасается от преследования (прячась в печку, превращаясь в
кого-то или с помощью волшебных средств и преодолевая огромные
расстояния).
12. Даритель испытывает героя. И тут появляется новый персонаж –
волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает
девушке задание выполнить домашнюю работу, Змей предлагает герою
поднять тяжелый камень.
13. Герой выдерживает испытание дарителя (все очевидно).
14. Получение волшебного средства (оно может передаваться,
изготовляться, покупаться, появляться неведомо откуда, похищаться,
даваться дарителем).
15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает,
дракон прячется обратно в пещеру).
16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем
Горынычем, иногда состязание или игра в карты).
17. Враг оказывается поверженным (в сказках антагониста не только
побеждают в бою или состязании, но и изгоняют или уничтожают с помощью
хитрости).
18. Героя метят (метку наносят на тело или дают особый предмет - кольцо,
полотенце, образок, он что-то забирает у поверженного врага).
19. Герою дают сложное задание (достать перстень со дна моря; соткать
ковер; построить дворец за одну ночь; принести то, не знаю что).
20. Герой исполняет задание (а как же иначе?).
21. Герою дается новый облик (частый прием -погружение в кипящую воду
или горячее молоко, которое делает героя еще краше).
22. Герой возвращается домой (обычно это происходит в тех же формах, что
и прибытие, но это может быть и победный прилет на поверженном
драконе).
23. Героя не узнают дома (иногда вследствие произошедших с ним внешних
изменений, наведенного заклятья, увечья, взросления).
24. Появляется ложный герой (то есть тот, кто выдает себя за героя или
присваивает себе его заслуги).
25. Разоблачение ложного героя (это может произойти в результате
специальных испытаний или свидетельства авторитетных лиц).
26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с
позором изгоняется, а нашего персонажа принимает в объятия любящая
королевская чета)
27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу).
28. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
Если вы занимаетесь с
детьми, то детям карты Проппа помогут хорошо запомнить сказку и облегчат
её пересказ.
А ВАМ САМИМ,МАМОЧКИ,ИСПОЛЬЗУЮ ДАННУЮ СХЕМУ МОЖНО СОЧИНИТЬ СКАЗКУ ПРО
СВОЕГО МАЛЫША!!!
Здесь мы приводим список основных мотивов, выделенных исследователем
Проппом:
1. Жили-были. Создаем сказочное пространство. (Каждая сказка начинается с
вводных слов "давным-давно", "жили-были", "в тридесятом царстве").
2. Особое обстоятельство ("умер отец", "солнце исчезло с небосклона",
"дожди перестали лить, и наступила засуха").
3. Запрет ("не открывай оконца", "не отлучайся со двора", "не пей
водицы").
4. Нарушение запрета (персонажи сказок и в оконце выглядывают, и со
двора отлучаются, и из лужи водицу пьют; при этом в сказке появляется
новое лицо — антагонист, вредитель).
5. Герой покидает дом (при этом герой может либо отправляться,
отсылаться из дома, скажем, с благословения родителей разыскивать
сестренку, либо изгоняться, например, отец увозит изгнанную мачехой дочь
в лес, либо уходить из дома, превратившись в козлика после того, как
запрет нарушен).
6. Появление друга-помощника (серый волк, кот в сапогах).
7. Способ достижения цели (это может быть полет на ковре-самолете,
использование меча-кладенца и т.п.).
8. Враг начинает действовать (змей похищает царевну, колдунья отравляет
яблоко).
9. Одержание победы (разрушение злых чар, физическое уничтожение
антагониста — Змея, Кощея Бессмертного, победа в состязании).
10. Преследование (какая сказка, как и детектив, обходится без погони?
Героев могут преследовать гуси-лебеди, Змей Горыныч, Баба-яга, Лихо
Окаянное и прочие, не менее "симпатичные" персонажи).
11. Герой спасается от преследования (прячась в печку, превращаясь в
кого-то или с помощью волшебных средств и преодолевая огромные
расстояния).
12. Даритель испытывает героя. И тут появляется новый персонаж –
волшебник, гном, старушка, которой нужна помощь или нищий. Баба-яга дает
девушке задание выполнить домашнюю работу, Змей предлагает герою
поднять тяжелый камень.
13. Герой выдерживает испытание дарителя (все очевидно).
14. Получение волшебного средства (оно может передаваться,
изготовляться, покупаться, появляться неведомо откуда, похищаться,
даваться дарителем).
15. Отлучка дарителя (Баба яга отпускает с миром, волшебник исчезает,
дракон прячется обратно в пещеру).
16. Герой вступает в битву с врагом (иногда это открытый бой - со Змеем
Горынычем, иногда состязание или игра в карты).
17. Враг оказывается поверженным (в сказках антагониста не только
побеждают в бою или состязании, но и изгоняют или уничтожают с помощью
хитрости).
18. Героя метят (метку наносят на тело или дают особый предмет - кольцо,
полотенце, образок, он что-то забирает у поверженного врага).
19. Герою дают сложное задание (достать перстень со дна моря; соткать
ковер; построить дворец за одну ночь; принести то, не знаю что).
20. Герой исполняет задание (а как же иначе?).
21. Герою дается новый облик (частый прием -погружение в кипящую воду
или горячее молоко, которое делает героя еще краше).
22. Герой возвращается домой (обычно это происходит в тех же формах, что
и прибытие, но это может быть и победный прилет на поверженном
драконе).
23. Героя не узнают дома (иногда вследствие произошедших с ним внешних
изменений, наведенного заклятья, увечья, взросления).
24. Появляется ложный герой (то есть тот, кто выдает себя за героя или
присваивает себе его заслуги).
25. Разоблачение ложного героя (это может произойти в результате
специальных испытаний или свидетельства авторитетных лиц).
26. Узнавание героя. (И тут обнаруживается подмена. Ложный герой с
позором изгоняется, а нашего персонажа принимает в объятия любящая
королевская чета)
27. Счастливый конец (пир на весь мир, свадьба, пол царства в придачу).
28. Мораль (какой вывод можно сделать из случившейся истории).
Источник: https://www.babyblog.ru/community/post/education/1707513 © BabyBlog.ru
понедельник, 18 декабря 2017 г.
Библиотека для построения экспертной системы
PyKnow - библиотека Python для разработки экспертных систем, реализующая подход CLIPS.
Реализует продукционный подход к построению экспертной системы.
Пример экспертной системы
PROSPECTOR изнутри
Программирование на языке CLIPS
CLIPS примеры программ
Игровые стратегии и экспертная система
Продукционная модель представления знаний модель, основанная на правилах, позволяет представить знание в виде предложений типа «Если (условие), то (действие)».
Продукционная модель — фрагменты Семантической сети, основанные на временных отношениях между состояниями объектов.
Продукционная модель обладает тем недостатком, что при накоплении достаточно большого числа (порядка нескольких сотен) продукций они начинают вследствие необратимости дизъюнкций противоречить друг другу. В этом случае разработчики начинают усложнять систему, включая в неё модули нечёткого вывода или иные средства разрешения конфликтов, — правила по приоритету, правила по глубине, эвристические механизмы исключений, возврата и т. п.
Реализация логического вывода использует алгоритм Rete.
Rete — эффективный алгоритм сопоставления с образцом для продукционных систем, экспертных систем и баз знаний, созданный Чарльзом Форги из Университета Карнеги Меллона. Впервые был описан в рабочем документе 1974 года, затем в докторской диссертации 1979 и в статье 1982 года (см Ссылки).
Rete стал основой многих популярных экспертных систем, включая CLIPS, Jess, Drools, BizTalk Rules Engine и Soar.
При наивной реализации экспертная система проверяет применимость каждого правила вывода к каждому факту базы знаний, при необходимости выполняет его и переходит к следующему правилу, возвращаясь в начало при исчерпании всех правил. Даже для небольшого набора правил и фактов такой метод работает неприемлемо медленно. Алгоритм Rete обеспечивает более высокую эффективность. При использовании Rete экспертная система строит специальный граф или префиксное дерево, узлам которого соответствуют части условий правил. Путь от корня до листа образует полное условие некоторой продукции. В процессе работы каждый узел хранит список фактов, соответствующих условию. При добавлении или модификации факта он прогоняется по сети, при этом отмечаются узлы, условиям которых данный факт соответствует. При выполнении полного условия правила, когда система достигает листа графа, правило выполняется.
Реализует продукционный подход к построению экспертной системы.
Пример экспертной системы
PROSPECTOR изнутри
Программирование на языке CLIPS
CLIPS примеры программ
Игровые стратегии и экспертная система
Продукционная модель представления знаний модель, основанная на правилах, позволяет представить знание в виде предложений типа «Если (условие), то (действие)».
Продукционная модель — фрагменты Семантической сети, основанные на временных отношениях между состояниями объектов.
Продукционная модель обладает тем недостатком, что при накоплении достаточно большого числа (порядка нескольких сотен) продукций они начинают вследствие необратимости дизъюнкций противоречить друг другу. В этом случае разработчики начинают усложнять систему, включая в неё модули нечёткого вывода или иные средства разрешения конфликтов, — правила по приоритету, правила по глубине, эвристические механизмы исключений, возврата и т. п.
Реализация логического вывода использует алгоритм Rete.
Rete — эффективный алгоритм сопоставления с образцом для продукционных систем, экспертных систем и баз знаний, созданный Чарльзом Форги из Университета Карнеги Меллона. Впервые был описан в рабочем документе 1974 года, затем в докторской диссертации 1979 и в статье 1982 года (см Ссылки).
Rete стал основой многих популярных экспертных систем, включая CLIPS, Jess, Drools, BizTalk Rules Engine и Soar.
При наивной реализации экспертная система проверяет применимость каждого правила вывода к каждому факту базы знаний, при необходимости выполняет его и переходит к следующему правилу, возвращаясь в начало при исчерпании всех правил. Даже для небольшого набора правил и фактов такой метод работает неприемлемо медленно. Алгоритм Rete обеспечивает более высокую эффективность. При использовании Rete экспертная система строит специальный граф или префиксное дерево, узлам которого соответствуют части условий правил. Путь от корня до листа образует полное условие некоторой продукции. В процессе работы каждый узел хранит список фактов, соответствующих условию. При добавлении или модификации факта он прогоняется по сети, при этом отмечаются узлы, условиям которых данный факт соответствует. При выполнении полного условия правила, когда система достигает листа графа, правило выполняется.
Электронная таблица, подобная листу Excel, созданная средствами Tkinter. Для тех, кто занимается вопросом автоматической генерации пользовательского интерфейса полезно посмотреть, как сложный графический элемент SpreadSheet (Электронная таблица) заполняет себя графическими элементами Cell и Label.
A simple GUI spreadsheet in less than 100 lines of Python
A simple GUI spreadsheet in less than 100 lines of Python
четверг, 14 декабря 2017 г.
Составление расписаний
Составление расписаний
В настоящее время несколько человек предполагают развивать проекты, связанные с составлением расписаний. Вот некоторые ссылки в помощь:Как при помощи Excel автоматизировать процесс составления расписания занятий в учебном заведении
Пример программы составления расписания
Средства составления расписаний для учебного процесса
Определены требования к программе для составления расписания
Методические рекомендации к составлению расписания учебных занятий для общеобразовательных учреждений
Оцените сложность задачи и ужаснитесь ей.
Программа по составлению расписания занятий в ВУЗе
Пример программы. Интересен как пример пользовательского интерфейса.
Проблемы автоматизированного составления расписания занятий средней образовательной школы
Анализ проблемы составления расписаний занятий в ВУЗе
Можно использовать для определнения актуальности задачи
Использование возможностей программы Excel для оптимизации работы заместителя директора по УВР
Программирование в ограничениях
Использование подходов и алгоритмов искусственного интеллекта (ИИ) позволяет решать многие прикладные задачи, такие, как задачи теории расписаний, задачи проектирования экспертных систем и систем поддержки принятия решений, доказательство теорем, задачи тестирования электронных схем, обработка изображений. Одной из важных задач ИИ является задача удовлетворения ограничений (УО) (constraint satisfaction problem).Теория УО предлагает удобный аппарат и простую формальную схему для представления и решения комбинаторных задач искусственного интеллекта. Целью решения задачи УО является нахождение значений переменных, удовлетворяющих определенным ограничениям.
Удовлетворение ограничений и программирование в ограничениях
Программирование в ограничениях и недоопределенные модели
Объектно-ориентированное программирование в ограничениях
среда, 13 декабря 2017 г.
Лабиринт и разработка игр
Лабиринт
Алгоритм поиска пути в лабиринте и его реализация на Python 3.4Задача на создание программы для виртуального робота, способного быстро обходить произвольный связный лабиринт с некоторой целью
Алгоритмы генерации лабиринтов
Разработка игр
Делаем первую игру на Python: Поймай шарикИгра змейка в Tkinter
Как писать Pygame игры на Python
9 идей для начинающих программистов по созданию игр-клонов
Примеры использования онтологий
Примеры использования онтологий
Автоматизация построения приложений для мобильных платформ на базе онтологийСоздание программного инструментария формирования электронных коллекций учебно-методических материалов
Редактор навигационной структуры сайта на основе онтологий
Сервис управления рабочими программами
Интеллектуальная система проектирования веб-приложения
Управление структурой и визуальным отображением системы управления учебным процессом на основе семантической сети.
Интеллектуальная система проектирования веб-приложения
понедельник, 11 декабря 2017 г.
Библиотека для логического программирования в Python
Библиотека для логического программирования в Python Pyke
A DSL and Rules Engine for Python
onto.ruleengine
A DSL and Rules Engine for Python
onto.ruleengine
Подписаться на:
Сообщения (Atom)
Всероссийский конкурс научно-технологических проектов страница конкурса https://dm-centre.ru/sirius-konkurs-projectov Цель конкурс...
-
PyKnow - библиотека Python для разработки экспертных систем, реализующая подход CLIPS . Реализует продукционный подход к построению экспе...
-
Чем заняться после работы: языки и среды программирования для самых маленьких Тест: насколько хорошо вы разбираетесь в Python? Подборка ...
-
Научно-практическая конференция проходит в три этапа: на школьном, городском и областном уровне для учащихся 5-11 классов. На втором этап...