📄 formmain.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace CIProject
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
dataMatrixRowCount = 150;
dataMatrixColumnCount = 5;
dataMatrix = new double[dataMatrixRowCount][];
targetMatrix = new double[dataMatrixRowCount];
for (int i = 0; i < dataMatrixRowCount; i++)
{
dataMatrix[i] = new double[dataMatrixColumnCount];
dataMatrix[i][3] = -1.0;
}
ga = new GA(this);
nn = new NN();
}
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() != DialogResult.OK)
{
return;
}
DataReader.ReadData(openFileDialog.FileName, dataMatrixRowCount, dataMatrixColumnCount, ref dataMatrix, ref targetMatrix);
updateDataGridView();
}
private void updateDataGridView()
{
this.dataGridView1.Columns.Clear();
this.dataGridView1.Rows.Clear();
for (int i = 0; i < dataMatrixColumnCount-1; i++)
{
this.dataGridView1.Columns.Add(i.ToString(), i.ToString());
}
for (int i = 0; i < dataMatrixRowCount; i++)
{
this.dataGridView1.Rows.Add();
for (int j = 0; j < dataMatrixColumnCount - 1; j++)
{
this.dataGridView1.Rows[i].Cells[j].Value = dataMatrix[i][j];
}
}
}
GA ga;
private int dataMatrixRowCount;
private int dataMatrixColumnCount;
private Double[][] dataMatrix;
private Double[] targetMatrix;
private NN nn;
public int CalculateFitness(double[] c)
{
Double[] max = new double[dataMatrixRowCount];
Double[][] output = new double[dataMatrixRowCount][];
Double m = 0;
int fitness = 0;
nn.assignWeights(c);
for (int j = 0; j < dataMatrixRowCount; j++)
{
output[j] = nn.NeuralOut(dataMatrix[j]);
}
for (int x = 0; x < dataMatrixRowCount; x++)
{
max[x] = 0;
m = output[x][0];
for (int j = 1; j < 3; j++)
{
if (m < output[x][j])
{
max[x] = j;
m = output[x][j];
}
}
max[x]++;
}
for (int x = 0; x < dataMatrixRowCount; x++)
{
if ((targetMatrix[x] - max[x]) == 0.0)
{
fitness++;
}
}
return fitness;
}
private void button2_Click(object sender, EventArgs e)
{
nn.createNetwork(4, 2, 3, 1);
ga.Initialize();
}
private void button3_Click(object sender, EventArgs e)
{
for (int i = 0; i < 500; i++)
{
this.ga.Iteration();
}
MessageBox.Show(this.CalculateFitness(this.ga.Best).ToString());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -