Форум программистов, компьютерный форум CyberForum.ru

разрешение конфликтов в цепях маркова - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ нод двух чисел http://www.cyberforum.ru/cpp-beginners/thread326922.html
Помогите составить программу нахождение нод двух введенных чисел
C++ копирование файла Напишите программу копирования заданного текстового файла в другой текстовый файл с удалением пустых строк http://www.cyberforum.ru/cpp-beginners/thread326921.html
C++ midi плеер в консоли
Здравствуйте. Можно ли как-то к консольному приложению прикрутить проигрывание миди-звуков на фоне исполнения программы? Спасибо. Добавлено через 47 минут Если можно, то как?
C++ qsort
Вот код: #include <cstdio> #include <algorithm> int compare(const void *s1, const void *s2) { return strcmp((char *)s1, (char *)s2) < 0; } #define N 4
C++ текстовый файл http://www.cyberforum.ru/cpp-beginners/thread326898.html
В текстовом файле содержатся положительные целые числа, разделенные пробелами. Перепишите в другой текстовый файл максимальное количество чисел из первого файла, но чтобы их сумма не превышала заданного значения.
C++ Вывод кириллицы каким компилятором лучше пользоваться.я пользуюсь dev c++, но он в консоле не отображает все что написаное в скобках(тольуо на англиском отображает корректно).пример (i != j) cout << " i ne ravno j\n "; заранее благодарен. подробнее

Показать сообщение отдельно
grog777
Сообщений: n/a
27.06.2011, 23:37     разрешение конфликтов в цепях маркова
Надо измените переходы в рассматриваемой цепи Маркова. Именно, задать число Ps (между нулём и единицей). При возникновении конфликта "разыграйте" случайное число альфа (между 0 и 1). Если получится альфа < Ps, то отдайте ресурс 1-му процессу (переход из состояния (11) в состояние (01) или (11) в соответствие с переходами 1-го процесса, как это Вы уже делали. В противном случае (11)будет переходить в (10) или (11) (преимущество 2-го процесса).
Считать, какова стационарная вероятность простоя 1-го И 2-го процессов (в зависимости от Ps)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#include  <stdlib.h>
#include  <math.h>
#include  <time.h>
#include  <iostream>
#include  <fstream>
#include  <iomanip>
 
using namespace std;
 
void main()
{//0
 
    setlocale (LC_ALL, "Russian");
 
    int kt; //current number of conflicts
    int sn; //state   
    int N = 1000000;  //number of random trials for stationary probabilities of 4x4 matrix
    float x;
    int mc; //exterior counter
    float psc1, psc2; //stationary probabilities of 4x4 matrix in both etrategies
    int j;
    int n; //dimension of markov chain
    float **p;
    int cnt;//interior counter
    float pc;
    int k;
    float **p1;
    float **p2;
    float pi1, pi2, eps;
    int sgr;
 
//----------------------------------------------------------------------------------
//matrices declaration:
 
    p1 = (float**)calloc(2, sizeof(float*));
    for(k=0;k<2;k++)
    p1[k] = (float*)calloc(2, sizeof(float));
    
    p2 = (float**)calloc(2, sizeof(float*));
    for(k=0;k<2;k++)
    p2[k] = (float*)calloc(2, sizeof(float));
            
    p = (float**)calloc(4, sizeof(float*));
    for(k=0;k<4;k++)
    p[k] = (float*)calloc(4, sizeof(float));
 
//----------------------------------------------------------------------------------
//head-line printing:
 
    ofstream outFileb("results.txt");
        
    outFileb << "  pi1 " <<  "        pi2   " << "     res1  " << "     res2   "        
             << "         hypothesis" <<  endl;
 
//-----------------------------------------------------------------------------------
//initialization:
 
//  srand(2345678);
    srand(time(NULL));
 
    eps = 0.05;
 
    n = 4;
 
    mc = 0;  //main counter
 
//-----------------------------------------------------------------------------------
 
 
    int maxsteps;
/*  cout << "Введите максимальное число шагов: ";
    cin >> maxsteps;*/
    maxsteps=100;
    cout << endl;
    while(mc < maxsteps)  //exterior cycle: at every step a new pair of 2x2 stochastic matrices 
                    //is considered
    {//1
 
//-----------------------------------------------------------------------------------
//stochastic matrices p1, p2 random determination:
 
 
/*      while(true)                 //Если требуется вводить матрицы вручную
        {
            cout << "Шаг "<< mc+1 << "/"<<maxsteps<<". Введите p1[0][1] и p2[0][1] (от 0 до 1): ";
            cin >> p1[0][1]>>p2[0][1];
            if (p1[0][1]>=0 && p1[0][1]<=1 && p2[0][1]>=0 && p2[0][1]<=1) break;
        }*/
 
        p1[0][1] = (float (rand()))/ RAND_MAX;
        p1[0][0] = 1 - p1[0][1];
 
        p1[1][1] = p1[0][1]; //Bernulli case
        p1[1][0] = p1[0][0];
        
/*      p1[1][1] = (float (rand()))/ RAND_MAX;
        p1[1][0] = 1 - p1[1][1];*/                  // Не бернуллевский случай
    
        p2[0][1] = (float (rand()))/ RAND_MAX;
        p2[0][0] = 1 - p2[0][1];
 
        p2[1][1] = p2[0][1]; //Bernulli case
        p2[1][0] = p2[0][0];
 
 
/*      p2[1][1] = (float (rand()))/ RAND_MAX;
        p2[1][0] = 1 - p2[1][1];*/                  // Не бернуллевский случай
 
//-----------------------------------------------------------------------------------
//stationary probabilities of the conflict state 1 for matrices p1 and p2:
 
        pi1 = p1[0][1] / (1.+ p1[0][1] - p1[1][1]);
        pi2 = p2[0][1] / (1.+ p2[0][1] - p2[1][1]);
 
        if (fabs(pi1 - pi2) < 0.04) continue;   //exterior cycle continuation
 
//      if ( (fabs(pi1) > 0.15) || (fabs(pi2) > 0.15) ) continue;
 
//      if ( (fabs(p1[0][1]) > eps)||(fabs(p1[1][1]) > eps)||(fabs(p2[0][1]) > eps)||(fabs(p2[1][1]) > eps) ) continue; 
 
//-----------------------------------------------------------------------------------
//3 first row of 4x4 matrix p
 
        p[0][0] = p1[0][0]*p2[0][0];
        p[0][1] = p1[0][0]*p2[0][1];
        p[0][2] = p1[0][1]*p2[0][0];
        p[0][3] = p1[0][1]*p2[0][1];
 
        p[1][0] = p1[0][0]*p2[1][0];
        p[1][1] = p1[0][0]*p2[1][1];
        p[1][2] = p1[0][1]*p2[1][0];
        p[1][3] = p1[0][1]*p2[1][1];
            
        p[2][0] = p1[1][0]*p2[0][0];
        p[2][1] = p1[1][0]*p2[0][1];
        p[2][2] = p1[1][1]*p2[0][0];
        p[2][3] = p1[1][1]*p2[0][1];
 
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//priority of the first process:
    
        p[3][0] = 0;
        p[3][1] = p1[1][0];
        p[3][2] = 0;
        p[3][3] = p1[1][1];
 
//-----------------------------------------------------------------------------------
    
        kt = 0; //interior counter
        sn = 0;
 
        for (cnt = 0; cnt < N; cnt ++) //interior cycle
        {//2
            x = (float (rand()))/ RAND_MAX;
            pc = 0;
            for (j = 0; j < n; j++)
            {//3
                pc = pc + p[sn][j];
                if (x < pc) 
                {//4
                    sn = j; //sn is a new state
                    break;
                }//4
            }//3
            if (sn == n-1) kt++;  //sn is the conflict state
        }//2
        
        psc1 = ((float) kt)/ N;
 
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//priority of the second process:
 
        p[3][0] = 0;
        p[3][1] = 0;
        p[3][2] = p2[1][0];
        p[3][3] = p2[1][1];
 
        kt = 0; //interior counter
        sn = 0;
 
        for (cnt = 0; cnt < N; cnt ++) //interior cycle
        {//2
            x = (float (rand()))/ RAND_MAX;
            pc = 0;
            for (j = 0; j < n; j++)
            {//3
                pc = pc + p[sn][j];
                if (x < pc) 
                {//4
                    sn = j; //sn is a new state
                    break;
                }//4
            }//3
            if (sn == n-1) kt++;  //sn is the conflict state
        }//2
        
        psc2 = ((float) kt)/ N;
 
//-----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
//result analysis:
 
        sgr = 0;
        if( (pi1-pi2)*(psc1-psc2) < 0 ) sgr = 1;
 
        outFileb << setw(5) << pi1 << setw(12) << pi2 << setw(12) << psc1 << setw(12) << psc2 <<setw(12) << sgr << endl;
 
        mc++;  //exterior cycle
}
}
 Комментарий модератора 
Используйте теги форматирования кода!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru