Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_Звіт.doc
Скачиваний:
3
Добавлен:
27.04.2019
Размер:
3.83 Mб
Скачать

3.2. Опис використовуваних методів

Головний модуль програми BuildSxemaUnit – відображення графічного інтерфейсу користувача, обробка подій миші, симуляція схеми містить в собі головну форму програми BuildSxema (рис. 3.2).

Модуль Cxema1 – відповідає за вибір та створення логічного елемента і створення зв’язків.

Модуль DrawChip – відповідає за рисування корпусу елемента, переміщення елемента.

Модуль SimpleLogicalSimulator – відповідає за створення кількості виводів елемента, типу виводу (вхід, вихід).

Модуль Bad_Element – відповідає за створення зіпсованих елементів.

Модуль Save – відповідає за збереження схем у файл та їх відкриття.

Модуль GeneticAlg – забезпечує роботу генетичного алгоритму.

Модуль BuildSxemaUnit містить процедури та функції, що описані нижче.

Функція GetNearPos (x1, y1:integer):TPoint – виконує одержання ближньої границі на елементі PaintBox. Ця функція забезпечує рівняння елементів по координатах. Тобто задається умовна сітка з кроком 10 пікселів, елемент прив’язується до цієї сітки. Таким чином задаються точні координати і більша простота виконання зв’язків. Користувачу не потрібно точно наводити лінію на вивід елемента, достатньо підвести на відстань не більше 5 пікселів і відпустити і зв’язок буде автоматично установлений.

Процедура IsExists(xx, yy : Integer) – перевіряє координати всіх елементів при додаванні нового елемента. Якщо координати попадають в область елемента, тоді елемент неможливо додати на схему. Потрібно змінити координати. Дана процедура забезпечує побудову схеми без перекриття елементів.

Процедура ShowLinkInMemo – показує всі зв’язки, які здійснені користувачем в Мemo. Використовується для більш нагляднішої роботи програми.

Процедура Clear – виконує очистку схеми. Використовується для побудови нової схеми. В цій процедурі відбувається звільнення пам’яті, знищуються всі елементи та зв’язки. Для очистки схеми потрібно ще підтвердити свої дії. Це зроблено для того, щоб випадково не знищити схему.

Процедура PaintBox1Paint(Sender: TObject) – відбувається рисування всіх елементів схеми. Виконується тоді коли відбулася зміна схеми, наприклад додання нового елементу, його переміщення, додання нової лінії. Як тільки відбувається подібна зміна, схема обновляється, тобто перерисовується.

Процедура MakeLinks – процедура створення зв’язків між елементами.

Процедура SetAllLegs(LegNum : Word;Ch:Char) – відбувається перевірка на дійсність зв’язку. Якщо лінія належить одному елементу, але не належить іншому елементу, тобто підключення немає, то такий зв’язок недійсний і не враховується. Також визначається з якого виходу і на який вхід здійснено підключення.

Функція GetChipById(ID : Word): TMicroChip – одержання номера елемента, для використання при сортуванні елементів.

Процедура SimulateCxeme – розрахунок схеми. Перебір всіх елементів. Відбувається перебір всіх приєднаних елементів і визначається номер приєднаного елементу. Елементу із більшим індексом присвоюється значення приєднаного елементу.

Модуль Сxema1.

Процедура AddElem(X, Y : integer) – виконує додавання елемента. Вибір елемента, вибір початкових значень, визначення функцій елемента.

Процедура AddLinePoint(LineNum : Word; XYZ : TPoint) – додає нову точку лінії в масив. Потім цей масив буде перерисований з всіма елементами схеми.

Процедура SortByXY – виконує сортування елементів зліва-направо, зверху-вниз. Це здійснюється для кращого оперування елементами. При сортуванні вибирається крайній лівий елемент і йому присвоюється індекс 0. Дальше йде перевірка вниз з таким самим Х, якщо елементів вже немає, тільки тоді переходимо на наступний Y. При знаходженні наступного елемента збільшуємо його номер на 1.

Модуль DrawChip.

Процедура Draw(xx, yy, X1, X2 : Integer; EType : TElementType) – виконує рисування елемента. Тобто сам елемент рисує сам свій корпус з ніжками та наглядно показує функцію, яка буде виконуватись.

Процедура MoveChip(xx, yy : Integer) – виконується для переміщення елемента.

Процедура SetLegsValue – обчислює результуючу функцію конкретного елемента.

Процедура DrawLine(lCanvas:TCanvas) – виконує рисування лінії. Бере значення з масиву XYArr. Лінію малює прямокутним кутом. Спочатку ставимо одну точку і перетягуємо мишку, де створюється друга точка (кінцева). Середню точку ставимо координатою Х першої точки та Y другої точки. Так виходить прямий кут.

Модуль SimpleLogicalSimulator.

Клас TLeg відповідає за виводи елемента.

Властивість State : TLegStates read fState write fState – визначає стан виводу. Він може бути в двох значеннях вхідний вивід і вихідна.

Конструктор Create(AOwner:TObject; LegType : TLegStates) – створює елемент з виводами.

Модуль GeneticAlg.

Процедура FormShow(Sender: TObject) – задає надписи елементу форми StringGrid1 й ощищає поле для відображення тестової комбінації.

Процедура N1Click(Sender: TObject) – формує початкову популяцію на основі таблиці істинності, тобто вхідні значення в таблиці істинності копіює у початкову популяцію для генетичного алгоритму.

Процедура N2Click(Sender: TObject) – виконує схрещування популяції.

Процедура N3Click(Sender: TObject) – здійснює мутацію популяції.

Процедура N4Click(Sender: TObject) – оцінює здоров’я популяції на програмній моделі і здійснює відбір кращих особин на основі турнірного відбору для наступної епохи генетичного алгоритму.

Процедура N5Click(Sender: TObject) – закриває форму генетичного алгоритму.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]