多人工干涉算法的編程實(shí)現(xiàn)方案
出處:電子技術(shù)應(yīng)用 發(fā)布于:2011-06-29 18:09:35
引言
人工干涉是計(jì)算機(jī)面對(duì)現(xiàn)實(shí)的問(wèn)題,計(jì)算機(jī)與人的區(qū)別就在于“人工干涉”。這么說(shuō)相信大家就明白了,下文就更容易明白。下面將通過(guò)實(shí)例,和讀者們探討利用多人工算法來(lái)解決“人工干涉”的技巧。

1 控制論中系統(tǒng)化可控規(guī)范型算法及多人工干涉算法編程實(shí)現(xiàn)問(wèn)題的提出
控制論中系統(tǒng)化可控規(guī)范型的算法是這樣描述的:
從一般著手,考慮多輸入多輸出系統(tǒng),系統(tǒng)的狀態(tài)空間方程為:
其中A為(n×n)維矩陣,B和C分別為(n×m)和(p×n)維矩陣。
如系統(tǒng)完全可控,則可控性矩陣Wc的秩為n,即:rank(Wc)=rank[B AB…n-1B]=n。
化可控規(guī)范型的步驟就是:先在Wc中找出n個(gè)線(xiàn)形無(wú)關(guān)的列,再按此來(lái)構(gòu)成相應(yīng)的坐標(biāo)變換陣,求取規(guī)范型。
1.1 找出Wc中n個(gè)線(xiàn)形無(wú)關(guān)列
按列搜索方案,對(duì)給定矩陣(A,B),按圖1構(gòu)成格柵圖。
假定n=6,m=4。設(shè)bi為B的第i列,先選定非零列向量b1并在表征它的A0b1格內(nèi)記上“×”然后再看Ab1(即A1b1),若Ab1與b1線(xiàn)形無(wú)關(guān),則在表征Ab1的格內(nèi)記上“×”。如此按格柵圖關(guān)于B的第1列b1繼續(xù)選下去,直到發(fā)現(xiàn)向量Av1b1與先前的向量組{b1,Ab1,…,Av1-1b1}線(xiàn)形相關(guān),則終止按b1方向的選擇,并在Av1b1的格內(nèi)記上“○”。如果v1<n,則繼續(xù)對(duì)第2列b2進(jìn)行類(lèi)似搜索,若b2與{b1,Ab1,…Av1-1b1}線(xiàn)形無(wú)關(guān),則取定b2,并在A0b2的格內(nèi)記上“×”。同樣,按b2繼續(xù)向下搜索,直至Av2b2先前取定的所有向量為線(xiàn)形相關(guān),并在格內(nèi)記“○”。按此步驟繼續(xù)進(jìn)行,直至取到第l列,并有v1+v2+…+v1=n時(shí)結(jié)束。這樣Wc中的n個(gè)線(xiàn)形無(wú)關(guān)的列向量即格柵圖中用“×”表示的那個(gè)列向量,并可得到指數(shù)集{v1,v2,…vm}。
1.2 構(gòu)成相應(yīng)的坐標(biāo)變換陣
將從Wc中挑選出的n個(gè)列向量排成如下非奇異陣:
Q=[b1 Ab1 …Av1-1bl … bl Abl … Avl-1b1]
并令hi表示Q-1的第行,然后構(gòu)成坐標(biāo)變換陣:
1.3 求取可控規(guī)范型
系統(tǒng)的可控規(guī)范型為:
其中Ac=PAP-1,Bc=PB,Cc=CP-1。
具體地講,在MATLAB語(yǔ)言環(huán)境下除不可控矩陣的生成、矩陣求逆及矩陣相乘可直接實(shí)現(xiàn)外,還要編制程序解決以下幾個(gè)問(wèn)題:
·選取可控矩陣中線(xiàn)形無(wú)關(guān)列向量;
·對(duì)選定的線(xiàn)形無(wú)關(guān)列向量按格柵列進(jìn)行分組記數(shù),求得{v1,v2,…,vm};
·將選出的n個(gè)列向量按格柵列的順序重新排列,形成矩陣Q;
·從Q-1中抽取特定行;
·將抽取的特定行放置到新矩陣的特定行位置,空缺行用放置行的特定計(jì)算來(lái)填充。
基于通用性考慮,可控系統(tǒng)的矩陣維數(shù)不定,線(xiàn)形無(wú)關(guān)列向量位置不定更增加不編程的難度。理解的容易和編程的困難共存于同一個(gè)算法,這絕非偶然,而是一類(lèi)特殊的多人工干涉算法的編程實(shí)現(xiàn)問(wèn)題的典型特點(diǎn)。由于類(lèi)似的問(wèn)題不時(shí)遇到,因而有必要對(duì)這類(lèi)問(wèn)題進(jìn)行較深入的研究。
2 多人工干涉算法編程實(shí)現(xiàn)問(wèn)題的特點(diǎn)及一些實(shí)用技巧
2.1 特點(diǎn)及定義
上面提到的系統(tǒng)化可控規(guī)范型的算法是多人工干涉算法的一個(gè)典型實(shí)例。事實(shí)上將上面的算法拆開(kāi)來(lái)看,各個(gè)子算法和在語(yǔ)言編程中常用的諸如記數(shù)、求和、冒泡法排序等小程序類(lèi)似,均屬于一類(lèi)問(wèn)題。
這類(lèi)問(wèn)題的算法描述特點(diǎn):符合人類(lèi)的思維習(xí)慣,容易理解,但難以用明確簡(jiǎn)短的數(shù)學(xué)公式表示。
這類(lèi)問(wèn)題的編程實(shí)現(xiàn)特點(diǎn):要較多地、靈活地綜合應(yīng)用語(yǔ)言的數(shù)組定義、循環(huán)語(yǔ)句、判斷語(yǔ)句及它們的復(fù)雜嵌套關(guān)系。編程難度大,但編程實(shí)現(xiàn)后可達(dá)到一勞永逸的目的。
綜上所述,多人工干涉算法的編程實(shí)現(xiàn)可近似定義為:由于某一問(wèn)題的算法描述更符合人類(lèi)的思維而與計(jì)算機(jī)的思維相去較遠(yuǎn)而導(dǎo)致編程實(shí)現(xiàn)的困難,這樣的算法從計(jì)算機(jī)的角度考慮,稱(chēng)為人工干涉算法。當(dāng)問(wèn)題中人工干涉算法較多時(shí),就稱(chēng)為多人工干涉算法?;诙嗳斯じ缮嫠惴ǖ挠?jì)算機(jī)語(yǔ)言編制即多人工干涉算法的編程實(shí)現(xiàn)。
除了MATLAB軟件包中的二次開(kāi)發(fā)外,在開(kāi)發(fā)動(dòng)力學(xué)仿真軟件ADAMS等商用軟件中,在用基本編程語(yǔ)言編制優(yōu)化設(shè)計(jì)算法、神經(jīng)網(wǎng)絡(luò)算法、遺傳算法等程序時(shí)都會(huì)遇到一些多人工干涉算法的編程實(shí)現(xiàn)問(wèn)題。而且,從一定意義上講,多人工干涉算法的編程實(shí)現(xiàn)實(shí)際上是將人的一些思維方式強(qiáng)加到計(jì)算機(jī)上,對(duì)這一問(wèn)題的深入研究是實(shí)現(xiàn)計(jì)算機(jī)智能化的一條途徑。因而對(duì)多人工干涉算法編程實(shí)現(xiàn)問(wèn)題的研究具有深遠(yuǎn)的意義。
2.2 一些實(shí)用技巧
(1)先結(jié)合例題考慮特定算法,再考慮通用算法。從特殊到一般,這里體現(xiàn)了歸納的思想。
?。?)將多人工干涉算法拆分成幾個(gè)單獨(dú)的人工干涉算法,針對(duì)具體目標(biāo),逐個(gè)編程實(shí)現(xiàn)。為確保算法正確,應(yīng)保證每個(gè)小程序都正確,在編程對(duì)每個(gè)小程序的計(jì)算結(jié)果都要加以顯示,以便發(fā)現(xiàn)問(wèn)題。
?。?)熟練應(yīng)用數(shù)組定義、分組記數(shù)、分組求和、循環(huán)嵌套、排序等編程基本操作。這些相對(duì)簡(jiǎn)單的操作實(shí)際上是多人工干涉算法編程實(shí)現(xiàn)的基礎(chǔ)。
?。?)重視指針的應(yīng)用。有時(shí)除了要分組記數(shù)外,還要明確各組元素的位置和內(nèi)容,這就要考慮使用指針來(lái)指向特定數(shù)據(jù)。
此外,如使用動(dòng)態(tài)數(shù)組節(jié)省變量、加注釋也是常用的技巧。本文給出的實(shí)例是基于MATLAB語(yǔ)言開(kāi)發(fā)的。
3 多人工干涉編程實(shí)現(xiàn)的一個(gè)實(shí)例
ccs.m(can control standard)在MATLAB5.3環(huán)境下運(yùn)行通過(guò)
function [ac,bc,cc]=ccs(a,b,c)
%this function can be used to transfer a system which
%can be controlled to its standard form
%using:[x,y,z]=ccs(a,b,c)
%a,b,c are system model ∑(a,b,c)
co=ctrb(a,b);
%確認(rèn)可控性,只有可控才能化可控規(guī)范型
pd0=det(a);
pd1=rank(co);
num=size(a,1);
if (pd0~=0),display ('A is not singularity');
else ,display('A is singularity');end
if (pd1= =num),display('system can be controlled');
else ,display ('system may not be controlled');end
%通過(guò)選定線(xiàn)形無(wú)關(guān)列向量組成矩陣,對(duì)選定的列向量進(jìn)行按格柵列記數(shù)
num1=size(co,2);
num2=size(b,2);
js=zeros(1,num2);
js(1)=1;
jsp(1,1)=1;
wc=co(:,1);
nn=1;
for n=2:num1
wcls=[wc co(:,n)];
if nn= =num
break
end if rank(wcls)>nn
wc=wcls;
nn=rank(wcls);
pp=mod(n,num2);
if pp= =0,pp=num2;end
js(pp)=js(pp)+1;
jsp(pp,js(pp))=n;
end
end
%將選定列向量按其格柵列順序進(jìn)行排序
q=0;
for m=1:num2
for n=1:js(m)
q=q+1;
wc(:,q)=co(:,jsp(m,n));
end
end
%求逆
wc=inv(wc);
js;
%確定抽取行的行號(hào)
jsls=0;
for n=1:num2
jsls=jsls+js(n);
jss(n)=jsls;
end
jss;
%確定放置行的行號(hào)
jsss(1)=1;
for n=2:num2
jsss(n)=jss(n-1)+1;
end
jsss;
%放置并計(jì)算各行,確定P陣
for n=1:num2
dp(jsss(n),:)=wc(jss(n),:);
for m=1:js(n)-1
dp(jsss(n)+m,:)=wc(jss(n),:)*a^m;
end
end
dp;
%終求取規(guī)范型
ac=dp*a*inv(dp);
bc=dp*b;
cc=c*inv(dp);
用同樣的思想可以編制出系統(tǒng)化可控規(guī)范型及系統(tǒng)結(jié)構(gòu)分解等控制工具箱中未提供的通用MATLAB程序。
通過(guò)多人工干涉算法的編程實(shí)現(xiàn)可以將人類(lèi)的一些思想強(qiáng)加于計(jì)算機(jī),從而開(kāi)辟了一條實(shí)現(xiàn)計(jì)算機(jī)智能化的新途徑。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 掌握 DSP:原理剖析與應(yīng)用實(shí)踐2025/5/8 14:03:24
- 模糊邏輯在 DSP 上實(shí)時(shí)執(zhí)行2023/7/25 17:13:30
- 多速率DSP及其在數(shù)模轉(zhuǎn)換中的應(yīng)用2023/6/12 15:28:52
- 使用 DSP 加速 CORDIC 算法2023/3/29 15:46:30
- 高速DSP系統(tǒng)的信號(hào)完整性2022/9/26 16:45:38
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線(xiàn)寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10









