智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

​智能电网是一种典型的信息物理融合系统,也是关系国民经济发展和国家安全的重大关键基础设施,其安全稳定运行至关重要。近年来,国内外智能电网由于外部攻击而导致的重大安全事件时有发生,智能电网面临的信息物理安全威胁日益严峻。假数据注入攻击作为一种新型恶意网络攻击,能够篡改智能电表中的“互动”用电信息并对智能电网的安全运行产生严重影响。

📚2 运行结果

主函数部分代码:

clear;clc;
n = 8;
​
% weight matrix
W = [
     2/8, 3/8, 3/8, 0/8, 0/8, 0/8, 0/8, 0/8;
     1/8, 4/8, 0/8, 1/8, 1/8, 1/8, 0/8, 0/8;
     2/8, 0/8, 2/8, 0/8, 0/8, 0/8, 2/8, 2/8;
     0/8, 4/8, 0/8, 4/8, 0/8, 0/8, 0/8, 0/8;
     0/8, 4/8, 0/8, 0/8, 4/8, 0/8, 0/8, 0/8;
     0/8, 4/8, 0/8, 0/8, 0/8, 4/8, 0/8, 0/8;
     0/8, 0/8, 4/8, 0/8, 0/8, 0/8, 4/8, 0/8;
     0/8, 0/8, 4/8, 0/8, 0/8, 0/8, 0/8, 4/8;
    ];
 
a = [0.0024, 0.0545, 0.0877, 0.0056, 0.0547, 0.1041, 0.0870, 0.0072];
b = [5.56, 18.43, 13.17, 4.32, 15.46, 10.03, 8.45, 6.60];
p_min = [60, 50, 100, 25, 40, 30, 80, 28];
p_max = [339.69, 100.34, 159.13, 479.10, 80.56, 123.98, 109.55, 290.4];
​
% Initialize
lambda_state = zeros(1, n);
P_state = zeros(1, n);
delta_state = zeros(1, n);
for i = 1 : 1 : n
    if i == 1 || i == 4 || i == 8
        lambda_state(i) = 2 * a(i) + b(i);
    else
        lambda_state(i) = -2 * a(i) + b(i);
    end
end
​
% save data for output result
for i = 1 : 1 : n
    Lambda{i} = lambda_state(i);
    P_axis{i} = 0;
    Delta{i} = 0;
end
k_axis = 0;
delta_p = 0;
social_welfare = 0;
​
eta = 0.001;
k_max = 350;
​
for k = 1 : 1 : k_max
​
    % lambda iteration
    for i = 1 : 1 : n
        sigma = 0;
        for j = 1 : 1 : n
            sigma = sigma + W(i, j) * lambda_state(j);
        end
        lambda_state(i) = sigma + eta * delta_state(i);
​
        Lambda{i}(end + 1) = lambda_state(i);
    end
​
    % power update
    for i = 1 : 1 : n
        tmp = 0;
        if i == 1 || i == 4 || i == 8
            tmp = (lambda_state(i) - b(i)) / (2 * a(i));
        else
            tmp = (b(i) - lambda_state(i)) / (2 * a(i));
        end
        if tmp < p_min(i)
            P_state(i) = p_min(i);
        elseif tmp > p_max(i)
            P_state(i) = p_max(i);
        else
            P_state(i) = tmp;
        end
        P_axis{i}(end + 1) = P_state(i);
    end
​
    % delta iteration
    for i = 1 : 1 : n
        sigma = 0;
        for j = 1 : 1 : n
            sigma = sigma + W(i, j) * delta_state(j);
        end
        if i == 1 || i == 4 || i == 8
            delta_state(i) = sigma + P_axis{i}(end - 1) - P_axis{i}(end);
        else
            delta_state(i) = sigma + P_axis{i}(end) - P_axis{i}(end - 1);
        end
        Delta{i}(end + 1) = delta_state(i);
    end
    
    k_axis(end + 1) = k;
end
​
figure(1);
for i = 1 : 1 : n
    plot(k_axis, Lambda{i}, 'lineWidth', 1);
    grid on;
    hold on;
end
xlabel('Iteration k');
ylabel('\lambda_{i}');
​
figure(2);
for i = 1 : 1 : n
    if i == 1 || i == 4 || i == 8
        plot(k_axis, P_axis{i}, 'lineWidth', 1);
        hold on;
    else
        plot(k_axis, -P_axis{i}, 'lineWidth', 1, 'linestyle', '--');
        hold on;
        grid on;
    end
end
​

🎉3 参考文献

[1]杨新宇, 智能电网中针对“互动”用电信息的假数据注入攻击危害分析及防御策略研究. 陕西省,西安交通大学,2018-03-20.

部分理论引用网络文献,若有侵权联系博主删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值