DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
ЗІ
Кафедра:
Кафедра ЕОМ

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

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інтелектуальні системи

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЕОМ ЗВІТ до лабораторної роботи №3 на тему: «Моделювання простих форм цілеспрямованої поведінки. Дослідження роботи стохастичного автомату зі змінною структурою у випадковому середовищі з перемиканням станів» з дисципліни: «Теорія інтелектуальних систем» Львів – 2015 Мета роботи: Змоделювати та дослідити роботу стохастичного автомату зі змінною структурою у випадковому середовищі з перемиканням станів. Хід роботи: 1. Реалізувати модель випадкового середовища з перемиканням станів E (кількість станів обрати згідно варіанту). Автомат задається двома матрицями: П+ і П–. Відповідно матриця П+ містить ймовірності переходу зі стану в стан після отримання сигналу про виграш, а матриця П– містить ймовірності переходу зі стану в стан після отримання сигналу про програш. Це квадратні матриці (n·m)x(n·m), де n - кількість дій автомату, а m — глибина пам'яті автомату (для всіх варіантів обрати m=100). Таким чином для кожної з n дій виділяється m станів (якщо автомат знаходиться в одному з цих станів, то він виконує відповідну дію). W2 => Середній виграш N Модель оптимальної поведінки Кількість станів середовища Кількість доступних агенту дій  5 W2 3 3   2. Фрагмент тексту програми обчислювального експерименту: double rk1_ti_step(double x, double t, double h, double q, double fi(double x), double gi(double x), int *seed) { double a21; double k1; double q1; double t1; double w1; double x1; double xstar; a21 = 1.0; q1 = 1.0; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fi(x1) + h * gi(x1) * w1; xstar = x1 + a21 * k1; return xstar; } double rk2_ti_step(double x, double t, double h, double q, double fi(double x), double gi(double x), int *seed) { a21 = 1.0; a31 = 0.5; a32 = 0.5; q1 = 2.0; q2 = 2.0; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fi(x1) + h * gi(x1) * w1; t2 = t1 + a21 * h; x2 = x1 + a21 * k1; w2 = r8_normal_01(seed) * sqrt(q2 * q / h); k2 = h * fi(x2) + h * gi(x2) * w2; xstar = x1 + a31 * k1 + a32 * k2; return xstar; } double rk3_ti_step(double x, double t, double h, double q, double fi(double x), double gi(double x), int *seed) a21 = 1.52880952525675; a31 = 0.0; a32 = 0.51578733443615; a41 = 0.53289582961739; a42 = 0.25574324768195; a43 = 0.21136092270067; q1 = 1.87653936176981; q2 = 3.91017166264989; q3 = 4.73124353935667; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fi(x1) + h * gi(x1) * w1; t2 = t1 + a21 * h; x2 = x1 + a21 * k1; w2 = r8_normal_01(seed) * sqrt(q2 * q / h); k2 = h * fi(x2) + h * gi(x2) * w2; t3 = t1 + a31 * h + a32 * h; x3 = x1 + a31 * k1 + a32 * k2; w3 = r8_normal_01(seed) * sqrt(q3 * q / h); k3 = h * fi(x3) + h * gi(x3) * w3; xstar = x1 + a41 * k1 + a42 * k2 + a43 * k3; return xstar; } double rk4_ti_step(double x, double t, double h, double q, double fi(double x), double gi(double x), int *seed) { a21 = 2.71644396264860; a31 = -6.95653259006152; a32 = 0.78313689457981; a41 = 0.0; a42 = 0.48257353309214; a43 = 0.26171080165848; a51 = 0.47012396888046; a52 = 0.36597075368373; a53 = 0.08906615686702; a54 = 0.07483912056879; q1 = 2.12709852335625; q2 = 2.73245878238737; q3 = 11.22760917474960; q4 = 13.36199560336697; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fi(x1) + h * gi(x1) * w1; t2 = t1 + a21 * h; x2 = x1 + a21 * k1; w2 = r8_normal_01(seed) * sqrt(q2 * q / h); k2 = h * fi(x2) + h * gi(x2) * w2; t3 = t1 + a31 * h + a32 * h; x3 = x1 + a31 * k1 + a32 * k2; w3 = r8_normal_01(seed) * sqrt(q3 * q / h); k3 = h * fi(x3) + h * gi(x3) * w3; t4 = t1 + a41 * h + a42 * h + a43 * h; x4 = x1 + a41 * k1 + a42 * k2; w4 = r8_normal_01(seed) * sqrt(q4 * q / h); k4 = h * fi(x4) + h * gi(x4) * w4; xstar = x1 + a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4; return xstar; } double rk1_tv_step(double x, double t, double h, double q, double fv(double t, double x), double gv(double t, double x), int *seed) { double a21; double k1; double q1; double t1; double w1; double x1; double xstar; a21 = 1.0; q1 = 1.0; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fv(t1, x1) + h * gv(t1, x1) * w1; xstar = x1 + a21 * k1; return xstar; } double rk2_tv_step(double x, double t, double h, double q, double fv(double t, double x), double gv(double t, double x), int *seed) { a21 = 1.0; a31 = 0.5; a32 = 0.5; q1 = 2.0; q2 = 2.0; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fv(t1, x1) + h * gv(t1, x1) * w1; t2 = t1 + a21 * h; x2 = x1 + a21 * k1; w2 = r8_normal_01(seed) * sqrt(q2 * q / h); k2 = h * fv(t2, x2) + h * gv(t2, x2) * w2; xstar = x1 + a31 * k1 + a32 * k2; return xstar; } double rk4_tv_step(double x, double t, double h, double q, double fv(double t, double x), double gv(double t, double x), int *seed) { ; a21 = 0.66667754298442; a31 = 0.63493935027993; a32 = 0.00342761715422; a41 = -2.32428921184321; a42 = 2.69723745129487; a43 = 0.29093673271592; a51 = 0.25001351164789; a52 = 0.67428574806272; a53 = -0.00831795169360; a54 = 0.08401868181222; q1 = 3.99956364361748; q2 = 1.64524970733585; q3 = 1.59330355118722; q4 = 0.26330006501868; t1 = t; x1 = x; w1 = r8_normal_01(seed) * sqrt(q1 * q / h); k1 = h * fv(t1, x1) + h * gv(t1, x1) * w1; t2 = t1 + a21 * h; x2 = x1 + a21 * k1; w2 = r8_normal_01(seed) * sqrt(q2 * q / h); k2 = h * fv(t2, x2) + h * gv(t2, x2) * w2; t3 = t1 + a31 * h + a32 * h; x3 = x1 + a31 * k1 + a32 * k2; w3 = r8_normal_01(seed) * sqrt(q3 * q / h); k3 = h * fv(t3, x3) + h * gv(t3, x3) * w3; t4 = t1 + a41 * h + a42 * h + a43 * h; x4 = x1 + a41 * k1 + a42 * k2 + a43 * k3; w4 = r8_normal_01(seed) * sqrt(q4 * q / h); k4 = h * fv(t4, x4) + h * gv(t4, x4) * w4; xstar = x1 + a51 * k1 + a52 * k2 + a53 * k3 + a54 * k4; return xstar; } double r8_normal_01(int *seed) { # define R8_PI 3.141592653589793 double r1; double r2; static int seed1 = 0; static int seed2 = 0; static int seed3 = 0; static int used = 0; double v1; static double v2 = 0.0; if ((used % 2) == 1) { if (*seed != seed2) { used = 0; seed1 = 0; seed2 = 0; seed3 = 0; v2 = 0.0; } } if ((used % 2) == 0) { seed1 = *seed; r1 = r8_uniform_01(seed); if (r1 == 0.0) { cerr << "\n"; cerr << "R8_NORMAL_01 - Fatal error!\n"; cerr << " R8_UNIFORM_01 returned a value of 0.\n"; exit(1); } seed2 = *seed; r2 = r8_uniform_01(seed); seed3 = *seed; *seed = seed2; v1 = sqrt(-2.0 * log(r1)) * cos(2.0 * R8_PI * r2); v2 = sqrt(-2.0 * log(r1)) * sin(2.0 * R8_PI * r2); } else { v1 = v2; *seed = seed3; } used = used + 1; return v1; # undef R8_PI } double r8_uniform_01(int *seed) { int i4_huge = 2147483647; int k; double r; if (*seed == 0) { cerr << "\n"; cerr << "R8_UNIFORM_01 - Fatal error!\n"; cerr << " Input value of SEED = 0.\n"; exit(1); } k = *seed / 127773; *seed = 16807 * (*seed - k * 127773) - k * 2836; if (*seed < 0) { *seed = *seed + i4_huge; } r = (double)(*seed) * 4.656612875E-10; return r; } void imestamp() { # define TIME_SIZE 40 static char time_buffer[TIME_SIZE]; const struct std::tm *tm_ptr; size_t len; std::time_t now; now = std::time(NULL); tm_ptr = std::localtime(&now); len = std::strftime(time_buffer, TIME_SIZE, "%d %B %Y %I:%M:%S %p", tm_ptr); std::cout << time_buffer << "\n"; return; # undef TIME_SIZE } int main(void) { imestamp(); double rk1_ti_step ( double x, double t, double h, double q, double fi ( double x ), double gi ( double x ), int *seed ); double rk2_ti_step ( double x, double t, double h, double q, double fi ( double x ), double gi ( double x ), int *seed ); double rk3_ti_step ( double x, double t, double h, double q, double fi ( double x ), double gi ( double x ), int *seed ); double rk4_ti_step ( double x, double t, double h, double q, double fi ( double x ), double gi ( double x ), int *seed ); double rk1_tv_step ( double x, double t, double h, double q, double fv ( double t, double x ), double gv ( double t, double x ), int *seed ); double rk2_tv_step ( double x, double t, double h, double q, double fv ( double t, double x ), double gv ( double t, double x ), int *seed ); double rk4_tv_step ( double x, double t, double h, double q, double fv ( double t, double x ), double gv ( double t, double x ), int *seed ); double r8_normal_01 ( int *seed ); double r8_uniform_01 ( int *seed ); void timestamp ( ); getch(); }{ for (t=0; t < T; t++) { float tmps1 = 0.0f; float tmps2 = 0.0f; for (int i=0; i < n; i++) { tmps1 += (sumRm[t] - _sumR[t][i]) * (sumRm[t] - _sumR[t][i]); tmps2 += (avrRm[t] - _avrR[t][i]) * (avrRm[t] - _avrR[t][i]); } sumRv[t] = (float)tmps1 / (float)(n-1); avrRv[t] = (float)tmps2 / (float)(n-1); } } // main int main(int argc, char* argv[]) { int i; srand((unsigned)time(NULL)); // init environment if (env == 0) seInit(); else ceInit(); // save parameters of experiment saveParameters(); // run experiment for random agent agt = 0; for (i=0; i < n; i++) simulation(i); getMeanValues(); getVarianceValues(); saveResultsRA(); // run experiment for perfect agent agt = 1; for (i=0; i < n; i++) simulation(i); getMeanValues(); getVarianceValues(); saveResultsPA(); // run experiment for learning automaton agt = LATYPE; for (i=0; i < n; i++) simulation(i); getMeanValues(); getVarianceValues(); saveResultsLA(); return 0; 3. Результати виконання програми:  Рис. 1. Результати обчислювального експерименту у вигляді графічної залежності Висновок: Виконавши дану лабораторну роботу, я змоделював та дослідив роботу стохастичного автомату зі змінною структурою у випадковому середовищі з перемиканням станів.
Антиботан аватар за замовчуванням

03.12.2015 14:41

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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