Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик ЭВМиВС мой.doc
Скачиваний:
3
Добавлен:
15.09.2019
Размер:
2.63 Mб
Скачать
  1. Вычислительный эксперимент

3.1 Программа разработанная на языке с#.

При запуске вызываем Windows окно. Ознакомившись, вводим данные с клавиатуры, требуемые программой. Вычислительный эксперимент представлен на рисунке 5.

Рисунок 5 - Результат работы программы, представленный в Windows окне

При неправильном использовании возникают ошибки, представленные на рисунках 6, 7.

Рисунок 6 – Ошибки при вводе данных

Рисунок 7 – Ошибки при вводе данных

3.2 Программа разработанная на микроконтроллер.

На микроконтроллер, с заранее установленной прошивкой, требуется только лишь подать питание, подключив USB-кабель к отладочной плате, и наблюдать за результатом, так как основное управление происходит с ПК.

Вычислительный эксперимент представлен на рисунках 8, 9.

Рисунок 8 – Результат вычислительного эксперимента.

Рисунок 9 – Результат вычислительного эксперимента.

  1. Руководство программиста

4.1 Назначение и условия применения программы

Программа предназначена для распознавания двух классов чисел.

Для запуска этой программы необходимо иметь на компьютере установленную версию Windows XP/Vista/7. Данная программа разрабатывалась в среде MSVisualC# 2010(Microsoft .NET Framework 4.0).

4.2 Характеристика программы

4.2.1 Программа для ПК.

Для написания программы нам понадобились следующие команды:

Получение числовых значений из текстовых полей:

neyr1 = Convert.ToInt32(textBox1.Text); (cм. Приложение А)

Вывод окошка:

MessageBox.Show("Введите количество нейронов первого слоя");

(cм. Приложение А)

Чтение содержимого файла:

text = File.ReadAllLines("1-1.txt"); (cм. Приложение А)

Сброс текстбокса:

textBox1.Clear(); (cм. Приложение А)

В данной программе был создан класс - class Neyro, с помощью которого создается нейросеть, и затем ведется работа с ней.

Класс содержит следующие переменные:

public double[] prom, vvod;

public double[,] w1, w2;

public double[] rez;

public int count1=0, count2=0;

public int neyr1, neyr2;

public int[] ogid;

public bool[] ogid1, ogid2;

public double k, skor;

public double[] err_m = new double[100]; (cм. Приложение А)

Значениям переменных neyr1, neyr2 присваивается значение количества нейронов в первом и втором слоях нейросети соответственно.

Массив vvod заполняется из файла с входными данными. Далее вычисляются значения массивов prom и rez. Массив prom – это результаты выходов нейронов первого слоя. А массив rez – результаты выходов нейросети.

Так же в классе используются методы:

public int[] Vihod(int kol, int kl) - метод, формирующий целевой вектор.

public void Korekt() - метод, коректирующий синапсы.

public void Rez() – метод вычисления результата нейросети.

public void CreateNS() – метод, создающий нейросеть.

public void Obuchenie(string file, StreamWriter sw1) – метод, обучающий нейросеть определенному классу чисел.

Для установки соединения по интерфейсу RS-232 использовался класс SerialPort и в частности следующие методы:

Open() - установление соединения.

Close() – завершение соединения.

ReadLine() – чтение данных, пришедших по интерфейсу RS-232.

WriteLine(string ) – отправка данных по интерфейсу RS-232.

Текст программы класса представлен в Приложении А.

Правильность работы класса и программы в целом подтверждена вычислительным экспериментом. (см. рисунки 5-9).

4.2.2 Программа для микроконтроллера.

Программа для микроконтроллера написана на языке С. В этом языке программирования нет классов, поэтому для создания модели нейросети использовалась структура:

typedef struct

{

double vvod[Amount_Vvod];

double prom[Neyr1];

double rez[Neyr2];

double w1[Amount_Vvod][Neyr1];

double w2[Neyr1][Neyr2];

double k;

int ogid1[Neyr2];

int ogid2[Neyr2];

}Neyro;

vvod – массив входных значений нейросети.

prom – массив выходных значений первого слоя нейросети.

rez – массив выходных значений нейросети.

w1 – матрица весовых коэффициентов первого слоя.

w2 – матрица весовых коэффициентов второго слоя.

k – коэффициент активационной функции (сигмоид).

ogid1 – массив значений, ожидаемых на выходе, при подаче на вход чисел первого класса.

ogid2 – массив значений, ожидаемых на выходе, при подаче на вход чисел второго класса.