• 通过求解数学模型来选择编码节点的最佳数量和位置(Matlab代码实现)


     🍒🍒🍒欢迎关注🌈🌈🌈

    📝个人主页:我爱Matlab


    👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

    🍌希望大家多多支持🍓~一起加油 🤗

    💬语录:将来的我一定会感谢现在奋斗的自己!

    🍁🥬🕒摘要🕒🥬🍁

    此代码是数学模型的实现,该模型的开发用于确定某些故障情况下编码节点的最佳数量及其位置。除了降低成本和提高可靠性外,传感器网络最终还具有更高的延迟方面的性能,因为网络编码操作的总数减少;

    可以使用不同的网络节点数量,笔者在这里使用 40 节点网络,如下所示:

    ✨🔎⚡运行结果⚡🔎✨

    💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

    %% Failure constraint

    failureIsDest=zeros(length(FailureScenarios)*numberOfNodes,numberOfLinks);
    failureIsSrc=zeros(length(FailureScenarios)*numberOfNodes,numberOfLinks);
    e=0;
    esrc=0;
    % Failure sources
    for f=1:length(FailureScenarios)
        for k=1:failedLinksInScen(f)
            workingLinks=get_workingLinks_in_failureScen(f,failedLinksInScen,links,FailureScenarios);
            for i=1:numberOfNodes
                for j=1:length(workingLinks)
                    bool=isAgateway(workingLinks(j),1,gateways,network);
                    if networkF(workingLinks(j),1)==i  && bool==false
                        failureIsSrc(i+e,workingLinks(j)+esrc)=1;
                    else
                        failureIsSrc(i+e,workingLinks(j)+esrc)=0;
                    end
                end
            end
            e=e+numberOfNodes;
        end
    end

    %% failure destination
    e=0;
    edest=0;
    for f=1:length(FailureScenarios)
        for k=1:failedLinksInScen(f)
            
            workingLinks=get_workingLinks_in_failureScen(f,failedLinksInScen,links,FailureScenarios);
            for i=1:numberOfNodes
                for j=1:length(workingLinks)
                    bool=isAgateway(workingLinks(j),1,gateways,network);
                    if networkF(workingLinks(j),2)==i && bool==false
                        failureIsDest(i+e,workingLinks(j)+edest)=-1;
                    else
                        failureIsDest(i+e,workingLinks(j)+edest)=0;
                    end
                end
            end
            e=e+numberOfNodes;
        end
    end

    % adjFailure Matrix
    adjFailure=failureIsSrc(:,:)+failureIsDest(:,:);

    % store all the sources of failed links in sourcesF matrix
    sourcesF=cell(1,numberOfFailScens);
    for f=1:numberOfFailScens
        for l=1:failedLinksInScen(f)
            for n=1:numberOfNodes
                for j=1:numberOfLinks
                    if networkF(j,1)==n && networkF(j,3)==FailureScenarios{f}(1,l)
                        sourcesF{f}(1,l)=networkF(j,1);  
                    end
                end
            end
        end
    end
    %% Failure scenario:indicate the failed links in each failure scenario
    e=0;
    fCol=numberOfNodes+1;
    fColEnd=fCol-1+numberOfLinks;

    gmmaCol=numberOfNodes+numberOfLinks+1;
    etaCol=numberOfLinks + numberOfNodes+failure_scen_var_length*numberOfLinks;
    GRow=0;

    for f=1:numberOfFailScens
        for i=1: failedLinksInScen(f)
            workingLinks=get_workingLinks_in_failureScen(f,failedLinksInScen,links,FailureScenarios);
            for j= 1:numberOfNodes
                Aeq(GRow+j+e,fCol:fColEnd)=adjFailure(j+e,1:numberOfLinks);
                if isSource(j,FailureScenarios{f}(1,i))==1
                    sum_lPrime=sum_Working_Links(j,gammaTree,workingLinks,network);
                    beq(GRow+j+e)=1-sum_lPrime;
                else
                    Aeq(GRow+j+e,etaCol+j+e)=1;
                    beq(GRow+j+e)=0;
                end
            end
            fCol=fColEnd+1;
            fColEnd=fColEnd+numberOfLinks;
            e=e+numberOfNodes;
            
        end
    end

    📜📢🌈参考文献🌈📢📜

    [1]李想想. 面向传感网数据传输的网络编码方案研究[D].哈尔滨工程大学,2012.

  • 相关阅读:
    尚医通 (二十八) --------- 医院管理相关 (引入注册中心、远程调用)
    按图搜索义乌购商品(拍立淘) API
    Feign的最佳实践
    Weblogic HTTP Access Logs格式
    [RK3568 Android11] Input UI 使用流程
    Linux升级jdk8为jdk11
    【实战】Spring Cloud Stream 3.1+整合Kafka
    攻防世界WEB练习区(backup、cookie、disabled_button)
    仿Modbus消息帧进行通信
    小白必看!画出自己第一个界面,PyQt5安装以及使用
  • 原文地址:https://blog.csdn.net/weixin_66436111/article/details/128145250