我試圖重現從紙張的結果,我給的鏈接,以避免寫下所需要的全部數學:更具體地說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形曲線,而礦是單調增加的。
任何人都可以發現我有的任何錯誤嗎?提前致謝。
我沒有讀取所有代碼,但我知道由meshgrid生成的數組非常不直觀。如果您儘可能詳細地描述錯誤,它可能會有所幫助。 – denahiro 2012-07-30 13:56:34
嗯,我不知道錯誤發生在哪裏,但我得到的情節與論文中的情節不同。我添加了一幅圖片,其中包含我生成的用於比較的圖。希望它有幫助。 – gkaran89 2012-07-30 14:04:59
我剛剛看到,對於圖3他們從來沒有明確說明他們的beta值。您認爲它與圖2中的相同,但這可能並非如此。 – denahiro 2012-07-30 14:39:15