Автор работы: Пользователь скрыл имя, 31 Декабря 2010 в 00:58, курсовая работа
Принятие решения в большинстве случаев заключается в генерации всех возможных альтернатив, их оценке и выборе лучшей среди них. Принять "правильное" решение - значит выбрать такой вариант из числа возможных, в котором с учетом всех разнообразных факторов и противоречивых требований будет оптимизирована некая общая ценность, то есть решение будет в максимальной степени способствовать достижению поставленной цели.
ВВЕДЕНИЕ 5
1 МОДЕЛИРОВАНИЕ РАБОТЫ НЕЙРОННОЙ СЕТИ 6
2 АЛГОРИТМ ОБРАТНОГО РАСПРОСТРОНЕНИЯ ОШИБКИ 10
3 ГЕНЕТИЧЕСКИЙ АЛГОРИТМ 15
4 ЭФФЕКТИВНОСТЬ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ 22
4.1 Показатели эффективности генетических алгоритмов 22
4.2 Скорость работы генетических алгоритмов 22
4.3 Устойчивость работы генетических алгоритмов 24
4.4 Направления развития генетических алгоритмов 27
ЗАКЛЮЧЕНИЕ 30
СПИСОК ЛИТЕРАТУРЫ 31
ПРИЛОЖЕНИЕ 32
for (int j = 0; j < W[rnd1].Length; j++)
{
temp[
}
for (int i = 0; i < W.Length; i++)
{
temp2[
W[i][
}
for (int j = 0; j < W[rnd1].Length; j++)
{
W[
}
if (s > 500)
s = 0;
else
s++;
}
static double[][][] Screshivanie(double[][] W1, double[][] W2)//оператор скрещивания, возвращает двух потомков
{
Random rnd = new Random(s);
int rnd1 = rnd.Next(0,5);
double[] temp = new double[W1[0].Length];
double[][][] resultW = new double[2][][];//для двух потомков
double[][][] resultW_temp = new double[2][][];
resultW[0] = new double[W1.Length][];
resultW[1] = new double[W1.Length][];
resultW_
resultW_
int rnd2 = rnd.Next(0, 5);
for (int i = 0; i < W1.Length; i++)
{
result
result
result
result
for (int j = 0; j < W1[i].Length; j++ )
{
}
}
//меяет
//проверяем
bool[] str1 = new bool[resultW_temp[0].Length];
bool[] str2 = new bool[resultW_temp[0].Length];
for (int i = 0; i < resultW_temp[0].Length; i++)
{
str1[
str2[
}
for (int i = 0; i < resultW_temp[0].Length; i++)
{
for (int j = 0; j < resultW_temp[0][i].Length; j++)
{
}
}
for (int i = 0; i < resultW_temp.Length; i++)
{
for (int j = 0; j < resultW_temp[0].Length; j++)
{
}
}
if (!str1[rnd1])//если случайные строки не равны
{
for (int j = 0; j < resultW_temp[0].Length; j++)
{
}
}
else
{
//
for (int i = 0; i < resultW_temp.Length; i++)
{
}
}
if (s > 500)
s = 0;
else
s++;
return resultW;
}
static SandY neuro(double[][] X, double[][] W)//типа нейрон
{
SandY result;
double alfa = 1;//коэфицент сигмоидности
result.S = 0;//результирующая сумма
for (int i = 0; i < X.Length; i++)
{
for (int j = 0; j < X[i].Length; j++)
{
}
}
result.Y = 1 / (1 + Math.Exp(alfa * result.S));//функция активизации
return result;
}
static void Main(string[] args)
{
double[][] input_x0 = new double[5][];
double[][] input_x1 = new double[5][];
double[][][] weight = new double[2][][];//веса
для двух нейрон
for (int i = 0; i < 5; i++)
{
input_
input_
}
int seed = 0;
for (int n = 0; n < 2; n++)//заполняем веса случайными значениями от 0,0 до 1,0
{
weight
for (int i = 0; i < 5; i++)
{
}
}
//
input_x0[0][
input_x0[0][
input_x0[0][
input_x0[0][
input_x0[0][
input_x0[1][
input_x0[1][
input_x0[1][
input_x0[1][
input_x0[1][
input_x0[2][
input_x0[2][
input_x0[2][
input_x0[2][
input_x0[2][
input_x0[3][
input_x0[3][
input_x0[3][
input_x0[3][
input_x0[3][