0

必要なすべての数学を書き留めないようにリンクを付けた論文の結果を再現しようとしています。

DoSおよびDDoS攻撃に対するゲーム理論ベースの防御メカニズムのモデリングとシミュレーションについて

より具体的には、私が問題を抱えているのは図3のプロットです。プロットは、2つの変数mとMが与えられた場合の式3の結果をz軸に示します。必要となる他の式は5、6、7であり、式6の前の段落にも2つの小さな式があります。 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)); 

どこが間違いなのか正確にはわかりませんが、私が得たプロットは次のとおりであり、論文のプロットとは異なります。

紙の図はFirewall Midpoint軸に沿ってU字型の曲線を持っていますが、私のものは単調に増加しています。 私の結果

誰かが私が持っている間違いを見つけることができますか?前もって感謝します。

4

1 に答える 1

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関数では、2 番目の引数は平均である必要がありますmu。これにより、ファイアウォールの中間点に沿って U 字型の曲線が得られますが、図とは正確ではないことがわかり、b の値が原因であると考えられます。

お役に立てれば。さまざまな b の値をいじってみましたが、まだ紙の画像と一致しないため、計算エラーが残っている可能性があります。

于 2012-07-31T13:34:07.010 に答える