одо побудованої мережі Кохонена: вагових векторів нейронів, зв'язків нейрон-нейрон і нейрон-документ. Рішення про використанні цих програмних продуктів було прийнято на основі аналізу і порівняння їх переваг перед альтернативними способами реалізації. Нижче представлена ??частина результатів аналізу: Мова програмування Java:
o Висока швидкість розробки і підтримки прикладних додатків:
§ Швидкий рефакторинг коду в IDE Eclipse;
§ Зручна налагодження додатків: можливість перегляду змінних додатки, коректне і відображення винятків часу виконання з наданням достатньої кількості інформації для виявлення ділянки коду, що містить помилку
§ Зручні методи реалізації багатопоточності, у порівнянні з багатьма іншими мовами (Deplhi, c ++, C #);
o Кросплатформеність, що дозволяє запускати отримане додаток на середовищах, що підтримують JVM (Java Virtual Machine), без докладання додаткових зусиль з підтримки даної можливості;
o Наявність драйвера JDBC для СУБД postgreSQL. Перевагами JDBC вважають:
§ Легкість розробки: розробник може не знати специфіки бази даних, з якою працює;
§ Код не змінюється при переході на іншу базу даних;
§ Не потрібно встановлювати громіздку клієнтську програму;
§К будь базі можна під'єднатися через легко описуваний URL lt; # justify gt; · СУБД postgreSQL:
o Вільне ПЗ;
o Кроссплатформенноє ПЗ;
o Концепція ACID: Atomicity - Атомарність, Consistency - Узгодженість, Isolation - Ізольованість, Durability - Довговічність;
o Підтримка посилальної цілісності;
o Підтримка транзакцій;
o Підтримка схем БД;
o Підтримка тимчасових таблиць;
o Підтримка уявлень (видів);
o Підтримка матеріалізованих представлень;
o Підтримка обчислюваних індексів;
o Підтримка часткових індексів;
o Підтримка звернених індексів;
o Підтримка індексів по бітовим картам;
o Підтримка доменів;
o Підтримка курсорів;
o Підтримка функцій, визначених користувачем;
o Підтримка тригерів;
o Підтримка збережених процедур;
o Підтримка табличних просторів.
Програмний комплекс складається з чотирьох пакетів:
1. main.engine;
2. main.trainer;
3. main.search; main.test.
7.1 Пакет main.engine
Метою даного пакету є реалізація основного функціоналу ядра системи - створення нейронної мережі, надання API для роботи з нею, зберігання базових налаштувань ядра. Пакет містить такі класи як:
· Vector - клас для представлення векторів довільної розмірності, також надає функціонал роботи з векторами:
· Обчислення відстані між векторами в евклідової метриці
· Порівняння векторів на ознака рівності
· Звернення, додавання, віднімання, обчислення квадрата скалярного твори, обчислення квадрата норми
· масштабування і нормалізація вектора
· DataObject extends Vector - клас, екземпляри якого являють собою документи колекції у векторній формі. Містить в собі посилання на нейрон, з яким він з'єднаний зв'язком. Надає методи для забезпечення узгодженості операції додавання і видалення зв'язку нейрон-документ (при цьому мається на увазі документ, що подається екземпляром даного класу).
· Neuron extends Vector - клас нейрона мережі. Примірник даного класу містить у собі зв'язку нейрон-нейрон і нейрон-документ нейрона, акредитуючої даним об'єктом; значення середнього арифметичного для векторних уявлень документів, що містяться в даному кластері та локальної помилки нейрона. Надає методи, що дозволяють додавати, видаляти і змінювати зв'язку нейрон-нейрон і нейрон-документ, що забезпечують узгодженість вкладених структур даних; дані методи також виробляють перерахунок параметрів нейрона при додаванні і видаленні зв'язків.
· Network - клас нейронної мережі Кохонена. Містить в собі посилання на всі екземпляри створених нейронів і методи роботи з ними:
· Отримання номера нейрона, найближчого до зазначеного вектору, а також другого за близькості нейрона
· Отримання нейрона ме...