运行遗基于遗传算法的BP神经网络MATLAB代码程序时总是出错!!!??? 用于数据预测的基于遗传算法BP神经网络的matlab程序

Matlab\u95ee\u9898\uff0d\uff0d\u5982\u4f55\u7528\u9057\u4f20\u7b97\u6cd5\u4f18\u5316BP\u795e\u7ecf\u7f51\u7edc\uff1f\u8fd9\u7bc7\u6587\u732e\uff08\u4e2d\u6587\uff09\u662f\u5982\u4f55\u505a\u7684\uff1f

\u6211\u4e0a\u6b21\u53d1\u7ed9\u4f60\u7684\u7a0b\u5e8f\uff0c\u53ea\u8981\u4f60\u4ece\u7f51\u4e0a\u4e0b\u4e00\u4e2amatcom45\u5c31\u884c\u4e86\uff0c\u76f4\u63a5\u88c5\u5728c\u76d8\u5c31\u53ef\u4ee5\u4e86\uff0c\u4f60\u53d1\u7ed9\u6211\u7684\u8bba\u6587\u53d8\u91cf\u592a\u591a\u7528\u4e00\u822c\u7684\u9057\u4f20\u7b97\u6cd5\u4e0d\u884c\uff0c\u6211\u4ece\u7f51\u4e0a\u53d1\u73b0\u4e86\u4e00\u4e2aPID\u795e\u7ecf\u7f51\u7edc\uff0c\u76f8\u5f53\u597d\u7528\uff0c\u4e0d\u7528\u8ba1\u7b97\u9690\u5c42\u6570\u76ee\uff0c\u5f88\u9002\u5408\u7528\u9057\u4f20\u7b97\u6cd5\u8fdb\u884c\u4f18\u5316\uff0c\u6211\u7f16\u4e86\u4e00\u4e2a\u4f8b\u7a0b\u56de\u6765\u53d1\u7ed9\u4f60\u3002

\u6211\u771f\u7684\u4e0d\u4f1a\u7528matlab\u7684\u5de5\u5177\u7bb1\uff0c\u5982\u679c\u4e00\u5b9a\u8981\u7528matlab\u6765\u505a\u4f18\u5316\uff0c\u6050\u6015\u6211\u5e2e\u4e0d\u4e86\u4f60\u4e86\u3002

\u4e3a\u4ec0\u4e48\u4e00\u5b9a\u8981\u7528matlab\uff0c\u7528C++\u81ea\u5df1\u7f16\u5199\u4e0d\u4e5f\u5f88\u597d\u5417\uff1f

\u4e0d\u61c2\u6211

这个问题也困扰了我好久,终于解决了。给你个ga.m程序,新建m文件复制进去,再运行程序试试。
%ga.m
function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
% GA run a genetic algorithm
% function [x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,
% termFN,termOps,selectFN,selectOps,
% xOverFNs,xOverOps,mutFNs,mutOps)
%
% Output Arguments:
% x - the best solution found during the course of the run
% endPop - the final population
% bPop - a trace of the best population
% traceInfo - a matrix of best and means of the ga for each generation
%
% Input Arguments:
% bounds - a matrix of upper and lower bounds on the variables
% evalFN - the name of the evaluation .m function
% evalOps - options to pass to the evaluation function ([NULL])
% startPop - a matrix of solutions that can be initialized
% from initialize.m
% opts - [epsilon prob_ops display] change required to consider two
% solutions different, prob_ops 0 if you want to apply the
% genetic operators probabilisticly to each solution, 1 if
% you are supplying a deterministic number of operator
% applications and display is 1 to output progress 0 for
% quiet. ([1e-6 1 0])
% termFN - name of the .m termination function (['maxGenTerm'])
% termOps - options string to be passed to the termination function
% ([100]).
% selectFN - name of the .m selection function (['normGeomSelect'])
% selectOpts - options string to be passed to select after
% select(pop,#,opts) ([0.08])
% xOverFNS - a string containing blank seperated names of Xover.m
% files (['arithXover heuristicXover simpleXover'])
% xOverOps - A matrix of options to pass to Xover.m files with the
% first column being the number of that xOver to perform
% similiarly for mutation ([2 0;2 3;2 0])
% mutFNs - a string containing blank seperated names of mutation.m
% files (['boundaryMutation multiNonUnifMutation ...
% nonUnifMutation unifMutation'])
% mutOps - A matrix of options to pass to Xover.m files with the
% first column being the number of that xOver to perform
% similiarly for mutation ([4 0 0;6 100 3;4 100 3;4 0 0])

% Binary and Real-Valued Simulation Evolution for Matlab
% Copyright (C) 1996 C.R. Houck, J.A. Joines, M.G. Kay
%
% C.R. Houck, J.Joines, and M.Kay. A genetic algorithm for function
% optimization: A Matlab implementation. ACM Transactions on Mathmatical
% Software, Submitted 1996.
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 1, or (at your option)
% any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details. A copy of the GNU
% General Public License can be obtained from the
% Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

%%$Log: ga.m,v $
%Revision 1.10 1996/02/02 15:03:00 jjoine
% Fixed the ordering of imput arguments in the comments to match
% the actual order in the ga function.
%
%Revision 1.9 1995/08/28 20:01:07 chouck
% Updated initialization parameters, updated mutation parameters to reflect
% b being the third option to the nonuniform mutations
%
%Revision 1.8 1995/08/10 12:59:49 jjoine
%Started Logfile to keep track of revisions
%

n=nargin;
if n<2 | n==6 | n==10 | n==12
disp('Insufficient arguements')
end
if n<3 %Default evalation opts.
evalOps=[];
end
if n<5
opts = [1e-6 1 0];
end
if isempty(opts)
opts = [1e-6 1 0];
end

if any(evalFN<48) %Not using a .m file
if opts(2)==1 %Float ga
e1str=['x=c1; c1(xZomeLength)=', evalFN ';'];
e2str=['x=c2; c2(xZomeLength)=', evalFN ';'];
else %Binary ga
e1str=['x=b2f(endPop(j,:),bounds,bits); endPop(j,xZomeLength)=',...
evalFN ';'];
end
else %Are using a .m file
if opts(2)==1 %Float ga
e1str=['[c1 c1(xZomeLength)]=' evalFN '(c1,[gen evalOps]);'];
e2str=['[c2 c2(xZomeLength)]=' evalFN '(c2,[gen evalOps]);'];
else %Binary ga
e1str=['x=b2f(endPop(j,:),bounds,bits);[x v]=' evalFN ...
'(x,[gen evalOps]); endPop(j,:)=[f2b(x,bounds,bits) v];'];
end
end

if n<6 %Default termination information
termOps=[100];
termFN='maxGenTerm';
end
if n<12 %Default muatation information
if opts(2)==1 %Float GA
mutFNs=['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation'];
mutOps=[4 0 0;6 termOps(1) 3;4 termOps(1) 3;4 0 0];
else %Binary GA
mutFNs=['binaryMutation'];
mutOps=[0.05];
end
end
if n<10 %Default crossover information
if opts(2)==1 %Float GA
xOverFNs=['arithXover heuristicXover simpleXover'];
xOverOps=[2 0;2 3;2 0];
else %Binary GA
xOverFNs=['simpleXover'];
xOverOps=[0.6];
end
end
if n<9 %Default select opts only i.e. roullete wheel.
selectOps=[];
end
if n<8 %Default select info
selectFN=['normGeomSelect'];
selectOps=[0.08];
end
if n<6 %Default termination information
termOps=[100];
termFN='maxGenTerm';
end
if n<4 %No starting population passed given
startPop=[];
end
if isempty(startPop) %Generate a population at random
%startPop=zeros(80,size(bounds,1)+1);
startPop=initializega(80,bounds,evalFN,evalOps,opts(1:2));
end

if opts(2)==0 %binary
bits=calcbits(bounds,opts(1));
end

xOverFNs=parse(xOverFNs);
mutFNs=parse(mutFNs);

xZomeLength = size(startPop,2); %Length of the xzome=numVars+fittness
numVar = xZomeLength-1; %Number of variables
popSize = size(startPop,1); %Number of individuals in the pop
endPop = zeros(popSize,xZomeLength); %A secondary population matrix
c1 = zeros(1,xZomeLength); %An individual
c2 = zeros(1,xZomeLength); %An individual
numXOvers = size(xOverFNs,1); %Number of Crossover operators
numMuts = size(mutFNs,1); %Number of Mutation operators
epsilon = opts(1); %Threshold for two fittness to differ
oval = max(startPop(:,xZomeLength)); %Best value in start pop
bFoundIn = 1; %Number of times best has changed
done = 0; %Done with simulated evolution
gen = 1; %Current Generation Number
collectTrace = (nargout>3); %Should we collect info every gen
floatGA = opts(2)==1; %Probabilistic application of ops
display = opts(3); %Display progress

while(~done)
%Elitist Model
[bval,bindx] = max(startPop(:,xZomeLength)); %Best of current pop
best = startPop(bindx,:);

if collectTrace
traceInfo(gen,1)=gen; %current generation
traceInfo(gen,2)=startPop(bindx,xZomeLength); %Best fittness
traceInfo(gen,3)=mean(startPop(:,xZomeLength)); %Avg fittness
traceInfo(gen,4)=std(startPop(:,xZomeLength));
end

if ( (abs(bval - oval)>epsilon) | (gen==1)) %If we have a new best sol
if display
fprintf(1,'\n%d %f\n',gen,bval); %Update the display
end
if floatGA
bPop(bFoundIn,:)=[gen startPop(bindx,:)]; %Update bPop Matrix
else
bPop(bFoundIn,:)=[gen b2f(startPop(bindx,1:numVar),bounds,bits)...
startPop(bindx,xZomeLength)];
end
bFoundIn=bFoundIn+1; %Update number of changes
oval=bval; %Update the best val
else
if display
fprintf(1,'%d ',gen); %Otherwise just update num gen
end
end

endPop = feval(selectFN,startPop,[gen selectOps]); %Select

if floatGA %Running with the model where the parameters are numbers of ops
for i=1:numXOvers,
for j=1:xOverOps(i,1),
a = round(rand*(popSize-1)+1); %Pick a parent
b = round(rand*(popSize-1)+1); %Pick another parent
xN=deblank(xOverFNs(i,:)); %Get the name of crossover function
[c1 c2] = feval(xN,endPop(a,:),endPop(b,:),bounds,[gen xOverOps(i,:)]);

if c1(1:numVar)==endPop(a,(1:numVar)) %Make sure we created a new
c1(xZomeLength)=endPop(a,xZomeLength); %solution before evaluating
elseif c1(1:numVar)==endPop(b,(1:numVar))
c1(xZomeLength)=endPop(b,xZomeLength);
else
%[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]);
eval(e1str);
end
if c2(1:numVar)==endPop(a,(1:numVar))
c2(xZomeLength)=endPop(a,xZomeLength);
elseif c2(1:numVar)==endPop(b,(1:numVar))
c2(xZomeLength)=endPop(b,xZomeLength);
else
%[c2(xZomeLength) c2] = feval(evalFN,c2,[gen evalOps]);
eval(e2str);
end

endPop(a,:)=c1;
endPop(b,:)=c2;
end
end

for i=1:numMuts,
for j=1:mutOps(i,1),
a = round(rand*(popSize-1)+1);
c1 = feval(deblank(mutFNs(i,:)),endPop(a,:),bounds,[gen mutOps(i,:)]);
if c1(1:numVar)==endPop(a,(1:numVar))
c1(xZomeLength)=endPop(a,xZomeLength);
else
%[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]);
eval(e1str);
end
endPop(a,:)=c1;
end
end

else %We are running a probabilistic model of genetic operators
for i=1:numXOvers,
xN=deblank(xOverFNs(i,:)); %Get the name of crossover function
cp=find(rand(popSize,1)<xOverOps(i,1)==1);
if rem(size(cp,1),2) cp=cp(1:(size(cp,1)-1)); end
cp=reshape(cp,size(cp,1)/2,2);
for j=1:size(cp,1)
a=cp(j,1); b=cp(j,2);
[endPop(a,:) endPop(b,:)] = feval(xN,endPop(a,:),endPop(b,:),...
bounds,[gen xOverOps(i,:)]);
end
end
for i=1:numMuts
mN=deblank(mutFNs(i,:));
for j=1:popSize
endPop(j,:) = feval(mN,endPop(j,:),bounds,[gen mutOps(i,:)]);
eval(e1str);
end
end
end

gen=gen+1;
done=feval(termFN,[gen termOps],bPop,endPop); %See if the ga is done
startPop=endPop; %Swap the populations

[bval,bindx] = min(startPop(:,xZomeLength)); %Keep the best solution
startPop(bindx,:) = best; %replace it with the worst
end

[bval,bindx] = max(startPop(:,xZomeLength));
if display
fprintf(1,'\n%d %f\n',gen,bval);
end

x=startPop(bindx,:);
if opts(2)==0 %binary
x=b2f(x,bounds,bits);
bPop(bFoundIn,:)=[gen b2f(startPop(bindx,1:numVar),bounds,bits)...
startPop(bindx,xZomeLength)];
else
bPop(bFoundIn,:)=[gen startPop(bindx,:)];
end

if collectTrace
traceInfo(gen,1)=gen; %current generation
traceInfo(gen,2)=startPop(bindx,xZomeLength); %Best fittness
traceInfo(gen,3)=mean(startPop(:,xZomeLength)); %Avg fittness
end

我运行了一下没出现你说的错误,你换个版本试一下吧,估计是软件的事。



请确认自己安装了goat(下载-解压-File-set path-add with subfolders-save(别忘了)-close)。
按照错误提示来说是系统无法找到nitializega等函数,说明没有将函数所在目录添加进path

将gaot文件夹中的ga.m拷贝到工作目录下即可

我也在弄这个,这个程序是从问路上弄得吧,有答案了给我说声

  • 鍩轰簬閬椾紶绠楁硶鐨凚P绁炵粡缃戠粶鐨勫簲鐢
    绛旓細鍩轰簬閬椾紶绠楁硶鐨凚P绁炵粡缃戠粶鐨勫簲鐢---闈炵嚎鎬у嚱鏁版嫙鍚堟憳瑕佷汉宸ョ缁忕綉缁滃湪璇稿棰嗗煙寰楀埌搴旂敤濡備俊鎭伐绋嬨佽嚜鍔ㄦ帶鍒躲佺數瀛愭妧鏈佺洰鏍囪瘑鍒佹暟瀛﹀缓妯°佸浘鍍忓鐞嗙瓑棰嗗煙锛屽苟涓旈殢鐫绁炵粡缃戠粶绠楀晩鍙戠殑涓嶆柇鏀硅繘浠ュ強鍏朵粬鏂扮畻娉曠殑缁撳悎锛屼娇鍏跺簲鐢ㄧ殑棰嗗煙瓒婃潵瓒婂箍銆侭P绁炵粡缃戠粶鏄洰鍓嶇缁忕綉缁滈鍩熺爺绌舵渶澶氬簲鐢ㄦ渶骞跨殑缃戠粶锛屼絾BP绁炵粡...
  • 杩愯閬楀熀浜庨仐浼犵畻娉曠殑BP绁炵粡缃戠粶MATLAB浠g爜绋嬪簭鏃舵绘槸鍑洪敊...
    绛旓細function net=GABPNET(XX,YY)% 浣跨敤閬椾紶绠楁硶瀵BP缃戠粶鏉冨奸槇鍊艰繘琛屼紭鍖,鍐嶇敤BP绠楁硶璁粌缃戠粶%鏁版嵁褰掍竴鍖栭澶勭悊nntwarn offXX=[1:19;2:20;3:21;4:22]';YY=[1:4];XX=premnmx(XX);YY=premnmx(YY);YY;%鍒涘缓缃戠粶net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm');%涓嬮潰浣...
  • 閬椾紶绁炵粡缃戠粶璇嗗埆鍘熺悊
    绛旓細閬椾紶绠楁硶涓鑸彲浠ラ氳繃涓ょ鏂瑰紡搴旂敤鍒绁炵粡缃戠粶涓銆備竴绉嶆柟寮忔槸鍒╃敤閬椾紶绠楁硶璁粌宸茬煡缁撴瀯鐨勭綉缁,浼樺寲缃戠粶鐨勮繛鎺ユ潈;鍙︿竴绉嶆柟寮忔槸鍒╃敤閬椾紶绠楁硶瀵绘壘缃戠粶鐨勮妯°佺粨鏋勫拰瀛︿範鍙傛暟銆傜洰鍓嶈繖绉嶆柟娉曞湪鐞嗚涓婅繕涓嶅畬鍏ㄦ垚鐔,瀵讳紭鏈虹悊銆佸涔犳晥鐜囩瓑鏈夊緟杩涗竴姝ョ爺绌,绂诲疄闄呭簲鐢ㄨ繕鏈変竴瀹氱殑璺濈銆 瀵瑰灞傚墠棣堢缁忕綉缁,鐩墠鐢ㄥ緱鏈澶氱殑瀛︿範绠楁硶鏄...
  • 閬椾紶绠楁硶涓轰粈涔堝彲浠ヤ紭鍖bp绁炵粡缃戠粶
    绛旓細閬椾紶绠楁硶锛圙enetic Algorithm锛夋槸妯℃嫙杈惧皵鏂囩敓鐗╄繘鍖栬鐨勮嚜鐒堕夋嫨鍜岄仐浼犲鏈虹悊鐨勭敓鐗╄繘鍖栬繃绋嬬殑璁$畻妯″瀷锛屾槸涓绉嶉氳繃妯℃嫙鑷劧杩涘寲杩囩▼鎼滅储鏈浼樿В鐨勬柟娉曘傞仐浼犵畻娉曟槸浠庝唬琛ㄩ棶棰樺彲鑳芥綔鍦ㄧ殑瑙i泦鐨勪竴涓缇わ紙population锛夊紑濮嬬殑锛岃屼竴涓缇ゅ垯鐢辩粡杩囧熀鍥狅紙gene锛夌紪鐮佺殑涓瀹氭暟鐩殑涓綋(individual)缁勬垚銆傛瘡涓釜浣撳疄闄呬笂...
  • matlab鐨閬椾紶绠楁硶浼樺寲BP绁炵粡缃戠粶
    绛旓細姝ラ锛氭湭缁忛仐浼犵畻娉曚紭鍖鐨凚P绁炵粡缃戠粶寤烘ā 1銆 闅忔満鐢熸垚2000缁勪袱缁撮殢鏈烘暟(x1,x2)锛屽苟璁$畻瀵瑰簲鐨勮緭鍑簓=x1^2+x2^2锛屽墠1500缁勬暟鎹綔涓鸿缁冩暟鎹甶nput_train锛屽悗500缁勬暟鎹綔涓烘祴璇曟暟鎹甶nput_test銆傚苟灏嗘暟鎹瓨鍌ㄥ湪data涓緟閬椾紶绠楁硶涓浣跨敤鐩稿悓鐨勬暟鎹2銆 鏁版嵁棰勫鐞嗭細褰掍竴鍖栧鐞嗐3銆 鏋勫缓BP绁炵粡缃戠粶...
  • 閬椾紶绠楁硶浼樺寲BP绁炵粡缃戠粶鏄笉鏄細浣胯缁冩椂闂村彉鎱!
    绛旓細1銆閬椾紶绠楁硶浼樺寲BP绁炵粡缃戠粶鏄寚浼樺寲绁炵粡缃戠粶鐨勫弬鏁帮紱2銆佸洜姝わ紝瀵硅缁冩椂闂存病鏈夊奖鍝嶃
  • 鍏充簬閬椾紶绠楁硶浼樺寲BP绁炵粡缃戠粶鐨勯棶棰
    绛旓細2銆閬椾紶绠楁硶浼樺寲鐨凚P绁炵粡缃戠粶寤烘ā(1)涓荤▼搴%娓呯┖鐜鍙橀噺clcclear %璇诲彇鏁版嵁load data.mat %鑺傜偣涓暟inputnum=2;hiddennum=5;outputnum=1; %璁粌鏁版嵁鍜岄娴嬫暟鎹甶nput_train=input(1:1500,:)';input_test=input(1501:2000,:)';output_train=output(1:1500)';output_test=output(1501:2000)'; %閫夎繛鏍锋湰...
  • 璋佹湁鐢ㄤ簬鏁版嵁棰勬祴鐨勭敤閬椾紶绠楁硶鏀硅繘鐨凚P绁炵粡缃戠粶绋嬪簭
    绛旓細寤虹珛BP缃戠粶 net=newff(minmax(pp),[15,1],{'logsig','purelin'},'trainlm');搴旂敤閬椾紶绠楁硶瀵逛紭鍖栫綉缁滃垵濮嬪 in=size(pn,1);out=size(tn,1);hi=15;%闅愬惈灞傝妭鐐规暟 L=in*hi+hi*out+hi+out;%閬椾紶绠楁硶缂栫爜闀垮害 aa=ones(L,1)*[-1,1];popu=50;%绉嶇兢瑙勬ā initPpp=initializega(popu,aa,...
  • 鍩轰簬浼樺寲鐨凚P绁炵粡缃戠粶閬ユ劅褰卞儚鍒嗙被
    绛旓細瀹為獙缁撴灉琛ㄦ槑,鎶婅繖绉鍩轰簬閬椾紶绠楁硶鐨凚P绁炵粡缃戠粶搴旂敤浜庨仴鎰熷奖鍍忕洃鐫e垎绫,鍏锋湁杈冮珮鐨勫垎绫荤簿搴︺ 鍏抽敭璇:BP绁炵粡缃戠粶;閬椾紶绠楁硶;閬ユ劅褰卞儚鍒嗙被 1 寮曡█ 闅忕潃閬ユ劅鎶鏈殑蹇熷彂灞,閬ユ劅鎶鏈凡缁忓箍娉涘簲鐢ㄤ簬鍚勪釜棰嗗煙銆傚叾涓,閬ユ劅褰卞儚鍒嗙被鏄叾閲嶈缁勬垚閮ㄥ垎銆傝繎骞存潵,闅忕潃浜哄伐绁炵粡缃戠粶鐞嗚鐨勫揩閫熷彂灞,绁炵粡缃戠粶鎶鏈棩鐩婃垚涓洪仴鎰熷奖鍍忓垎绫讳腑鐨...
  • BP绠楁硶銆BP绁炵粡缃戠粶銆閬椾紶绠楁硶銆佺缁忕綉缁滆繖鍥涜呬箣闂寸殑鍏崇郴
    绛旓細杩欏洓涓兘灞炰簬浜哄伐鏅鸿兘绠楁硶鐨鑼冪暣銆傚叾涓BP绠楁硶銆BP绁炵粡缃戠粶鍜岀缁忕綉缁 灞炰簬绁炵粡缃戠粶杩欎釜澶х被銆閬椾紶绠楁硶涓鸿繘鍖栫畻娉曡繖涓ぇ绫汇傜缁忕綉缁滄ā鎷熶汉绫诲ぇ鑴戠缁忚绠楄繃绋嬶紝鍙互瀹炵幇楂樺害闈炵嚎鎬х殑棰勬祴鍜岃绠楋紝涓昏鐢ㄤ簬闈炵嚎鎬ф嫙鍚堬紝璇嗗埆锛岀壒鐐规槸闇瑕佲滆缁冣濓紝缁欎竴浜涜緭鍏ワ紝鍛婅瘔浠栨纭殑杈撳嚭銆傝嫢骞叉鍚庯紝鍐嶇粰鏂扮殑杈撳叆锛岀缁...
  • 扩展阅读:精神病寿命一般多少年 ... 脑神经恢复一般要多久 ... 精神病一年补助多少钱 ... 精神分裂早期的8个征兆 ... 什么人容易得精神分裂症 ... 神经受损五年了才恢复 ... 精神分裂症最害怕什么 ... 精神分裂最佳恢复方法 ... 精神分裂症自愈的方法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网