|
@@ -1,14 +1,14 @@
|
|
|
%% werewolf study
|
|
|
-% setze
|
|
|
+% set
|
|
|
tic()
|
|
|
maxPWW = 99;
|
|
|
-NRepSims = 100000;
|
|
|
+NRepSims = 100;
|
|
|
|
|
|
meanWinningRateV = zeros(1,length(1 : maxPWW));
|
|
|
meanWinningRateW = zeros(1,length(1 : maxPWW));
|
|
|
-toc()
|
|
|
+tserial = toc();
|
|
|
tic()
|
|
|
-parfor k = 1 : maxPWW
|
|
|
+for k = 1 : maxPWW
|
|
|
winVillage = 0;
|
|
|
winWerewolfs = 0;
|
|
|
for p = 1:NRepSims
|
|
@@ -23,7 +23,7 @@ winWerewolfs = 0;
|
|
|
meanWinningRateW(k) = winWerewolfs/NRepSims;
|
|
|
|
|
|
end
|
|
|
-toc()
|
|
|
+tparallel = toc();
|
|
|
%%
|
|
|
figure()
|
|
|
hold on
|
|
@@ -32,4 +32,48 @@ plot(meanWinningRateW)
|
|
|
xlabel('perc WW')
|
|
|
ylabel('winningrate')
|
|
|
legend('villager', 'WW')
|
|
|
-% hihi
|
|
|
+
|
|
|
+%% calculate max speedup
|
|
|
+tTotal = tserial + tparallel;
|
|
|
+serialFraq = tserial / tTotal;
|
|
|
+parallelFraq = tparallel / tTotal;
|
|
|
+
|
|
|
+N = 4; % poolsize
|
|
|
+maxSpeedup4 = 1./((1-parallelFraq)+(parallelFraq./N));
|
|
|
+disp('max speedup at N cores: ')
|
|
|
+disp(maxSpeedup4)
|
|
|
+%% for different poolsizes
|
|
|
+N = 1:10;
|
|
|
+maxSpeedupN = 1./((1-parallelFraq)+(parallelFraq./N));
|
|
|
+plot(N, maxSpeedupN)
|
|
|
+xlabel('cores')
|
|
|
+ylabel('max speed-up')
|
|
|
+
|
|
|
+%% run in parallel
|
|
|
+% set
|
|
|
+tic()
|
|
|
+maxPWW = 99;
|
|
|
+NRepSims = 100000;
|
|
|
+
|
|
|
+meanWinningRateV = zeros(1,length(1 : maxPWW));
|
|
|
+meanWinningRateW = zeros(1,length(1 : maxPWW));
|
|
|
+toc()
|
|
|
+tic()
|
|
|
+parfor k = 1 : maxPWW
|
|
|
+winVillage = 0;
|
|
|
+winWerewolfs = 0;
|
|
|
+ for p = 1:NRepSims
|
|
|
+ [WinningTeam, DaysPlayed] = werewolf(20, k);
|
|
|
+ if strcmp('Villagers',WinningTeam)
|
|
|
+ winVillage = winVillage + 1;
|
|
|
+ else
|
|
|
+ winWerewolfs = winWerewolfs + 1;
|
|
|
+ end
|
|
|
+ end
|
|
|
+ meanWinningRateV(k) = winVillage/NRepSims;
|
|
|
+ meanWinningRateW(k) = winWerewolfs/NRepSims;
|
|
|
+
|
|
|
+end
|
|
|
+toc()
|
|
|
+
|
|
|
+
|