DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Лабораторна робота №5: Дослідження та моделювання марківського процесу прийняття рішень

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Не вказано

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

Рік:
2014
Тип роботи:
Лабораторна робота
Предмет:
теорія інтелектуальних систем
Група:
КН-11
Коротко про документ

Про що ця робота

У роботі досліджено модель марківського процесу прийняття рішень та запрограмовано імітаційне моделювання для агентів. Проведено обчислення станів, оптимальної стратегії та середніх значень результатів симуляції.

У роботі розглядаються

  • Марківські процеси прийняття рішень
  • Імітаційне моделювання
  • Інтелектуальні системи
  • Оптимальна стратегія
  • Програмний код мовою С
  • Алгоритми пошуку

Зміст і розділи

  1. Мета роботи
  2. Програмна реалізація агента
  3. Симуляція та обчислення
  4. Результати та висновки
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Бочкарьов

Ключові поняття

марківський процесmdpагентфункція цінностісимуляціядисперсіяітераціястратегіясередовищестани

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

‘МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”  Лабораторна робота №5 з дисципліни " Теорія інтелектуальних систем" Львів – 2014 НАЗВА: Дослідження та моделювання марківського процесу прийняття рішень (Markov Decision Process, MDP). МЕТА: Дослідити модель марківського процесу прийняття рішень (Markov Decision Process, MDP). N Кількість станів MDP Кількість доступних агенту дій  8 4 3   void initPerfectAgent (void) { int i,j,z; float sum=0.0f,V[200]; // perform value iteration --> optimal value function V*(s) for (z=0; z < nS; z++) V[z] = 1.0f; for (t=0; t < T*30; t++) { for (i=0; i < nS; i++) { for (j=0; j < nA; j++) { sum = 0.0f; for (z=0; z < nS; z++) sum = sum + mdpT[i][j][z] * V[z]; Qsa[i][j] = mdpR[i][j] + gammaVI * sum; } V[i] = max(Qsa[i],nA); } } // determine the optimal policy given the optimal value function for (i=0; i < nS; i++) { for (j=0; j < nA; j++) { sum = 0.0f; for (z=0; z < nS; z++) sum = sum + mdpT[i][j][z] * V[z]; Qsa[i][j] = mdpR[i][j] + gammaVI * sum; } paction[i] = argmax(Qsa[i],nA); } } // ---------------------------------------------------------------------------- // init agent void initAgent (int _ag) { // int i; switch (_ag) { case 0: break; case 1: initPerfectAgent(); break; default: printf("lab3 error: wrong agent code specified\n"); } } // ---------------------------------------------------------------------------- // random agent int randomAgent (void) { return uRand(nA); } // ---------------------------------------------------------------------------- // perfect agent (for MDP) int perfectAgent (void) { return paction[mdpState]; } // ---------------------------------------------------------------------------- // agent int agent (int _ag) { int _a = 0; switch (_ag) { case 0: _a = randomAgent(); break; case 1: _a = perfectAgent(); break; default: printf("lab3 error: wrong agent code specified\n"); } return _a; } // ---------------------------------------------------------------------------- // simulation void simulation (int _i) { initAgent(agt); sumR = 0.0f; avrR = 0.0f; for (t=0; t < T; t++) { // get action of agent action = agent(agt); // get response of environment response = environment(env); // calculate cumulative results sumR = sumR + (float)response; avrR = sumR / ((float)t + 1); // save results _sumR[t][_i] = sumR; _avrR[t][_i] = avrR; } } // ---------------------------------------------------------------------------- // get mean values of simulation results void getMeanValues (void) { for (t=0; t < T; t++) { float tmps1 = 0.0f; float tmps2 = 0.0f; for (int i=0; i < n; i++) { tmps1 += _sumR[t][i]; tmps2 += _avrR[t][i]; } sumRm[t] = (float)tmps1 / (float)n; avrRm[t] = (float)tmps2 / (float)n; } } // ---------------------------------------------------------------------------- // get variances of simulation results void getVarianceValues (void) { 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); //sumRv[t] = (float)tmps1 / (float)n; //avrRv[t] = (float)tmps2 / (float)n; } } // ---------------------------------------------------------------------------- // main int main(int argc, char* argv[]) { int i; // init random-number generator srand((unsigned)time(NULL)); // init environment mdpInit(); // 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(); return 0; }  Рис.1 Діаграма для PA, RA Висновок: на цій лабораторній роботі я дослідив модель марківського процесу прийняття рішень.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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