神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)_第1頁(yè)
神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)_第2頁(yè)
神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)_第3頁(yè)
神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)_第4頁(yè)
神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu) Beijing Jiaotong University 智能控制技術(shù)報(bào)告神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)學(xué) 院:電子信息工程學(xué)院學(xué) 號(hào):姓 名:指導(dǎo)教師:時(shí) 間:2014.11.29目錄一、課題背景3二、模型建立32.1 算法流程42.2 BP算法實(shí)現(xiàn)42.2.1 數(shù)據(jù)選擇和歸一化42.2.2 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練52.2.3 BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)52.3 遺傳算法實(shí)現(xiàn)62.3.1 種群初始化62.3.2 適應(yīng)度函數(shù)62.3.3 選擇操作62.3.4 交叉操作62.3.5 變異操作6三、編程實(shí)現(xiàn)63.1 數(shù)據(jù)準(zhǔn)備63.2 BP神經(jīng)網(wǎng)絡(luò)主函數(shù)73.3 編碼函數(shù)83.4 適應(yīng)度函

2、數(shù)93.5 選擇操作93.6 交叉操作103.7 變異操作113.8 遺傳算法主函數(shù)12四、結(jié)果分析144.1 BP神經(jīng)網(wǎng)絡(luò)擬合結(jié)果分析144.2遺傳算法尋優(yōu)結(jié)果分析16一、 課題背景在研究中經(jīng)常會(huì)遇到一些非常復(fù)雜的非線性系統(tǒng),這些系統(tǒng)方程復(fù)雜,難以用數(shù)學(xué)方法準(zhǔn)確建模。在這種情況下,可以建立BP神經(jīng)網(wǎng)絡(luò)表達(dá)這些非線性系統(tǒng)。該方法把系統(tǒng)看成是一個(gè)黑箱,首先用系統(tǒng)輸入輸出數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),使網(wǎng)絡(luò)能夠表達(dá)該未知函數(shù),然后就可以用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)系統(tǒng)輸出。對(duì)于未知的非線性函數(shù),僅通過(guò)函數(shù)的輸入輸出數(shù)據(jù)難以準(zhǔn)確尋找函數(shù)極值。遺傳算法通過(guò)模擬自然界遺傳機(jī)制和生物進(jìn)化論能夠進(jìn)行并行隨機(jī)搜索最優(yōu)化

3、,所以對(duì)非線性函數(shù)極值尋優(yōu)可以通過(guò)神經(jīng)網(wǎng)絡(luò)結(jié)合遺傳算法求解。利用神經(jīng)網(wǎng)絡(luò)的非線性擬合能力和遺傳算法的非線性尋優(yōu)能力尋找函數(shù)極值。本文擬合的非線性函數(shù)為:fx=-xx2-3.2x+2.89x-32 x0,3該函數(shù)的圖形如圖所示:圖1-1待擬合函數(shù)圖形從函數(shù)方程和圖形可以看出,該函數(shù)僅有一個(gè)全局最大值為0.9655,對(duì)應(yīng)的坐標(biāo)是(0.537,0.9655)。雖然從函數(shù)方程和圖形中很容易找出函數(shù)及極值對(duì)應(yīng)的坐標(biāo),但是在方程未知的條件下函數(shù)極值及極值對(duì)應(yīng)的坐標(biāo)就很難求到。二、 模型建立2.1 算法流程神經(jīng)網(wǎng)絡(luò)遺傳算法函數(shù)極值尋優(yōu)主要分為BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練擬合和遺傳算法極值尋優(yōu)兩步,算法流程如圖所示:圖2

4、-1算法流程圖神經(jīng)網(wǎng)絡(luò)訓(xùn)練擬合根據(jù)尋優(yōu)函數(shù)的特點(diǎn)構(gòu)建適合的BP神經(jīng)網(wǎng)絡(luò),用非線性函數(shù)的輸入輸出數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)就可以預(yù)測(cè)函數(shù)輸出。遺傳算法極值尋優(yōu)把訓(xùn)練后的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)結(jié)果作為個(gè)體適應(yīng)度值,通過(guò)選擇、交叉和變異操作尋找函數(shù)的全局最優(yōu)值及對(duì)應(yīng)的值。2.2 BP算法實(shí)現(xiàn)2.2.1 數(shù)據(jù)選擇和歸一化數(shù)據(jù)歸一化是神經(jīng)網(wǎng)絡(luò)訓(xùn)練和預(yù)測(cè)前對(duì)數(shù)據(jù)常做的一種處理方法。數(shù)據(jù)歸一化處理把所有的數(shù)據(jù)都?xì)w一化為0,1之間的數(shù),其目的是取消各維數(shù)據(jù)間數(shù)量級(jí)差別,避免因?yàn)檩斎胼敵鰯?shù)據(jù)數(shù)量級(jí)差別較大而造成訓(xùn)練失敗或者預(yù)測(cè)誤差較大。數(shù)據(jù)歸一化可以使用MATLAB自帶函數(shù)mapminmax,該函數(shù)有多種

5、形式,常用的方法如下:%樣本輸入輸出數(shù)據(jù)歸一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train);input_train、output_train是訓(xùn)練輸入、輸出原始數(shù)據(jù),inputn、outputn是歸一化后的數(shù)據(jù),inputps、outputps為數(shù)據(jù)歸一化后得到的結(jié)構(gòu)體,里面包含了數(shù)據(jù)的最大值、最小值和平均值等信息,可以用于測(cè)試數(shù)據(jù)歸一化和反歸一化。測(cè)試數(shù)據(jù)歸一化和反歸一化程序一般如下:%數(shù)據(jù)歸一化inputn_test=mapminmax('apply',input

6、_test,inputps); %網(wǎng)絡(luò)輸出反歸一化BPoutput=mapminmax('reverse',an,outputps);input_test是預(yù)測(cè)輸入數(shù)據(jù),input_test是歸一化后的預(yù)測(cè)數(shù)據(jù),'apply'表示根據(jù)inputps進(jìn)行歸一化;an是網(wǎng)絡(luò)預(yù)測(cè)結(jié)果,outputs是訓(xùn)練輸出數(shù)據(jù)歸一化得到的結(jié)構(gòu)體,BPoutput是反歸一化后的網(wǎng)絡(luò)預(yù)測(cè)輸出,'reverse'表示對(duì)數(shù)據(jù)進(jìn)行反歸一化。2.2.2 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練用訓(xùn)練數(shù)據(jù)訓(xùn)練神經(jīng)網(wǎng)絡(luò),使網(wǎng)絡(luò)對(duì)非線性函數(shù)具有預(yù)測(cè)能力。MATLAB神經(jīng)網(wǎng)絡(luò)工具箱中自帶BP神經(jīng)網(wǎng)絡(luò)函數(shù),使用

7、時(shí)只需要調(diào)用相關(guān)的子程序即可。BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練主要用到newff、sim兩個(gè)函數(shù)。1. newff:BP神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置函數(shù)函數(shù)功能:構(gòu)建一個(gè)BP網(wǎng)絡(luò)。函數(shù)形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)2. train:BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)函數(shù)功能:用訓(xùn)練數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)。函數(shù)形式:net,tr=train(NET,X,T,Pi,Ai)2.2.3 BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)非線性函數(shù)輸出,并通過(guò)BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)輸出和期望輸出分析BP網(wǎng)絡(luò)的分析能力。MATLAB神經(jīng)網(wǎng)絡(luò)工具箱提供的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)函數(shù)是sim。1. sim:BP神經(jīng)

8、網(wǎng)絡(luò)預(yù)測(cè)函數(shù)函數(shù)功能:用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)函數(shù)輸出函數(shù)形式:y=sim(net,y)以上三個(gè)函數(shù)的具體用法可以參考其自帶的幫助,本文不作詳述。根據(jù)需要擬合的函數(shù)有1個(gè)輸入?yún)?shù)、1個(gè)輸出參數(shù),確定BP神經(jīng)網(wǎng)絡(luò)為1-5-1。取函數(shù)的4000組輸入輸出數(shù)據(jù),從中隨機(jī)選取3900組訓(xùn)練網(wǎng)絡(luò),100組數(shù)據(jù)測(cè)試網(wǎng)絡(luò)性能,網(wǎng)絡(luò)訓(xùn)練好后用于非線性函數(shù)輸出。2.3 遺傳算法實(shí)現(xiàn)2.3.1 種群初始化個(gè)體編碼方法為實(shí)數(shù)編碼,每個(gè)個(gè)體均為一個(gè)實(shí)數(shù)串,由輸入層與隱含層連接權(quán)值、隱含層閾值、隱含層與輸出層連接權(quán)值以及輸出層閾值4部分組成。個(gè)體包含了神經(jīng)網(wǎng)絡(luò)全部權(quán)值和閾值,在網(wǎng)絡(luò)結(jié)構(gòu)已知的情況下,就可以構(gòu)成一個(gè)結(jié)構(gòu)

9、、權(quán)值、閾值確定的神經(jīng)網(wǎng)絡(luò)。2.3.2 適應(yīng)度函數(shù)根據(jù)個(gè)體得到的BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值,用訓(xùn)練數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)后預(yù)測(cè)系統(tǒng)輸出,把訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)輸出作為個(gè)體適應(yīng)度的值。2.3.3 選擇操作遺傳算法選擇操作有輪盤賭法、錦標(biāo)賽法等多種方法,本文采用采用輪盤賭法,即基于適應(yīng)度比例的選擇策略,每個(gè)個(gè)體i的選擇pi為:pi=fij=0nfi其中,fi為個(gè)體i的適應(yīng)度值,N為種群的個(gè)體數(shù)目。2.3.4 交叉操作由于個(gè)體采用實(shí)數(shù)編碼,所以交叉操作方法采用實(shí)數(shù)交叉法,d第k個(gè)染色體ak和第l個(gè)染色體al在j位的交叉操作方法如下:akj=akj1-b+aijbaij=aij1-b+akjb其中

10、,b是0,1間的隨機(jī)數(shù)。2.3.5 變異操作選取第i個(gè)個(gè)體的第j個(gè)基因aij進(jìn)行變異,變異操作方法如下:aij=aij+(aij-amax)*f(g) r0.5aij+(amin-aij)*f(g) r<0.5式中,amax為基因aij的上界;amin為基因aij的下界;fg=r2(1-g/Gmax);r2為一個(gè)隨機(jī)數(shù);g為當(dāng)前迭代次數(shù);amax是最大進(jìn)化次數(shù);r為0,1之間的隨機(jī)數(shù)三、 編程實(shí)現(xiàn)3.1 數(shù)據(jù)準(zhǔn)備根據(jù)擬合函數(shù)得到4000組輸入input和輸出數(shù)據(jù)output,存入data中。for i=1:4000 input(i,:)=3*rand; output(i)=-input(

11、i)*(input(i)2-3.2*input(i)+2.89)*(input(i)-3)/2;endoutput=output'save data input output3.2 BP神經(jīng)網(wǎng)絡(luò)主函數(shù)對(duì)于4000組數(shù)據(jù),采用其中3900組用來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò),最后100組用來(lái)測(cè)試網(wǎng)絡(luò)擬合性能。%清空環(huán)境變量clccleardata;tic% 訓(xùn)練數(shù)據(jù)預(yù)測(cè)數(shù)據(jù)提取及歸一化%下載輸入輸出數(shù)據(jù)load data output input %從1到4000間隨機(jī)排序k=rand(1,4000);m,n=sort(k); %找出訓(xùn)練數(shù)據(jù)和預(yù)測(cè)數(shù)據(jù)input_train=input(n(1:3900)

12、,:)'output_train=output(n(1:3900),:)'input_test=input(n(3901:4000),:)'output_test=output(n(3901:4000),:)' %選連樣本輸入輸出數(shù)據(jù)歸一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train); %BP網(wǎng)絡(luò)訓(xùn)練%初始化網(wǎng)絡(luò)結(jié)構(gòu)net=newff(inputn,outputn,5); net.trainParam.epochs=100;net.trainParam

13、.lr=0.1;net.trainParam.goal=0.0000004; %網(wǎng)絡(luò)訓(xùn)練net=train(net,inputn,outputn); %BP網(wǎng)絡(luò)預(yù)測(cè)%預(yù)測(cè)數(shù)據(jù)歸一化inputn_test=mapminmax('apply',input_test,inputps); %網(wǎng)絡(luò)預(yù)測(cè)輸出an=sim(net,inputn_test); %網(wǎng)絡(luò)輸出反歸一化BPoutput=mapminmax('reverse',an,outputps); %結(jié)果分析 figure(1)plot(BPoutput,':og')hold onplot(outp

14、ut_test,'-*');legend('預(yù)測(cè)輸出','期望輸出','fontsize',12)title('BP網(wǎng)絡(luò)預(yù)測(cè)輸出','fontsize',12)xlabel('樣本','fontsize',12)ylabel('輸出','fontsize',12)print -dtiff -r600 4-3%預(yù)測(cè)誤差error=BPoutput-output_test; figure(2)plot(error,'-*')

15、title('神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差') figure(3)plot(output_test-BPoutput)./BPoutput,'-*');title('神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差百分比') errorsum=sum(abs(error) toc save data net inputps outputps3.3 編碼函數(shù)function ret=Code(lenchrom,bound)% lenchrom input : 染色體長(zhǎng)度% bound input : 變量的取值范圍% ret output: 染色體的編碼值flag=0;while flag=

16、0pick=rand(1,length(lenchrom); %線性插值,編碼結(jié)果以實(shí)數(shù)向量存入ret中ret=bound(:,1)'+(bound(:,2)-bound(:,1)'.*pick; flag=test(lenchrom,bound,ret); %檢驗(yàn)染色體的可行性end3.4 適應(yīng)度函數(shù)function fitness = fun(x)% x input 個(gè)體% fitness output 個(gè)體適應(yīng)度值load data net inputps outputps %數(shù)據(jù)歸一化x=x'inputn_test=mapminmax('apply

17、9;,x,inputps); %網(wǎng)絡(luò)預(yù)測(cè)輸出an=sim(net,inputn_test); %網(wǎng)絡(luò)輸出反歸一化fitness=mapminmax('reverse',an,outputps);3.5 選擇操作function ret=select(individuals,sizepop)% individuals input : 種群信息% sizepop input : 種群規(guī)模% ret output : 經(jīng)過(guò)選擇后的種群 fitness1=individuals.fitness;sumfitness=sum(fitness1);sumf=fitness1./sumfit

18、ness;index=; for i=1:sizepop %轉(zhuǎn)sizepop次輪盤 pick=rand; while pick=0 pick=rand; end for i=1:sizepop pick=pick-sumf(i); if pick<0 index=index i; break; end endendindividuals.chrom=individuals.chrom(index,:);individuals.fitness=individuals.fitness(index);ret=individuals;3.6 交叉操作function ret=Cross(pcro

19、ss,lenchrom,chrom,sizepop,bound)% pcorss input : 交叉概率% lenchrom input : 染色體的長(zhǎng)度% chrom input : 染色體群% sizepop input : 種群規(guī)模% ret output : 交叉后的染色體 for i=1:sizepop %隨機(jī)選擇兩個(gè)染色體進(jìn)行交叉 pick=rand(1,2); while prod(pick)=0 pick=rand(1,2); end index=ceil(pick.*sizepop); %交叉概率決定是否進(jìn)行交叉 pick=rand; while pick=0 pick=r

20、and; end if pick>pcross continue; end flag=0; while flag=0 %隨機(jī)選擇交叉位 pick=rand; while pick=0 pick=rand; end pos=ceil(pick.*sum(lenchrom); pick=rand; %交叉開(kāi)始 v1=chrom(index(1),pos); v2=chrom(index(2),pos); chrom(index(1),pos)=pick*v2+(1-pick)*v1; chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉結(jié)束 flag1=t

21、est(lenchrom,bound,chrom(index(1),:);%檢驗(yàn)染色體1可行性 flag2=test(lenchrom,bound,chrom(index(2),:);%檢驗(yàn)染色體2可行性 if flag1*flag2=0 flag=0; else flag=1; end %如果兩個(gè)染色體不是都可行,則重新交叉 end endret=chrom;3.7 變異操作function ret=Mutation(pmutation,lenchrom,chrom,sizepop,pop,bound)% pcorss input : 變異概率% lenchrom input : 染色體長(zhǎng)度

22、% chrom input : 染色體群% sizepop input : 種群規(guī)模% opts input : 變異方法的選擇% pop input : 當(dāng)前種群的進(jìn)化代數(shù)和最大的進(jìn)化代數(shù)信息% ret output : 變異后的染色體for i=1:sizepop % 隨機(jī)選擇一個(gè)染色體進(jìn)行變異 pick=rand; while pick=0 pick=rand; end index=ceil(pick*sizepop); % 變異概率決定該輪循環(huán)是否進(jìn)行變異 pick=rand; if pick>pmutation continue; end flag=0; while flag=

23、0 % 變異位置 pick=rand; while pick=0 pick=rand; end pos=ceil(pick*sum(lenchrom); v=chrom(i,pos); v1=v-bound(pos,1); v2=bound(pos,2)-v; pick=rand; %變異開(kāi)始 if pick>0.5 delta=v2*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v+delta; else delta=v1*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v-delta; end %變異結(jié)束 flag=t

24、est(lenchrom,bound,chrom(i,:); %檢驗(yàn)染色體的可行性 endendret=chrom;3.8 遺傳算法主函數(shù)%清空環(huán)境變量clcclear %初始化遺傳算法參數(shù)%初始化參數(shù)maxgen=50; %進(jìn)化代數(shù),即迭代次數(shù)sizepop=30; %種群規(guī)模pcross=0.4; %交叉概率選擇,0和1之間pmutation=0.2; %變異概率選擇,0和1之間 lenchrom=1; %每個(gè)變量的字串長(zhǎng)度,如果是浮點(diǎn)變量,則長(zhǎng)度都為1bound=0 3; %數(shù)據(jù)范圍 individuals=struct('fitness',zeros(1,sizepop

25、), 'chrom',);%將種群信息定義為一個(gè)結(jié)構(gòu)體avgfitness=; %每一代種群的平均適應(yīng)度bestfitness=; %每一代種群的最佳適應(yīng)度bestchrom=; %適應(yīng)度最好的染色體 %初始化種群計(jì)算適應(yīng)度值%初始化種群for i=1:sizepop %隨機(jī)產(chǎn)生一個(gè)種群 individuals.chrom(i,:)=Code(lenchrom,bound); x=individuals.chrom(i,:); %計(jì)算適應(yīng)度 individuals.fitness(i)=fun(x); %染色體的適應(yīng)度end%找最好的染色體bestfitness bestind

26、ex=max(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色體avgfitness=sum(individuals.fitness)/sizepop; %染色體的平均適應(yīng)度%記錄每一代進(jìn)化中最好的適應(yīng)度和平均適應(yīng)度trace=avgfitness bestfitness; %迭代尋優(yōu)%進(jìn)化開(kāi)始for i=1:maxgen i %選擇 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop;

27、%交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); %變異 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i maxgen,bound); %計(jì)算適應(yīng)度 for j=1:sizepop x=individuals.chrom(j,:); %解碼 individuals.fitness(j)=fun(x); end %找到最小和最大適應(yīng)度的染色體及它們?cè)诜N群中的位置 newbestfitness,newbestindex=max(individuals.fitness); worestfitness,worestindex=min(individuals.fitness); %代替上一次進(jìn)化中最好的染色體 if bestfitness<newbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitn

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論