Новый проект AIKernel

Модераторы: DCV, Dimmy, victorst, kos, Prof1983

Re: Новый проект AIKernel

Сообщение Prof1983 » Пт май 20, 2011 3:49:53

Решил выложить на общее обозрение DocumAssistant. Программа пока ничего не делает. Выкладываю в качестве отчета о проделанной работе и для обсуждения архитектуры построения программы.

Архитектура такая: Runtime + модули. Где модули - это набор реализованных функций, которые располагаются или в составе основной программы (монолит) или в отдельных библиотеках (DLL, плагинах).

Вот небольшое описание:
Программа DocumAssistant написана на языке ObjectPascal в среде Delphi 7.
Пока что поддерживается компиляция только в Delphi 7.
После небольших доработок есть возможность компиляции на Lazarus (FreePascal) или на других версиях Delphi.

Центральной частью программы является Runtime в котором регистрируются различные модули.
Каждый модуль содержит определенный набор функций.
Модуль может быть в составе основной программы (EXE), а так же может быть вынесен отдельную библиотеку (DLL, плагин).

-- Содержимое DocumAssistant --
Bin - Скомпилированные бинарные файлы
Source - Исходные тексты для компиляции
Temp - Временные файлы. Используется при компиляции

Archive.bat - добавляет всю директорию в архив 7z
Clear.bat - очищает Temp от временных файлов
Dirinfo.txt - этот файл
License.en.txt - лицензия на программу и исходные тексты на английском языке (BSD)
License.ru.txt - лицензия на программу и исходные тексты на русском языке (BSD)
Version.txt - записана версия программы


-- Содержимое Bin --
Data - различные файлы, необходимые для работы программы

Example.adb - пример БД
DocumAssistant_Monolit.exe - выполняемый файл программы


-- Содержимое Source --
Common - Общие файлы, не привязанные к какому-либо модулю
Modules - Отдельные модули программы (включая Runtime)
Projects - Файлы проекта (DocumAssistant_Monolit.dpr)


-- Содержимое Modules --
Documents - содержит функции работы документами, как с высокоуровневыми объектами. Работает с модулем Entities.
DocumUI - интерфейс пользователя программы DocumAssistant
Entities - функции для работы с БД сущностей
Plugins - использования плагинов
Runtime - содержит в себе список подключенных модулей и функции доступа к модулям. Runtime не является модулем, а является центральной точкой подключения модулей.
Settings - функции работы с настройками (INI файл, реестр).
System - основные системные функции
UI - графический интерфейс пользователя (используется VCL/LCL)
UISettings - содержит интерфейс пользователя для доступа к настройкам (окно настроек)
UISplash - всплывающее окно, отображаемое при запуске программы
UIWorkbench - рабочее пространство (надстройка над UI)
Utils - различные утилитные функции (SysUtils)

- Файлы с перечислением функций модулей (аналоги .h файлов в Си, но с динамическим назначением адресов функций) -
AEntities0.pas
APlugins0.pas
ARuntime0.pas
ASettings0.pas
ASystem0.pas
AUI0.pas
AUISettings0.pas
AUIWorkbench0.pas
AUtils0.pas

Тут расположил страничку проекта DocumAssistant: http://aikernel.org/projects/documassis ... ex.ru.html
Вот сама программа: http://aikernel.org/files/documassistant.zip
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Prof1983 » Вс май 22, 2011 19:57:51

Написал свой ответ на вопросы, касающиеся AIAssistant, а так же касающиеся AIKernel тут:
viewtopic.php?p=28837#p28837
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Prof1983 » Сб май 28, 2011 8:49:22

У меня возникло несколько вопросов, касающихся программной реализации проекта AIKernel. В частности:
  • В каком виде лучше передавать строки, как параметры функций (PChar/char*, string(class), string(массив Delphi + доп.пред.инфо))?
  • Какой метод вызова выбрать для функций внешних и внутренних модулей (fastcall, cdecl, stdcall, pascal, safecall)?

Эти вопросы я уже рассмотрел, но не до конца уверен в правильности своего выбора. Поэтому нужен совет опытных программистов. По моему будет не очень хорошо обсуждать технические вопросы в общей куче с общими вопросами, касающимися философии AIKernel. Отсюда возникает вопрос: в каком разделе лучше задавать подобные вопросы? Или может быть с такими вопросами лучше обращаться на форумы для программистов?
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение DCV » Сб май 28, 2011 16:53:30

Prof1983 писал(а):
  • В каком виде лучше передавать строки, как параметры функций (PChar/char*, string(class), string(массив Delphi + доп.пред.инфо))?
  • Какой метод вызова выбрать для функций внешних и внутренних модулей (fastcall, cdecl, stdcall, pascal, safecall)?


Обычно выбор делается исходя из быстродействия программы, размера программы, затрат времени на программирование. В C# такого богатого выбора нет, а в С++ выбор есть из-за поддержки совместимости с предыдущими версиями языка. Проблемы с быстродействием могут возникнуть в случае кода, который много раз выполняется повторно. Строку быстрее передавать в метод по ссылке, чем копированием строки. Лучше спросите что-нибудь по С#. :)
(С) Александр Белов
Диалоговая система Думбот 2 v1.2: http://www.iknowww.ru/Products/Dumbot
Думбот 3 www.dumbot.ru

Золотой Будда не переправится через плавильный котел. Деревянный Будда не переправится через огонь. Глиняный Будда не переправится через реку.
Аватара пользователя
DCV
Эксперт ИИ
 
Сообщения: 615
Зарегистрирован: Ср апр 21, 2010 11:43:51
Откуда: Беларусь, Гомель

Re: Новый проект AIKernel

Сообщение Prof1983 » Сб май 28, 2011 17:17:42

Решил, что разводить обсуждение технических вопросов в этой ветке не стоит. Поэтому создал отдельные ветки для каждого вопроса вот здесь:
-= Ссылки на внешние ресурсы удалены из-за нарушения правил =-
Правила для размещения рекламы и ссылок на другие ресурсы:
1. Любая ссылка на внешний ресурс должна быть согласована с администратором.



To DCV:
1. Мой вопрос не про C#.
2. Передача разными методами существует не для поддержки старых методов вызова или для совместимости со старыми программами. А каждый из них имеет свои особенности (достоинства и недостатки).
3. Мой вам совет: расширяйте кругозор, прочитайте хотя бы одну книжку по компилируемым языкам программирования, не зацикливайтесь на C#. C# хороший язык, и .NET хорошая технология, но она, как и остальные имеет свою область применения.
Последний раз редактировалось Prof1983 Сб май 28, 2011 19:11:49, всего редактировалось 1 раз.
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Василий » Сб май 28, 2011 17:43:23

Prof1983 писал(а):Решил, что разводить обсуждение технических вопросов в этой ветке не стоит. Поэтому создал отдельные ветки для каждого вопроса вот здесь:
http://www.project-ai.org/forum/viewtopic.php?t=6 - Передача строковых параметров
http://www.project-ai.org/forum/viewtopic.php?t=7 - Выбор метода вызова процедур


Нарушение правил моего форума. Готов создать раздел специально для Вас и выдать права модерации.

Ссылки на Ваш форум прошу удалить добровольно.

Раздел создал, права Вам выдал.
Ищу лучшей жизни
Василий
Главный по тарелочкам
 
Сообщения: 1206
Зарегистрирован: Ср фев 07, 2007 12:22:27
Откуда: Санкт-Петербург

Re: Новый проект AIKernel

Сообщение Prof1983 » Сб май 28, 2011 19:26:07

Василий писал(а):Ссылки на Ваш форум прошу удалить добровольно.
Нарушение устранил. Ответ написал вот здесь viewtopic.php?p=28940#p28940

Василий писал(а):Раздел создал, права Вам выдал.
Спасибо
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Prof1983 » Вс май 29, 2011 8:15:41

Задал интересующие меня вопросы вот здесь
viewtopic.php?f=125&t=2325 - Выбор метода вызова процедур
viewtopic.php?f=125&t=2324 - Передача строковых параметров

Хочу попросить администраторов перенести эту тему и тему "AIKernel - AI - Категории" (viewtopic.php?t=2319) в новый раздел "Проект AIKernel" (viewforum.php?f=125)
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение DCV » Вс май 29, 2011 8:34:32

Prof1983 писал(а): Мой вам совет: расширяйте кругозор, прочитайте хотя бы одну книжку по компилируемым языкам программирования, не зацикливайтесь на C#. C# хороший язык, и .NET хорошая технология, но она, как и остальные имеет свою область применения.


У меня книга большого формата по C# 2005, содержит 1360 страниц. Многие возможности языка в этой книге описаны только обзорно. Я эту книгу до сих пор полностью не изучил. А уже вышел С# 2010. А Вы мне предлагаете дополнительно изучать другие языки.
(С) Александр Белов
Диалоговая система Думбот 2 v1.2: http://www.iknowww.ru/Products/Dumbot
Думбот 3 www.dumbot.ru

Золотой Будда не переправится через плавильный котел. Деревянный Будда не переправится через огонь. Глиняный Будда не переправится через реку.
Аватара пользователя
DCV
Эксперт ИИ
 
Сообщения: 615
Зарегистрирован: Ср апр 21, 2010 11:43:51
Откуда: Беларусь, Гомель

Re: Новый проект AIKernel

Сообщение Prof1983 » Чт июн 02, 2011 20:24:12

Решил добавить три картинки, поясняющие то, как я представляю структуру реализации функционала "модулей". Я понимаю, что картинки примитивные, так что ногами не пинайте.

По продвижению проекта могу сказать, что на данный момент идет подготовка необходимого функционала для сборки программы DocumAssistant. А именно в ближайших планах реализация таких "модулей" как DocumUI, Documents, Entities и др.
Каждый "модуль" - это обособленный набор процедур и функций.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение DCV » Пт июн 03, 2011 15:16:48

Чем Ваша программа будет лучше, чем существующие программы для хранения документации в компьютере? Я думаю, что представление документации - это глобальный вопрос выходящий за пределы интересов одного предприятия.
(С) Александр Белов
Диалоговая система Думбот 2 v1.2: http://www.iknowww.ru/Products/Dumbot
Думбот 3 www.dumbot.ru

Золотой Будда не переправится через плавильный котел. Деревянный Будда не переправится через огонь. Глиняный Будда не переправится через реку.
Аватара пользователя
DCV
Эксперт ИИ
 
Сообщения: 615
Зарегистрирован: Ср апр 21, 2010 11:43:51
Откуда: Беларусь, Гомель

Re: Новый проект AIKernel

Сообщение Irkin » Сб июн 04, 2011 8:19:29

Prof1983 писал(а):Надо подумать, поизучать, может все-таки найдется СУБД key-value под BSD или Appache/MPL.


В качестве key-value db в своих проектах я использую BerkeleyDB от Oracle. Лицензия OSL (Open Software License), либо коммерческая. Написана и доступна на С. Имеет обвертки для большинства языков более высокого уровня, в том числе Java и С#
http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html
Большинство noSql баз данных имеют в своей основе эту БД, просто накручивая на нее свой функционал.
Чтобы научиться что-то делать, надо делать это.
— Аристотель (Aristotle), Этика
Аватара пользователя
Irkin
Серьёзный посетитель
 
Сообщения: 212
Зарегистрирован: Пн янв 21, 2008 10:48:43
Откуда: Russia

Re: Новый проект AIKernel

Сообщение Prof1983 » Сб июн 04, 2011 18:18:17

Irkin писал(а):BerkeleyDB от Oracle
Да. Рассматривал ее. У нее хорошая архитектура и т.д. Но она не подойдет для AIKernel, т.к. лицензию на BDB нельзя назвать свободной. Она не позволяет коммерческое использование. А платное коммерческое использование стоит очень дорого. Так что не подойдет.

Вообще вопрос с БД пока не очень актуален. Пока в общем-то нечего хранить. Я планирую вернуться к вопросу поиска свободного движка БД когда появится реальная потребность. Пока же буду делать хранение в простом бинарном файле с загрузкой при необходимости (или целиком при старте) в оперативную память.
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Prof1983 » Чт июн 09, 2011 18:17:30

Выложил обновление программки DocumAssistant.
Страничка программы с описанием: http://aikernel.org/projects/documassis ... ex.ru.html
Прямая ссылка для скачивания: http://aikernel.org/files/documassistant.zip (699 KiB)

DocumAssistant-0.3.1
Добавил в модулях фукции с передачей строковых параметров с использованием типа AString_Type. Так же сделал обертку основных функций в try-except-end.

Немного добавил функционала в модули Entities (доступ к БД) и Documents (доступ к документам). Документы здесь - это записи в БД имеющие определенную структуру.

На выходных хочу заняться рассмотрением онтологии SUMO и начать вводить в БД в виде сущностей новые онтологические элементы. Напомню, что сущность в моем понимании - это простая запись в виде последовательности байтов + уникальный идентификатор + идентификатор описания структуры данной записи.
Сущность я записываю в таком виде (файл AEntities0.pas):
Код: Выделить всё
type
  AEntity_Type = packed record
    Id: AEntityId;     // Уникальный идентификатор сущности // Сущность (номер записи в базе знаний)
    Typ: AEntityId;    // Тип сущности // Тип сущности (является идентификатором, указывающем на элемент описания этого типа)
    Data: Pointer;     // Данные сущности
    DataSize: Integer; // Размер данных
  end;


Еще хочу попробовать подключить CLIPS в виде отдельного модуля. Вроде бы особых сложностей с этим возникнуть не должно. Подготовил необходимые файлы и информацию здесь: http://aikernel.org/ai/projects/021/index.ru.html
Если кто-то заинтересуется, то может попробовать собрать clips.dll и подключить его к своей программе.
Основной источник данной теме и по исходникам CLIPS здесь: http://sourceforge.net/projects/clipsrules
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Neman » Пт июн 10, 2011 8:29:43

Prof1983 писал(а):Еще хочу попробовать подключить CLIPS в виде отдельного модуля. Вроде бы особых сложностей с этим возникнуть не должно.

А вы попробуйте :)
К Делфи я подключал когда-то. Не понравилось то, что CLIPS по сути интерпретатор.

Слава, что вы хотите получить то в итоге? Какие-то структуры, модули, нагромождения ... А по сути?
Аватара пользователя
Neman
Разбирающийся в ИИ
 
Сообщения: 453
Зарегистрирован: Вс май 06, 2007 18:30:31
Откуда: Украина, Днепропетровск

Re: Новый проект AIKernel

Сообщение Prof1983 » Пт июн 10, 2011 10:33:40

Neman писал(а):Слава, что вы хотите получить то в итоге?
В итоге хочу получить ИР. У каждого свои методы подхода к решению этой задачи. Мой подход заключается в том, чтобы создавать ИР как программу (или систему программ). В этой программе буду объединять различные программные "модули", которые будут решать свои конкретные задачки. Одним из центральных "моделей" будет общая БД (БЗ) с простым хранением записей в виде сущностей (можно назвать их фреймами).

В одной программе я хочу объединить различные подходы: и нейронные сети, и генетические алгоритмы и др. Но, на данный момент, меня больше всего интересует представление знаний в виде онтологии + онтологическая машина логического вывода. Так же интересно сделать реализацию распределенных вычислений на основе многоагентного подхода. Такой подход может использоваться и для распределенного хранения знаний.

Основные части системы ("модули") будут распространяться под свободной лицензией (BSD). Какие-то интересные в коммерческом плане "модули" смогут без каких-либо ограничений разрабатываться на основе AIKernel. Например интересным в плане коммерциализации мне видится хранение произвольной информации (данные+метаданные) в распределенном виде (на разных машинах в локальной и ил глобальной сетях).

Так же можно попробовать создать БД нормативной документации с помощью DocumAssistant и предлагать как коммерческий продукт. То есть сама программа будет свободной, а БД платной. В общем-то я этим и занимаюсь. Сейчас делаю программу, потом надо будет вводить нормативную документацию горной тематики (угольные шахты). Нормативной документации очень много, поэтому когда это будет готов - не известно.
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение Neman » Пт июн 10, 2011 15:11:03

Prof1983 писал(а):...потом надо будет вводить нормативную документацию горной тематики (угольные шахты).


Интересно. Мы в одной отрасли работаем? :)
Аватара пользователя
Neman
Разбирающийся в ИИ
 
Сообщения: 453
Зарегистрирован: Вс май 06, 2007 18:30:31
Откуда: Украина, Днепропетровск

Re: Новый проект AIKernel

Сообщение Prof1983 » Пт июн 10, 2011 15:50:22

Neman писал(а):Интересно. Мы в одной отрасли работаем? :)
Возможно. Информация обо мне тут: prof1983.info
Новый проект AiKernel
Аватара пользователя
Prof1983
Серьёзный посетитель
 
Сообщения: 206
Зарегистрирован: Ср окт 11, 2006 13:29:31
Откуда: Новосибирск

Re: Новый проект AIKernel

Сообщение DCV » Пт июн 24, 2011 16:59:54

Prof1983 писал(а):На выходных хочу заняться рассмотрением онтологии SUMO и начать вводить в БД в виде сущностей новые онтологические элементы.


Как у Вас продвигается изучение онтологии? Где можно скачать онтологию SUMO? Я тоже хочу поизучать онтологии.
(С) Александр Белов
Диалоговая система Думбот 2 v1.2: http://www.iknowww.ru/Products/Dumbot
Думбот 3 www.dumbot.ru

Золотой Будда не переправится через плавильный котел. Деревянный Будда не переправится через огонь. Глиняный Будда не переправится через реку.
Аватара пользователя
DCV
Эксперт ИИ
 
Сообщения: 615
Зарегистрирован: Ср апр 21, 2010 11:43:51
Откуда: Беларусь, Гомель

Re: Новый проект AIKernel

Сообщение victorst » Пт июн 24, 2011 18:00:29

Аватара пользователя
victorst
Полноправный участник
 
Сообщения: 1073
Зарегистрирован: Вс янв 09, 2005 22:36:18
Откуда: Россия, г.Омск

Пред.След.

Вернуться в Проект AIKernel

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


cron


Rambler's Top100 Каталог ресурсов ListTop.Ru Каталог сайтов Союз образовательных сайтов Parenting.ru - Родители семья дети ребенок

     Сайт "Искусственный интеллект" - программирование ИИ от разработчика: общение, статьи, ссылки.