首頁 > 軟體

Matlab實現新冠病毒傳播模擬效果

2022-04-16 13:00:34

1 各種疫苗梳理

截至2022年3月,中國已經向120多個國家和國際組織提供了超過21億劑疫苗,佔中國以外全球疫苗使用總量的1/3。

1.1 滅活疫苗

2020年12月31日,國務院聯防聯控機制釋出,國藥集團中國生物新冠滅活疫苗已獲得國家藥監局批准附條件上市。

1.2 吸入式新冠疫苗

2021年11月12日—14日,全球首款可吸入式新冠疫苗亮相“2021第五屆海南國際健康產業博覽會”。全球首款吸入式新冠疫苗由軍事醫學研究院陳薇院士團隊與康希諾生物股份公司合作研發,二期臨床試驗已取得階段性成果,正在推進緊急使用的申請工作。據瞭解,吸入式新冠疫苗與肌肉注射使用了同種疫苗,其製劑配方未改變,僅採用不同的給藥方式。霧化吸入免疫採用霧化器將疫苗霧化成微小顆粒,通過口部吸入的方式進入呼吸道和肺部,從而激發黏膜免疫,而這種免疫是通過肌肉注射所不能帶來的。

1.3 植物蛋白技術疫苗

2022年2月24日 ,加拿大衛生部宣佈,授權該國藥企Medicago研製的新冠疫苗Covifenz可用於18至64歲成年人。這是加拿大審批通過的第六款新冠疫苗,也是首款本土研發的新冠疫苗,Covifenz是首個使用植物蛋白技術的新冠疫苗。

1.4 AI技術開發長效新冠疫苗

2022年4月11日報道,日本NEC公司8日宣佈已開始利用最尖端的人工智慧(AI)技術開發新冠疫苗。

1.5 法國Valneva新冠疫苗

2022年4月14日,彭博報道,根據一份政府宣告,英國藥品和保健品管理局(MHRA)批准法國生物技術公司Valneva開發的新冠疫苗。Valneva疫苗成為第六種獲得MHRA授權的新冠疫苗。

2 matlab程式碼

%======歡迎關注公眾號:電力系統與演演算法之美=======%
function spreadingBySir()
    A=load('test.in');
    % node number
    N=size(A,1);   
    %感染概率
    irate=0.3;
    %恢復概率
    rrate=1;
    %初始時節點的狀態表,初始時只有節點1為感染狀態,其他的都為易感染狀態  
    start_node=1;
    %按照圖的廣度優先的原則來進行病毒傳播
    BFSspreading(A,N,start_node,irate,rrate);
end
 
function BFSspreading(A,N,start_node,irate,rrate)
%佇列頭
head=1;            
%佇列尾,開始佇列為空,tail==head
tail=1;            
%向頭中加入感染源節點
queue(head)=start_node;      
%佇列擴充套件
head=head+1;  
 
%感染節點列表 
infection=start_node;  
%恢復節點列表  
recover=[];
%易感染節點列表
for i=1:N
    %初始時,start_node為感染狀態
    if i==start_node
        %-1表示該節點已經從列表中刪除
        susceptible(i)=-1;
    end
    %初始時,除了start_node為感染狀態外,其他節點都處於易感染狀態
     susceptible(i)=i;
end
 
%開始按照廣度優先搜尋順序向鄰居節點傳播
%判斷佇列是否為空
while tail~=head   
    %取隊尾節點 
    i=queue(tail);  
    %如果該節點不在移除列表之中
    if isempty(find(recover==i,1))
            for j=1:N
             %如果節點j與當前節點i相連並且節點j不在感染列表中
            if A(i,j)==1 && isempty(find(infection==j,1))   
                 infection_random=rand(1);
                 if infection_random < irate
                    %新節點入列
                    queue(head)=j;  
                    %擴充套件佇列
                    head=head+1;   
                    %將新節點j加入感染列表
                    infection=[infection j]; 
                    
                    %從易感染節點列表中刪除該節點,設定為-1
                    [row,col,v] = find(susceptible==j) ;
                    susceptible(col)=-1;
                    susceptible(find(susceptible==-1))=[];                    
                 end
            end
        end
        %將感染的節點按概率加入恢復節點列表  
        recover_random=rand(1);
        if infection_random < rrate
            %恢復
            recover=[recover i];  
            %從感染列表中刪除
            [row,col,v] = find(infection==i) ;
            infection(col)=-1;
            infection(find(infection==-1))=[];
        end
        tail=tail+1; 
        
    end %end if  isempty(find(recover==i,1)
end %end while
 
%分別現實最後節點的狀態
infection
susceptible
recover
end
 

到此這篇關於Matlab實現新冠病毒傳播模擬的文章就介紹到這了,更多相關Matlab新冠病毒傳播內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com