2012-07-30 41 views
0

我試圖重現從紙張的結果,我給的鏈接,以避免寫下所需要的全部數學:更具體地說Matlab的與陣列計算錯誤的結果

On Modeling and Simulation of Game Theory-based Defense Mechanisms against DoS and DDoS Attacks

我遇到的問題是圖3的情節。在給定兩個變量m和M的情況下,該圖給出了z軸的方程式3的結果。將需要的其他方程式是5,6,7,在方程式6之前的段落中也有兩個小的方程式。同樣按順序看看Xi是什麼檢查4.2的一部分。所有需要的變量值都在繪圖之前給出。

現在爲了說明問題,我試圖在matlab中創建完全相同的圖,但是我失敗了,我需要幫助,因爲我的matlab技能​​不太好。

我有,我有以下腳本文件:

w1 = 1000; 
w2 = 1000; 
w3 = 10; 
B = 2000; 
n = 20; 
r_l = 60; 
s_l = 20; 
g = 10; 
a_f = 5000; 
b = 20; 

vx = 0 : 1 : 500; 
vy = 0 : 1 : 90; 

[x,y] = meshgrid(vx,vy); 

z = payoff(w1, w2, w3, y, r_l, n, g, B, b, x, s_l, a_f); 

h = surfc(x,y,z); 
set(h, 'edgecolor','none') 
xlabel('Firewall Midpoint (M)') 
ylabel('Number of zombies') 
zlabel('Attackers payoff') 
view(-41,11); 

回報是一個函數,如下所示:

function out = payoff(w1, w2, w3, m, r_l, n, g, B, b, M, s_l, a_f) 

r_a = a_f./ m; 
r_a_dash = r_a.*(1-Fx(r_a, b, M, B)); 
r_l_dash = r_l.*(1-Fx(r_l, b, M, B)); 

v_b = (m .* r_a_dash) ./ (n .* r_l_dash + m .* r_a_dash); 
v_n = normcdf((g .* (n .* r_l_dash + m .* r_a_dash) ./ B), r_l, s_l); 

out = w1 * v_b + w2 * v_n - w3 * m; 

Fx的又是執行以下功能:

function out = Fx(x,b,M,B) 

out=1./(1+exp(-b.*(x-M)./B)); 

我不知道錯誤的確切位置,但我得到的情節是以下是n與紙中的一樣。

紙張中的數字沿着Firewall Midpoint軸有一個U形曲線,而礦是單調增加的。 My results

任何人都可以發現我有的任何錯誤嗎?提前致謝。

+0

我沒有讀取所有代碼,但我知道由meshgrid生成的數組非常不直觀。如果您儘可能詳細地描述錯誤,它可能會有所幫助。 – denahiro 2012-07-30 13:56:34

+0

嗯,我不知道錯誤發生在哪裏,但我得到的情節與論文中的情節不同。我添加了一幅圖片,其中包含我生成的用於比較的圖。希望它有幫助。 – gkaran89 2012-07-30 14:04:59

+1

我剛剛看到,對於圖3他們從來沒有明確說明他們的beta值。您認爲它與圖2中的相同,但這可能並非如此。 – denahiro 2012-07-30 14:39:15

回答

3

我注意到最重要的事情是在你的代碼中使用:

v_n = normcdf((g .* (n .* r_l_dash + m .* r_a_dash) ./ B), r_l, s_l); 

當你應該使用(我認爲):

v_n = normcdf((g .* (n .* r_l_dash + m .* r_a_dash) ./ B), r_l_dash, s_l); 

在論文中,他們的狀態:

回想一下, r l代表預期的比率合法流程。讓通過防火牆的合法流量的平均速率爲 r l'。

normcdf函數中,第二個參數應該是平均值mu。這給我一個沿着防火牆中點的U形曲線,但是我可以看到它與圖片不一致,我相信這是由於b的價值,因爲有人已經說過沒有給出。

希望這會有所幫助。由於我使用了b的各種值,並且仍然無法與紙張中的圖像匹配,所以可能仍然存在計算錯誤。

+0

謝謝。確實需要r_l_dash。 – gkaran89 2012-07-31 19:23:31