bcc演算法
㈠ 求演算法, aaaabbbcc形式的輸出為4a3b2c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structdata{
chara;
inttemp;};
intmain()
{ inti;
structdataalb[52];
for(i=0;i<52;i++)
{
staticchartempchar='A';
if(tempchar!='[')
{alb[i].a=tempchar++;
alb[i].temp=0;
}
else{tempchar='a';
alb[i].a=tempchar++;
alb[i].temp=0;
}
}
chartempchar[100];
printf("pleaseinputthestring:");
gets(tempchar);
i=strlen(tempchar);
inttempi;
for(tempi=0;tempi<i;tempi++)
{
inttempj=0;
while(1)
{
if(alb[tempj].a!=tempchar[tempi])
tempj++;
elsebreak;
}
alb[tempj].temp++;
}
for(i=0;i<52;i++)
{
if(alb[i].temp!=0)
{
printf("%d",alb[i].temp);
printf("%c",alb[i].a);
}
}
return0;
}
㈡ BCC總量多少
BCC中文名稱是比特幣現金,BCC的總量為8400個,和比特幣的總量是一樣的。
比特幣現金是由一小部分比特幣開發者推出的不同配置的新版比特幣。
比特幣現金是通過對比特幣進行一次硬分叉產生的一種新型區塊資產。刪除了隔離驗證、取消了區塊大小1M的限制,延續中本聰的擴容路線圖,是鏈上擴容的一種。
(2)bcc演算法擴展閱讀:
比特幣的產生原理:
比特幣的本質其實就是一堆復雜演算法所生成的特解。特解是指方程組所能得到無限個(其實比特幣是有限個)解中的一組。而每一個特解都能解開方程並且是唯一的。
以人民幣來比喻的話,比特幣就是人民幣的序列號,知道了某張鈔票上的序列號,就擁有了這張鈔票。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有 2100 萬個特解,所以比特幣的上限就是 2100 萬。
完全去處中心化,沒有發行機構,也就不可能操縱發行數量。其發行與流通,是通過開源的p2p演算法實現。
㈢ 水動力彌散方程遺傳反演方法
10.3.1 數學模型
無論是實驗室或野外的彌散試驗,最常用的數學模型是一維流場中點源連續注入問題的水質模型[66]。假設:
1)滲流區域為半無限沙槽,且地下水流動和示蹤劑彌散可以簡化為一維均勻穩定流和一維彌散;
2)流體是不可壓縮的均質流體,溫度不變,滲流區域的介質為均質且各向同性;
3)當t=0時,滲流區域中不存在示蹤劑;
4)從t=0時刻開始在滲流區域上端連續注入含示蹤劑濃度為C0的流體;
5)除注入點,滲流區域不存在其他源和匯。
依據上述假定,取地下水流動方向為x軸的正向,取示蹤劑注入點為坐標原點。任意點x處在時刻t時的示蹤劑濃度C(x,t)滿足如下數學模型。
含水層參數識別方法
方程中D為彌散系數,v為地下水流速。
10.3.2 模型的解析解
數學模型[66](10-17)可用Laplace變換求解,其解為:
含水層參數識別方法
若令 CR=,則
含水層參數識別方法
其中:erfc(x)=1-erf(x)=exp(-z2)d z,exp(x)=ex。
10.3.3 反演方法簡介
地下水水質模型[66]最常用的反演方法為正態分布函數法和配線法,配線法和泰斯模型的方法有相似處,這里我們主要介紹正態分布函數法。
在式(10-19)中,當x很大時,右端第二項與第一項相比非常小,可以忽略。Φ.Μ.鮑契維爾已證明,當D/(vx)≤ 0.005時,忽略第二項後誤差≤4%。因此,當x很大時,即離示蹤劑注入點很遠時,濃度的分布可近似表示為:
含水層參數識別方法
由於
含水層參數識別方法
其中,F(x)為一正態分布函數,期望值為μ=vt,均方差為。當 x 很大時,1-CR服從於正態分布。已知標准正態分布函數Φ有如下性質:
Φ(1)=0.8413
Φ(-1)=0.1587
我們把濃度為0.8413的x坐標與濃度為0.1578的x坐標差定義為過渡帶的寬度,則對於均方差為σ的正態分布函數來說,過渡帶寬度e與均方差σ之間有如下關系
含水層參數識別方法
由於1-0.8413=0.1587,1-0.1587=0.8413。1-F(x)和F(x)所代表的過渡帶的寬度是相等的,利用這個性質從CR-x關系圖上可以很容易地計算出過渡帶的寬度為:
含水層參數識別方法
其中x0.1587代表CR=0.1587時所對應的x坐標,x0.8413代表CR=0.8413時所對應的x坐標。由方程(10-22)和σ=可以很方便地計算出彌散系數D 的值:
含水層參數識別方法
如果彌散試驗給出的是CR-t關系曲線圖,上式可作適當的修改。
由(10-20)式可得:
含水層參數識別方法
當CR=0.5時,如果彌散試驗給出的是CR-x關系曲線圖有:
含水層參數識別方法
當CR=0.5時,如果彌散試驗給出的是CR-t關系曲線圖有:
含水層參數識別方法
用式(10-26)和式(10-27)可以很方便地計算地下水的流速。
其他的反演方法如配線法,Gauss-Newton法均可解水質反演問題。但是用正態分布函數法和配線法因為要查對坐標值,容易造成不同的人查出不同的坐標,引起人為誤差。Gauss-Newton法因為要給定參數的初值,如果參數初值給的不合適,解不收斂。尤其對於地下水水質問題,對地下水流速特別敏感,而計算開始時並不知道速度的分布范圍,極易造成解的發散情況。Gauss-Newton法因為要進行導數的操作,求導的過程很容易引起誤差,使結果帶有較大的誤差。Gauss-Newton最大的優點是初值給的合適時,計算速度特別快。
10.3.4 遺傳反演方法
遺傳反演方法的特點是只要正演問題可以計算,反演問題就能進行計算。它是將生物遺傳的特點引入到參數反演的過程中,通過一系列的正演計算達到反演的目的。
首先構造目標誤差函數。
設區域有m個觀測值,則構造誤差函數為
含水層參數識別方法
其中:為實測值,Ci (p1,p2,…,pn)為計算值。和Ci 具有相同的時間和空間坐標,p1,p2,…,pn 為參數,為書寫方便記 P=[p1,p2,…,pn]。
模型選定之後,通過改變參數使誤差函數達到最小值。那麼本問題就轉化為約束條件下的優化問題。
含水層參數識別方法
在地下水彌散參數計算中,有解析解的簡單模型應用很廣。將優化問題(6-29)和這些模型結合起來,方程(10-29)轉化為:
含水層參數識別方法
其中:E()為目標誤差函數,v為地下水流速,D為彌散系數,[va,vb]為v的取值區間,[Da ,Db ]為 D 的取值區間,為時空某點的地下水中某種溶質的濃度(或相對濃度)觀測值,Ci (v,D)為時空某點的地下水中某種溶質濃度(或相對濃度)的計算值,可用解析解計算。
和地下水滲流的計算一樣,我們也用如下8種不同的遺傳演算法進行反演計算試驗。
a.簡單遺傳演算法(SGA);
b.優體克隆遺傳演算法(The Best Chromosome Clone GA=BCC-GA);
c.優體克隆+子體優生(Younger Generation Chromosomes Prepotency)的遺傳演算法(BCC-YGCP-GA);
d.優體克隆+子體優生+多代調環(Multi-Generations Adjusting Environment=MAE)的遺傳演算法(BCC-YGCP-MGAE-GA);
e.多代調環的遺傳演算法(MGAE-GA);
f.優體克隆+多代調環的遺傳演算法(BCC-MGAE-GA);
g.子體優生的遺傳演算法(YGCP-GA);
h.子體優生+多代調環的遺傳演算法(YGCP-MGAE-GA)。
試驗的終止原則,由於要進行對比,我們選定進化代數為1000時終止計算。
例1.在水平密封的圓筒砂柱中做連續注入示蹤示蹤劑的試驗,在距注入孔0.65 m的觀測孔中獲得濃度比值資料見表10-14,試求出地下水流速和彌散系數[22]。
此問題的解析解為:
含水層參數識別方法
表10-14 相對濃度實測資料表
表10-15 不同的遺傳反演方法目標誤差函數計算結果比較表
本例題主要是已知相對濃度CR和時間t之間的關系來求地下水流速v和彌散系數D。在用遺傳演算法反演參數時,在所有方案中均採用:地下水流速v的初始取值區間為(0,1000.0 m/h),彌散系數D的初始取值區間為(0,0.1),遺傳代數Num-Gen=1000,種群數Pop-Size=50,交叉概率Pc=0.7,變異概率Pm=0.3,評價函數中的alph=0.05。所有與多代調環有關的計算方案,其代數選擇均為10。前500代每隔10代對v和D設置一次取值區間,取值區間設為(0.75vbest,1.25vbest),v為變數可代表v或D,Vbest為這十代中最優的染色體,500代後開始進行區間壓縮技術,其壓縮方法見前章所述,壓縮系數為0.4。其計算結果見圖10-6和表10-15。
圖10-6(1)遺傳反演方法進化代數與目標函數計算結果圖
圖10-6(2)遺傳反演方法進化代數與目標函數計算結果圖
從計算結果可以看出,簡單的遺傳演算法(1)、多代調環遺傳演算法(5)和優體克隆+多代調環遺傳演算法(6)在達到1000代時,並沒有明顯的收斂特徵,目標函數仍處於波動狀態,其地下水流速v和彌散系數D離真值相差較遠。特別是第6種優體克隆+多代調環遺傳演算法因特殊的組合,一直沒有改變目標誤差函數,所有與多代調環有關的遺傳演算法其收斂速度均較慢,這主要是環境調整的不合適,使染色體失去了在全局生存的空間。如果調整環境的代數變為20,其收斂速度會有很大的改變。對於本問題第2種優體克隆遺傳演算法、第3種優體克隆+子體優生遺傳演算法和第7種子體優生遺傳演算法均快速收斂,達到40代時已基本收斂到全局最優解。
優體克隆+子體優生遺傳演算法達到目標函數最小時,其地下水流速v=33.677212 m/d,彌散系數D=0.053982 m2/d。其計算曲線與實測曲線擬合圖見圖10-7。用遺傳演算法反演的地下水流速和彌散系數計算結果見表10-16和表10-17。
圖10-7 相對濃度計算曲線與實測曲線擬合圖
表10-16 地下水流速v反演結果表
表10-17 彌散系數D反演結果表
㈣ 為什麼用DEAP解BCC模型,我1年和10年數據的結果一樣
DEA分析步驟及結果解釋
deap 2.1軟體分析過程及結果解釋:
第一步,設置參數,變數及選定所用模型,下述:16為DMU個數,即總體樣本個數;1為面板數據中的年限,如果做橫截面數據,就寫1,面板數據則寫選取的時序個數(如年數);4,3分別為產出指標、投入指標個數(在編輯EG1。DTA文件時,產出指標放前面);0表示選取的是投入主導型模型,1表示產出主導型,二者區別不大,關鍵結合問題選取,一般選投入主導型;crs表示不考慮規模收益的模型即C^2 R模型,vrs表示考慮規模收益模型即BC^2模型;最後是內部演算法,一般選0就可以。
eg1.dta DATA FILE NAME
eg1.out OUTPUT FILE NAME
16 NUMBER OF FIRMS
1 NUMBER OF TIME PERIODS
4 NUMBER OF OUTPUTS
3 NUMBER OF INPUTS
0 0=INPUT AND 1=OUTPUT ORIENTATED
1 0=CRS AND 1=VRS
0 0=DEA(MULTI-STAGE), 1=COST-DEA, 2=MALMQUIST-DEA, 3=DEA(1-STAGE), 4=DEA(2-STAGE)
第二步,結果解釋:
1、效率分析EFFICIENCY SUMMARY:
firm crste vrste scale
四列數據分別表示:firm樣本次序;crste不考慮規模收益是的技術效率(綜合效率);vrste考慮規模收益時的技術效率(純技術效率);scale考慮規模收益時的規模效率(規模效率),純技術效率和規模效率是對綜合效率的細分;最後有一列irs,---,drs,分別表示規模收益遞增、不變、遞減。
2、 SUMMARY OF OUTPUT SLACKS、SUMMARY OF INPUT SLACKS分別表示產出和投入指標的鬆弛變數取值,即原模型中的s值。
3、SUMMARY OF PEERS:
表示非DEA有效單元根據相應的DEA有效單元進行投影即可以實現相對有效。後面有相應的權數SUMMARY OF PEER WEIGHTS。
㈤ 求演算法, aaaabbbcc形式的輸出為4a3b2c,程序關鍵的地方最好能順便講解一下。謝謝了。我沒有分。。
#include<stdio.h>
int main()
{
int n = 1;
char curr, c;
curr = getchar(); //先讀入一個字元,並記錄其為當前字元
while(curr != '\n') //循環結束條件是讀入換行符
{
c = getchar(); //讀入一個字元
if(c == curr) //如果新讀入的字元與上一個字元一致,則將計算器加1
{
++n;
}
else
{
printf("%d%c", n, curr); //如果新讀入的字元與上一個字元不一致,輸出上個字元的出現次數和字元本身,並將計算器重置成1,將新讀入的字元記錄為當前字元
n = 1;
curr = c;
}
}
sleep(10);
return 0;
}
㈥ 方剛說:對區塊鏈的幾個誤解
在2017年的8月2號,viaBTC挖出了史上第一個大於1M的區塊,從此比特幣分裂成兩條鏈:BTC和BCC。從本質上來說,BCC是由於UAHF的實施產生的一種新幣種,它也符合中本聰的初衷。
BCC是比特幣的網路分叉
其實BCC是比特幣的網路分叉是一種不正確的解讀,比特幣本身網路運行穩定,根本不存在分叉的情況。而BCC被國際定義為:通過復制比特幣區塊鏈並更改一定的代碼而出現的全新幣種。不僅如此,BCC也不符合比特幣網路分叉的定義,因為BTC和BCC是完全不同的兩條鏈。
比特幣全網信息沒能同步在一條鏈上,出現了兩條(多個)一模一樣的比特幣區塊鏈網路,兩個網路都有大量的礦工挖礦,在兩個不同的網路上發生的交易不能同步互通,這樣產生了兩條連難度都是一模一樣的兩條平行鏈,這個才叫分叉。
開發者中心化的問題
比特幣曾因為開發者者中心化的問題導致長達三年之久的擴容之爭,把比特幣社區搞得雞犬不寧。BCC作為比特幣的孿生兄弟同樣面臨這個問題,社區擔憂未來比特幣的擴容之爭歷史會在BCC上重演。社區誤認為負責BCC開發團隊只有Bitcoin ABC,開發團隊的單一化必然會導致開發者中心化的問題。
但實際上,BCC 目前共有四個開發團隊,分別是 Bitcoin XT, Bitcoin Classic, Bitcoin Unlimited, Bitcoin ABC。他們都是比特幣擴容方案的競爭者,目前都已開發了BCC的兼容版本。
這四個開發團隊基本上包含了比特幣擴容爭論中支持大區塊的團隊,不僅如此,這也可以保證開發團隊之間的相互競爭,而且還有望吸引更多的開發團隊加入到它們的行列中。
BCC受某個組織控制
楊海坡創立的ViaBTC是全球第一家上線BCC的交易平台,也是最早挖BCC的人,第一個區塊就是有ViaBTC挖到。社區擔憂BCC受到某個中心化的阻止所控制,成為某些人的政治工具。
但實際上,BCC是比特幣長達三年之久的擴容之爭的產物,是由一個龐大的大區塊支持者構成的社區支撐的去中心化數字貨幣,是比特幣的競爭幣。刪除了隔離驗證,取消了區塊大小1M的限制,堅持的是鏈上擴容路線。
㈦ 什麼是比特幣現金 比特幣現金挖礦好挖嗎
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。
P2P的去中心化特性與演算法本身可以確保無法通過大量製造比特幣來人為操控幣值。基於密碼學的設計可以使比特幣只能被真實的擁有者轉移或支付。這同樣確保了貨幣所有權與流通交易的匿名性。比特幣與其他虛擬貨幣最大的不同,是其總數量非常有限,具有極強的稀缺性。
㈧ PLC VB串口通訊 BCC校驗碼
校驗碼的作用是判斷應該發出的命令字元是否完整。PLC接收到校驗碼,用此校驗碼來判斷接收到的字元正確性,如何您的環境良好的話,松下MEWTOCOL-COM的協議允許用「**」來代替校驗碼。
我的網頁有做好的松下PLC與VB通訊可執行軟體,您可以下載試一下:
www.gk528.com
㈨ 求魔獸bcc工具,或者直接教互通圖方法
首先你要理解互通圖之所以逃過各大平台以及暴雪檢測的方法 本來魔獸爭霸是有一個地圖驗證的,如果你跟主機的圖不同,是進不去的(要下載地圖)。但是魔獸對地圖中的war3map.j文件是進行bcc(block check character)校驗的,bcc不同於md5,bcc一般只是用來排錯的,並不是加密演算法。所以就有人寫出了這樣的代碼,可以在b文件末尾添加上一些不起作用的字串,來讓b文件的bcc校驗碼等於a文件(具體代碼我就不貼出來了,很容易搜到)。於是呢,我們就可以做到隨意修改地圖中的war3map.j ,然後再處理一下,使之跟原來的war3map.j的bcc校驗碼相同。再把改過並處理後的war3map.j文件替換原來的,這樣做出來的作弊地圖,暴雪的驗證會因為bcc校驗相同,而把它認為和原版圖是相同的。達到的效果就是,別人用正版圖建主機,你可以進入,你用盜版圖建主機,別人用正版圖也可以進入。但是別以為可以為所欲為的修改war3map.j ,雖然你突破了驗證這一關進入了游戲,但是魔獸的聯機機制是沒有辦法突破的。 准備工具:魔獸改圖一條龍(網路一搜N多下載) 一個bcc文件(網上很多) 首先找張你要修改的地圖,我就拿當下最新的DOTA6.59D版本的地圖做例子! 1.啟動魔獸改圖一條龍里的MPQ,來打開你要修改的魔獸地圖!在script文件夾下找到war3map.j這個文件 2.右擊這個文件,選擇解壓縮,將他解壓縮出來3.正式開始改圖,改圖的方法有2種,一種是我之前寫過那篇使用JASS語言來改圖的方法,還有今天要介紹的這種傻瓜法,是用hke改圖機來改!啟動hke改圖機 4.設置好上圖所顯示的你的大名,價錢,加木,鍵盤加屬性,是否主機優勢,是否所有單位操作。其實不設置也無所謂,因為改圖機的作者花了很大力在地圖里加入了一整套作弊代碼!進游戲可以通過命令來做到 5.添加腳本:單擊 添加腳本(J) 按鈕,然後選擇解壓縮後的war3map.j文件6.至此,地圖已經通過改圖機簡單的修改完了。現在就是要還原war3map.j文件了。 7.重新壓縮
㈩ 泰斯模型遺傳反演方法
10.2.1 數學模型
在承壓含水層中打井抽水時,如果含水層在平面上是無限延伸的,側向邊界離井很遠,抽水過程中邊界不對抽水貢獻;且含水層的頂底板均為隔水層,無垂向補給;天然水力坡度很小,徑流影響也可忽略時,則認為井的抽水量不是來自外界補給,而是由含水層內部在水頭降低的瞬間,地下水立即從含水層的儲存中排出。將上述水文地質條件概括為[9]:
1)含水層為均質、等厚、產狀水平承壓含水層;
2)地下水天然水力坡度為0或近似為0;
3)單井遠離邊界,無垂向越流補給;
4)抽水流量為Q(t);
5)地下水抽水時瞬時釋放。
可以把上述承壓水非穩定運動問題歸納為如下數學模型:
含水層參數識別方法
如果將上述問題轉換為柱坐標系下的數學模型,則有:
含水層參數識別方法
10.2.2 模型的解
模型[5,9](10-2)通過一系列的數學變換和推導,可以求出其解析解,具體表達如下:
含水層參數識別方法
其中W(u)為井函數,表達式為
含水層參數識別方法
在具體進行計算時,W(u)可用如下近似表達式:
含水層參數識別方法
其中:a0=-0.57721566,a1=0.99999193,a2=-0.24991055,a3=0.05519968,a4=-0.00976004,a5=0.00107857,b0=0.2677737343,b1=8.6347608925,b2=18.059016973,b3=8.5733287401,c0=3.9584969228,c1=21.0996530827,c2=25.6329561486,c3=9.5733223454。
含水層參數識別方法
將(10-3)式轉換為降深表達式:
含水層參數識別方法
式(10-7)即為著名的泰斯(Thies)公式。
10.2.3 反演方法簡介
用泰斯模型反演水文地質參數時[5],最常用的方法有配線法、直線圖解法、水位恢復法。另外一些有效的數值反演方法已經引入到泰斯模型的反演問題中,如Gauss-Newton法、數學規劃法等,現簡述如下:
(1)配線法
a.s-t配線法。將(10-7)式兩端取對數,得:
含水層參數識別方法
將(10-6)進行適當的變換得:
含水層參數識別方法
將上式兩端取對數,得:
含水層參數識別方法
從方程(10-8)和方程(10-9)可知lgs-lgt曲線的形狀和曲線lgW(u)-lg(1/u)的形狀是相同的,只是坐標進行了相對位移。如果在雙對數紙上作出W(u)-1/u的關系曲線,在另一張模數相同的雙對數紙上作出s-t關系曲線,兩條曲線的形狀是相同的。
一般情況下,W(u)-1/u的關系曲線稱為標准曲線,s-t關系曲線稱為實際資料曲線。把兩條曲線保持坐標軸平行的情況下,盡可能地重合或逼近。選一點作為配合點(無論在曲線上或曲線外均可)。讀出兩張對數紙上的坐標(W(u),1/u),(s,t),將坐標代入(10-6)和(10-7)式,即可求出導水系數T和貯水系數S。
b.s-r配線法。當抽水試驗有若干個觀測孔時,可用s-r配線法。其原理和s-t配線法類似。只是將式(10-6)作如下變換:
含水層參數識別方法
將上式兩端取對數,得:
含水層參數識別方法
在兩張相同模數的雙對數紙上,分別作出s-r2曲線和W(u)-u曲線,配線後找出配合點,即可求出導水系數T和貯水系數S。
c.s-(t,r)配線法。抽水試驗時,如果記錄有不同觀測孔中不同時刻的水位降深值,可用此法求參數,此時:
含水層參數識別方法
可用S-r2/t關系曲線和W(u)-u關系曲線進行配線。其他同前。
(2)直線圖解法
當u值比較小時,將井函數(10-4)的展開項僅取前兩項,對精度的影響不大,此時:
含水層參數識別方法
(10-7)式可變為:
含水層參數識別方法
上式為Jacob近似公式。直線圖解法主要是依據上述公式。
a.s-lgt直線圖解法。在同一觀測孔中不同時間進行降深觀測時,可用此方法。
將(6-13)式變換後,可以寫成:
含水層參數識別方法
上式為單對數紙上的直線方程。直線的斜率為0.183Q/T,根據直線斜率可求出導水系數T,在直線上任取一點的坐標(s0,t0)代入(10-14)式,因Q、T、r、s0、t0均為已知,可以很方便地求出貯水系數S。一般取t0為10的整數次冪,便於計算。
b.s-lgr直線圖解法。在同一時間的不同觀測孔進行觀測。此時r為變數,(10-13)式可寫成:
含水層參數識別方法
在單對數紙上作出s-lgr直線圖,直線的斜率為-0.366Q/T,可以根據直線的斜率求出T,再在直線上任取一點的坐標(s0,r0)代入(10-15)式。因Q、T、t、s0、r0均為已知,可以很方便地求出貯水系數S。一般取r0為10的整數次冪,便於計算。
c.s-lg直線圖解法。如果同時獲得不同觀測孔不同時間的觀測數據,可用此方法。(6-13)式可寫為
含水層參數識別方法
方法同上。
10.2.4 遺傳反演方法
只要是正演問題有解的問題,其反演問題均能用遺傳演算法來求解。傳統的簡單遺傳演算法僅有選擇、交叉、變異三種操作,陳國良、佘春峰等曾用馬爾可夫鏈證明了在概率意義下並不能保證簡單的遺傳演算法收斂到全局最優解。因此本文中對簡單的遺傳演算法進行了三種改進,①優體克隆;②子體優生;③多代調環。這三種操作的作用各不相同,前面已有論述,本節通過算例說明幾種操作的不同作用,及對尋優過程的影響。
泰斯模型的反演是一類較簡單的反演問題,因為反演的參數為導水系數T和貯水系數S,一般是惟一確定的。只要有正演程序,把遺傳演算法相融合,就可以進行反問題的求解。因此這種方法不需要計算導數,使用簡便,應用范圍非常廣。它與Gauss-Newton法及其類似的方法相比計算速度稍慢。由於其初值區間可以選擇的范圍很廣,不會出現Gauss-Newton類方法由於初值選擇不合適造成解不收斂的情況。它與常規的配線法和圖解法相比,因採用計算機求解,計算速度很快,且解惟一確定並達到最優。避免了配線法和圖解法因人而異且不易達到最優的缺點。
泰斯模型遺傳反演的過程也就是求解如下優化問題的過程。
含水層參數識別方法
其中:E()為誤差函數,T為含水層導水系數,S為貯水系數,[Ta,Tb]為T的取值區間,[Sa,Sb]為 S 的取值區間,為時空某點的地下水降深觀測值,si(T,S)為時空某點的地下水降深計算值,可用泰斯公式計算。
待求參數初值區間的確定,可以給出一個相當寬松的大區間,用改進後的遺傳演算法很容易搜索到參數的最優值。這個區間的給定只要物理意義上的合理即可,如導數系數T的初始區間可以是(0,1000),或(0,10000),貯水系數S的初值區間(0,0.1),只會影響搜索速度,不會影響最終的結果。
演化終止的條件為:①目標函數小於給定的精度。②演化到指定的次數。③連續100代目標函數無改變。均可。
在進行計算時我們對每一個例題,均按如下8種方案進行演化計算。
a.簡單遺傳演算法(SGA);
b.優體克隆遺傳演算法(The Best Chromosome Clone GA=BCC-GA);
c.優體克隆+子體優生(Younger Generation Chromosomes Prepotency)的遺傳演算法(BCC-YGCP-GA);
d.優體克隆+子體優生+多代調環(Multi-Generations Adjusting Environment=MAE)的遺傳演算法(BCC-YGCP-MGAE-GA);
e.多代調環的遺傳演算法(MGAE-GA);
f.優體克隆+多代調環的遺傳演算法(BCC-MGAE-GA);
g.子體優生的遺傳演算法(YGCP-GA);
h.子體優生+多代調環的遺傳演算法(YGCP-MGAE-GA)。
例1.理想模型。假設在一個含水層中進行抽水,這個含水層符合泰斯模型假定,在抽水開始後,在一個觀測孔中進行水位觀測,其觀測結果如表6-1。抽水流量為:1000 m3/h,觀測孔距抽水孔200 m,求含水層的導水系數T和貯水系數S。
表10-1 假設試驗觀測孔中降深資料表
在用遺傳演算法反演參數時,在所有方案中均採用:導數系數T的初始取值區間為(0,1000.0 m2/h),貯水系數S的初始取值區間為(0,0.1),遺傳代數Num-Gen=1000,種群數Pop-Size=50,交叉概率Pc=0.7,變異概率Pm=0.3,評價函數中的alph=0.05。所有與多代調環有關的計算方案,其代數選擇均為10。前500代每隔10代對T和S設置一次取值區間,取值區間設為(0.75Vbest,1.25Vbest),V為變數可代表T或S,Vbest為這十代中最優的染色體,500代後開始進行區間壓縮技術,其壓縮方法見前章所述,壓縮系數為0.4。其計算結果見圖10-1和表10-2。
此反演問題的真值為導水系數T=100 m2/h,貯水系數S=0.0005。用遺傳演算法反演的導水系數和貯水系數計算結果見表10-3和表10-4。
圖10-1(1)遺傳反演方法進化代數與目標函數計算結果圖
圖10-1(2)遺傳反演方法進化代數與目標函數計算結果圖
從計算結果可以看出,簡單的遺傳演算法在達到1000代時,並沒有明顯的收斂特徵,目標函數仍處於波動狀態,其導水系數T和貯水系數S離真值相差較遠。優體克隆遺傳演算法保證了後代無返祖現象,並且有收斂趨勢,但收斂速度太慢,到1000代時兩個參數距離真值尚有一定的差距。多代調環演算法有明顯的波動性,但收斂結果較好,壓縮技術使用過早時,容易出現把真值拋棄的危險。何時開始實施壓縮更好,尚待進一步研究。壓縮太早,壓縮因子太小均容易出現不收斂的情況,壓縮太晚影響收斂速度。子體優生遺傳演算法收斂速度較好,但亦出現目標函數的波動即返祖現象。其他組合演算法中以優體克隆+子體優生遺傳演算法和優體克隆+子體優生+多代調環遺傳演算法最好,它們均具有目標函數單調下降(隨遺傳代數),並且收斂速度非常快的優點。優體克隆+子體優生遺傳演算法在51代達到目標誤差函數最小值0.000021(誤差主要是系統誤差引起),優體克隆+子體優生+多代調環遺傳演算法在68代達到目標誤差函數的最小值0.000021。可見這兩種組合遺傳演算法具有很好的性能,特別是優體克隆+子體優生遺傳演算法因不會出現拋棄全局最優解的可能性,收斂速度又很快,無返祖現象,許多次計算試驗中此方法均表現出色,在實際應用中值得推廣。
表10-2 不同的遺傳反演方法目標誤差函數計算結果比較表
表10-3 導水系數T反演結果表
表10-4 不同的遺傳反演方法目標誤差函數計算結果比較表
表10-5 抽水試驗觀1孔水位降深資料
因本模型為理想模型,反演求出的導水系數和貯水系數在目標誤差函數為最小值0.000021 m時已和真值幾乎相等,畫出的s-t曲線完全重合。在此不再顯示圖形。
例2.在江蘇省某村一口機井進行非穩定流抽水試驗,抽水井位於廣闊的第四紀沖積平原上,可以認為平面上是無限的。含水層為粉細砂和亞砂土。抽水井深120 m,直徑0.20 m。自1976年11月6日9時40分開始做抽水試驗,抽水持續97 h,流量為22.60 m3/h。在抽水井及三個觀測孔中進行水位觀測。觀1孔距抽水井117.85 m,試根據觀1孔資料計算貯水系數S和導水系數T[5](表10-5)。
在用遺傳演算法反演參數時,在所有方案中均採用:導數系數T的初始取值區間為(0,1000.0 m2/h),貯水系數S的初始取值區間為(0,0.1),遺傳代數Num-Gen=1000,種群數Pop-Size=50,交叉概率Pc=0.7,變異概率Pm=0.3,評價函數中的alph=0.05。所有與多代調環有關的計算方案,其代數選擇均為10。前500代每隔10代對T和S設置一次取值區間,取值區間設為(0.75Vbest,1.25Vbest),V為變數可代表T或S,Vbest為這十代中最優的染色體,500代後開始進行區間壓縮技術,其壓縮方法見前章所述,壓縮系數為0.4。其計算結果見圖10-2和表10-6。
表10-6 不同的遺傳反演方法目標誤差函數計算結果比較表
圖10-2(1)遺傳反演方法進化代數與目標函數計算結果圖
圖10-2(2)遺傳反演方法進化代數與目標函數計算結果圖
此反演問題並無真值,最小的目標誤差函數為0.017814,此時導水系數T=3.306231 m2/h,貯水系數S=0.001549。用遺傳演算法反演的導水系數和貯水系數計算結果見表10-7和表10-8。
從計算結果可以看出,簡單的遺傳演算法在達到1000代時,並沒有明顯的收斂特徵,目標函數仍處於波動狀態,其導水系數T和貯水系數S離真值相差較遠。其他的遺傳演算法均有較好的收斂效果,所有與子體優生相關的遺傳演算法在20代時就近似收斂到全局最優解,並在100代之前,使目標誤差函數達到了全局最小值0.017814。優體克隆遺傳演算法保證了後代無返祖現象,並且有收斂趨勢,收斂速度較慢,到1000代時目標誤差函數尚未達到全局最小值0.017814。多代調環演算法有明顯的波動性,收斂結果較好。所有演算法中以優體克隆+子體優生遺傳演算法最好,既無返祖現象,收斂速度又快,更不會出現拋棄全局最優解的現象。
表10-7 不同的遺傳反演方法目標誤差函數計算結果比較表
表10-8 不同的遺傳反演方法目標誤差函數計算結果比較表
因本模型為實際模型,已有不同的研究者反演求出的導水系數和貯水系數。其比較結果見表10-9。用優體克隆+子體優生遺傳演算法反演出的導水系數 T=3.306231 m2/h,貯水系數 S=0.001549曲線擬合圖見圖10-3。從比較結果看本文提出的優體克隆+子體優生遺傳演算法反演的參數效果最好。擬合絕對誤差平均值最小。
圖10-3 實測降深和計算降深結果對比圖
表10-9 例2幾種方法計算結果對比表
例3.一口水井以1907 m3/d的流量抽水,在抽水兩個小時後從附近的幾個觀測孔中測量水位如表10-10,試求導水系數T和貯水系數S[5]。
表10-10 抽水試驗資料表
本例題主要是已知降深s和距離r之間的關系來求參數T和S。和上例中相同,在用遺傳演算法反演參數時,在所有方案中均採用:導數系數T的初始取值區間為(0,1000.0 m2/h),貯水系數S的初始取值區間為(0,0.1),遺傳代數Num-Gen=1000,種群數Pop
-Size=50,交叉概率Pc=0.7,變異概率Pm=0.3,評價函數中的alph=0.05。所有與多代調環有關的計算方案,其代數選擇均為10。前500代每隔10代對T和S設置一次取值區間,取值區間設為(0.75Vbest,1.25Vbest),V為變數可代表T或S,Vbest為這十代中最優的染色體,500代後開始進行區間壓縮技術,其壓縮方法見前章所述,壓縮系數為0.4。其計算結果見圖10-4和表10-11。
圖10-4(1)遺傳反演方法進化代數與目標函數計算結果圖
圖10-4(2)遺傳反演方法進化代數與目標函數計算結果圖
從計算結果可以看出,簡單的遺傳演算法在達到1000代時,並沒有明顯的收斂特徵,目標函數仍處於波動狀態,其導水系數T和貯水系數S離真值相差較遠。其他的遺傳演算法均有較好的收斂效果,所有與子體優生相關的遺傳演算法在30代時就近似收斂到全局最優解。在200代之前,使目標誤差函數達到了全局最小值0.048724。優體克隆遺傳演算法保證了後代無返祖現象,並且有收斂趨勢,但收斂速度較慢,到400代時目標誤差函數基本達到全局最優值。多代調環演算法有明顯的波動性,但收斂結果較好。所有演算法中以優體克隆+子體優生遺傳演算法最好,既無返祖現象,收斂速度又快,更不會出現拋棄全局最優解的現象。
表10-11 不同的遺傳反演方法目標誤差函數計算結果比較表
優體克隆+子體優生遺傳演算法達到目標函數最小時,其導水系數T=241.650192 m2/d,貯水系數S=0.000484。其計算曲線與實測曲線擬合圖見圖10-5。用遺傳演算法反演的導水系數和貯水系數計算結果見表10-12和表10-13。
表10-12 導數系數T反演結果表(m2/d)
表10-13 貯水系數S反演結果表
圖10-5 實測降深和計算降深結果對比圖