close

Вход

Забыли?

вход по аккаунту

?

Отчет3

код для вставкиСкачать
Белорусский Национальный Технический Университет
Кафедра САПР
Отчет по лабораторной работе № 3
"Персептрон"
Выполнили: ст. гр. 107520
Галынкин И.М.
Велинский И.И.
Проверил: Вяльцев В.Н.
Минск 2013
Теоретическая часть:
Персептрон обучается с первого момента "жизни" и "всю оставшеюся жизнь". Обучение состоит в корректировке учителем ответов персептрона. Итог выполнения программы:
Листинг программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); for (int i = 0; i < kolClass; i++)
for (int j = 0; j < kolA; j++)
arrLambd[i, j] = rand.Next(0, 11);
int[,] z = new int[kolA, 2];
for (int i = 0; i < kolA; i++)
for (int j = 0; j <= 1; j++)
z[i, j] = 0;
int randConn;
int randX;
int a = 0; while (a < n*n)
{
randConn = rand.Next(0, kolA);
if ((z[randConn, 0] == 0) || (z[randConn, 1] == 0)) {
randX = rand.Next(0, 2);
if (randX == 0) randX = -1;
if (z[randConn, 0] != 0)
z[randConn, 1] = randX;
else
z[randConn, 0] = randX;
connect[randConn, a] = randX;
a++;
}
}
MatSoed();
}
Bitmap bmp = new Bitmap(20, 20);
int[,] connect = new int[250, 400];
int[] arrY = new int[250];
Random rand = new Random();
int Q = 1;
int maxSum, maxSumI;
int kolClass = 6;
int kolA = 250;
int n = 20;
int[,] arrLambd = new int[6, 250];
public void MatSoed()
{
dataGridView1.RowCount = kolA;
dataGridView1.ColumnCount = n * n;
for (int i = 0; i < kolA; i++)
{
for (int j = 0; j < n * n; j++)
{
dataGridView1.Rows[i].Cells[j].Value = connect[i, j];
}
dataGridView1.Rows[i].HeaderCell.Value =Convert.ToString(i+1);
}
for (int i = 0; i < n * n; i++)
{
dataGridView1.Columns[i].HeaderText = Convert.ToString(i + 1);
dataGridView1.Columns[i].Width = 30;
}
lyambdaReload(); }
public void lyambdaReload()
{
dataGridView2.RowCount = kolClass;
dataGridView2.ColumnCount = kolA;
for (int i = 0; i < kolClass; i++)
{
for (int j = 0; j < kolA; j++)
{
dataGridView2.Rows[i].Cells[j].Value = arrLambd[i, j];
}
dataGridView2.Rows[i].HeaderCell.Value = Convert.ToString(i + 1);
}
for (int i = 0; i < kolA; i++)
{
dataGridView2.Columns[i].HeaderText = Convert.ToString(i + 1);
dataGridView2.Columns[i].Width = 30;
}
}
private void button1_Click(object sender, EventArgs e)
{ if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
bmp = new Bitmap(openFileDialog1.FileName); pictureBox1.Image = bmp;
}
}
private void button2_Click(object sender, EventArgs e)
{
int[] arrX = new int[n * n];
int[] arrA = new int[kolA];
int[] Sum = new int[kolClass]; int a = 0; for (int i = 0; i <n; i++)
{
for (int j = 0; j <n; j++)
{
if (bmp.GetPixel(i, j).ToArgb() == Color.Black.ToArgb())
{
arrX[a] = 1;
a++;
}
else
{
arrX[a] = 0;
a++;
}
}
} for (int i = 0; i < kolA; i++)
{
for (int j = 0; j < n * n; j++)
{
if (connect[i, j] != 0)
{
arrA[i] = arrA[i] + connect[i, j] * arrX[j];
}
}
} for (int i = 0; i < kolA; i++)
{
if (arrA[i] - Q >= 0) arrY[i] = 1;
else arrY[i] = 0;
}
for (int i = 0; i < kolA; i++)
{
for (int j = 0; j < kolClass; j++)
{
Sum[j] = Sum[j] + arrY[i] * arrLambd[j, i];
}
}
textBox1.Clear();
maxSum = Sum[0];
maxSumI = 0; for (int i = 0; i < kolClass; i++)
{
if (Sum[i] > maxSum)
{
maxSum = Sum[i];
maxSumI = i;
}
}
textBox1.Text = Convert.ToString(maxSumI);
}
private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i <kolA; i++)
{
if (arrY[i] == 1) arrLambd[maxSumI, i] = arrLambd[maxSumI, i] - 1;
}
}
private void button7_Click(object sender, EventArgs e)
{
lyambdaReload();
}
}
}
Вывод: изучили персептрон и реализовали его применение.
2
Документ
Категория
Рефераты
Просмотров
17
Размер файла
104 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа