Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Штучний інтелект

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Житомирський державний технологічний університет Кафедра ПЗОТ Група ЗПІК-09 Курс VI № залікової 4309022 Лабораторна робота з дисципліни «Штучний інтелект» GenAlg Лістинг файлу Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GenAlg { class Program { static void Main(string[] args) { Console.WriteLine("Vidbir: porogoviy \nSkreschuvannya: porivnyalne \nMutacia: vipadkova"); Console.WriteLine("Oblast poshuku: 0 .. 25,5"); //Console.WriteLine("Fitnes funkciya: x^4/4 - 41x^3/3 + 479x^2/2 - 1495x + C"); //Console.WriteLine("Ekstremumi: 5 13 23"); //Console.WriteLine("Korni: -3036,58333 -1841,91667 -4008,58333"); double[] znachXFF = new double[5]; //{ 1.0 / 4, -39.0 / 3, 443.0 / 2, -1365.0, 3.0 }; Console.Write("Vvedit znachennya pru X^4: "); znachXFF[0] = double.Parse(Console.ReadLine()) / 4; Console.Write("Vvedit znachennya pru X^3: "); znachXFF[1] = double.Parse(Console.ReadLine()) / 3; Console.Write("Vvedit znachennya pru X^2: "); znachXFF[2] = double.Parse(Console.ReadLine()) / 2; Console.Write("Vvedit znachennya pru X: "); znachXFF[3] = double.Parse(Console.ReadLine()); Console.Write("Vvedit znachennya C: "); znachXFF[4] = double.Parse(Console.ReadLine()); byte countPopul = 20; Random rnd = new Random(); byte[] populyacia = new byte[countPopul]; byte[] starePokolinnya = new byte[countPopul]; int[] novePokolinnya = new int[countPopul]; double[] pristStPk = new double[countPopul]; double[] pristPopul = new double[countPopul]; double[] pristNvPk = new double[countPopul]; byte[] indexPopulPrist = new byte[countPopul]; byte[] indexNvPkPrist = new byte[countPopul]; byte[] skreschuvannya = new byte[countPopul]; //ініціалізація rnd.NextBytes(populyacia); //відбір for (int i = 0; i < countPopul; i++) { pristPopul[i] = znachXFF[0]; double znachPopulFF = populyacia[i] / 10.0; for (int j = 1; j < znachXFF.Length; j++) { pristPopul[i] = pristPopul[i] * znachPopulFF + znachXFF[j]; } } for (byte i = 0; i < countPopul; i++) indexPopulPrist[i] = i; for (byte i = 0; i < countPopul; i++) { byte min = i; for (int j = i + 1; j < countPopul; j++) { if (pristPopul[indexPopulPrist[j]] < pristPopul[indexPopulPrist[min]]) min = (byte)j; } byte z = indexPopulPrist[min]; indexPopulPrist[min] = indexPopulPrist[i]; indexPopulPrist[i] = z; } for (byte i = 0; i < countPopul; i++) { starePokolinnya[i] = populyacia[indexPopulPrist[i]]; pristStPk[i] = pristPopul[indexPopulPrist[i]]; } int countIter = 1000; do { int porig = rnd.Next(countPopul); for (int i = 0; i < countPopul; i++) { skreschuvannya[i] = starePokolinnya[rnd.Next(porig)]; } //схрещування і мутація for (int i = 0; i < countPopul; i++) { int batko1 = skreschuvannya[rnd.Next(countPopul)]; int batko2 = skreschuvannya[rnd.Next(countPopul)]; novePokolinnya[i] = batko1 & batko2; int riznBatkiv = batko1 ^ batko2; bool mutacia = rnd.NextDouble() < 1.0 / 8.0; for (int j = 0; j < 8; j++) { int stepin2 = (int)Math.Pow(2, (double)j); int bit = riznBatkiv & stepin2; if (bit == stepin2 && rnd.NextDouble() > 0.5) novePokolinnya[i] = novePokolinnya[i] | stepin2; if (mutacia) { if (rnd.NextDouble() > 0.5) novePokolinnya[i] = novePokolinnya[i] | stepin2; else novePokolinnya[i] = novePokolinnya[i] & (255 - stepin2); } } } for (int i = 0; i < countPopul; i++) { pristNvPk[i] = znachXFF[0]; double znachNvPkFF = novePokolinnya[i] / 10.0; for (int j = 1; j < znachXFF.Length; j++) { pristNvPk[i] = pristNvPk[i] * znachNvPkFF + znachXFF[j]; } } for (byte i = 0; i < countPopul; i++) indexNvPkPrist[i] = i; for (byte i = 0; i < countPopul; i++) { byte min = i; for (int j = i + 1; j < countPopul; j++) { if (pristNvPk[indexNvPkPrist[j]] < pristNvPk[indexNvPkPrist[min]]) min = (byte)j; } byte z = indexNvPkPrist[min]; indexNvPkPrist[min] = indexNvPkPrist[i]; indexNvPkPrist[i] = z; } byte n = 0, s = 0; for (int i = 0; i < countPopul; i++) { if (pristStPk[s] < pristNvPk[n]) { populyacia[i] = starePokolinnya[s]; pristPopul[i] = pristStPk[s++]; } else { populyacia[i] = (byte)novePokolinnya[n]; pristPopul[i] = pristNvPk[n++]; } } for (byte i = 0; i < countPopul; i++) { starePokolinnya[i] = populyacia[i]; pristStPk[i] = pristPopul[i]; } //for (int i = 0; i < countPopul; i++) Console.WriteLine("{0}){1} = {2}",countIter, populyacia[i], pristPopul[i]); //Console.ReadLine(); } while (--countIter > 0); for (int i = 0; i < countPopul; i++) Console.WriteLine("{0}){1} = {2}", countIter, populyacia[i], pristPopul[i]); } } } Зовнішній вигляд вікна програми /
Антиботан аватар за замовчуванням

13.01.2013 15:57

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!