1. 鮑威爾方法的基本演算法與改進演算法的區別
鮑威爾基本演算法的問題在於,可能發生退化問題,具體而言就是可能在某一環迭代中出現基本方向組線性相關的情況,這種情況下按新方向替代第一個方向的方法進行替換,就會導致搜索在降維的空間中進行,無法得到原本n維空間的函數極小值,計算將失敗。
而改進的方法和原來方法本質區別在於替換方向的規則不同。改進的方法,能夠保證每輪迭代中搜索方向都線性無關,而且隨著迭代的延續,共軛的程度會逐漸增加。
具體展開比較復雜,簡單來說就是每次產生了新生方向,都要判斷一下這個方向好不好,如果不好就不換進來;如果覺得這個方向好,就看一下舊方向中哪個函數下降量最大,把這個下降量最大的方向替換掉。
2. 什麼是改進的chahine演算法
Chahine 迭代演算法是矩陣演算法中的一種,這種演算法的特點是收斂的速度很快,經過一定次數的迭代之後,就能得到一個較穩定的解。Chahine 非線性迭代演算法迭代公式簡便,收斂速度快,主要缺點是對雜訊過於敏感。Ferri 提出的修正 Chahine 演算法,在穩定性方面有改進,但收斂速度降低了。這兩種演算法對初值的選取要求很高,當初始值與實際分布相差遠時,演算法導致計算失敗。
3. 改進值怎麼算
使用殘差網路來計算,從神經網路來講,經典信號分析與神經網路的結合,是一種常見的演算法改進思路。
4. Floyd演算法的改進
判斷連通可以在輸入時作一下預處理
Floyd已經是DP的思想了.
可以有些小優化.但求一個圖中任意兩點的最短路徑目前只有o(n^3)的演算法
5. 如何改進演算法,提高程序效率
從根本上了解演算法是怎麼執行的,這樣可以做到一通百通。
一般來說,降低時間復雜度是比較好的方法。 有時候,佔用更多的內存可以幫助程序更快的運行。還有就是選用效率高的語言,例如C。
6. 改進計算方法
在早期油氣資源評價中,通常應用評價模型,對各參數僅取一個固定值進行簡單的運算,所得結果也是一個值。實際上,對於地下評價對象,其大多數參數具有時空變化性,用一個固定值,不管是統計所得均值還是其他值,都很難代表該參數,更無法准確刻畫該參數的時空非均質性。在這種情況下,很顯然應用單值運算得到的結果很難反映地下評價對象的客觀實際。因此,為提高評價質量和結果可信性,必須改進計算方法。
14.4.1 應用網格化方法逼近資源分布
這種方法的基本思路是:
(1)根據大量觀測點數據,編制各單一參數的平面分布圖,通常為平面等值線圖,如生油岩等厚圖等,個別為分區等級圖,如演化程度圖。以這些平面分布圖簡化表示各參數空間變化,主要是把各參數的垂向變化,用平均值簡化為非變化的固定值,如所謂生油岩有機質豐度等值線圖,即是把各點垂向上有機質豐度變化簡化為非變化的固定值。(2)在平面上建立固定的網格,其網格一般是按均勻法設置,但也可用非均勻網格,網格的多少視各變數平面變化快慢、計算機速度和容量而定。原則上是網格越多、越細就越准確地刻畫參數平面變化情況。
(3)以同一網格在各參數分布圖上讀取網格結點(或網格中點)上參數具體數值。
(4)針對每一個網格結點(或網格中點),按照資源評價模型,分別計算生烴量、排烴量等,然後編制生烴量、排烴量等值線圖。
(5)依據各等值線間距所佔面積,計算該間距所佔的生烴量、排烴量等,再累加得全區生烴量、排烴量。乘以相應運聚系數即得全區資源量。
14.4.2 蒙特卡洛法
所謂蒙特卡洛法是一種數值計算方法,其含義是利用隨機抽樣方法在各參數分布曲線取定數值,然後根據評價模型進行運算,結果得到一定值,反復如上過程成千上萬次,結果就有成千上萬個定值,再將這些定值進行統計,得到結果分布曲線。該方法已廣泛應用於油氣資源評價,其優點是:以一個分布曲線來逼近地下評價對象及較可能值、最可能值。這更加符合人們對地下評價對象的認識過程和局限性、不確定性。
該方法的計算步驟如下:
(1)通過資料處理解釋、分析化驗、圖件讀取等方法,產生和採集、整理各參數的數據,原則上是越多越好。同時剔除奇異點。
(2)根據整理的數據,統計建立各參數概率分布曲線。當數據較多,如多於幾十個時,統計分布曲線代表性強、可靠性高。但當數據少到只幾個或十餘個時,可依據該參數的分布概型(一般是經驗已知的分布模型,如正態分布、對數正態分布等),構造實際的分布曲線。但當數據少到只幾個且其分布概型也不確定時,最好用均勻分布或三角分布代替其分布。
(3)利用計算機產生隨機數,其中最簡單最基本的是均勻分布隨機數。要求隨機數產生後必須經過嚴格的檢驗(如均勻性檢驗、獨立性檢驗、組合規律性檢驗、連續性檢驗等),性質符合要求時方可投入使用。隨機數個數越多越好,最好成千上萬。隨機數值區間為0~1。
(4)以隨機數值為概率入口值,用插值法在某一參數分布取該概率所對應的參數值(圖14-1)。再用另一個隨機數值在另一參數分布曲線上求取該參數值(圖14-2)。以此類推。再將所求取的各參數的值(一個參數只一個值)按評價模型相乘除或加減,得到一個結果(圖14-3)。反復此過程,得到成千上萬個結果。
圖14-1 抽樣計算過程示意圖
(5)再將所得結果進行數理統計,得到結果概率分布圖(圖14-3)。一般而言,蒙特卡洛計算所用參數概率分布可以是各種各樣,但其結果分布一般都是正態分布或對數正態分布。
圖14-2 多參數抽樣計算過程示意圖
圖14-3 蒙特卡洛計算過程示意圖
14.4.3 模糊數學計算方法
在一些研究對象中,不同事物的界線是截然不同的,如水可以有冰、水、汽三種形態,其界限一般是明確的;而在某些對象,不同事物之間的界限是不明確的,例如在石油地質中,儲層的「滲透性好」和「滲透性差」是兩個截然不同的概念,但有時對於某個具體的對象,要把它歸到「滲透性好」或「滲透性差」卻不容易。模糊數學用隸屬度來描述這種情況,即用數值來表示某對象屬於某事物的程度,一個對象可以「屬於」兩類甚至兩類以上事物,分別以兩個隸屬度描述它屬於這兩類事物的程度,這樣,較合理地解決了這類問題。
當用模糊數學評價圈閉的含油氣性時,即用一個向量來表示一個圈閉:
油氣資源評價方法與實踐
研究對象含k個圈閉,則用集合Ui來表示這個圈閉群:
油氣資源評價方法與實踐
n個地質因素在評價圈閉的含油氣性中起的作用不同,各因素用一個權ai值表示其在評價中的作用大小:
油氣資源評價方法與實踐
每個地質因素用m個級別來表示其有利程度:
油氣資源評價方法與實踐
Ci是用整數表示的一種屬性,其具體值依m不同而異。
當m=3時,C=[-1 0 1]
當m=5時,C=[-2-1 0 1 2]
當m=7時,C=[-3-2-1 0 1 2 3]
一個圈閉的某個地質因素用它對各屬性的隸屬度來表示(如表14-1)。
表14-1 地質因素各屬性的隸屬度表
對一個圈閉用n個變數來描述,每個變數的表述將轉變為一個向量,而一個圈閉原來用一個向量表示,將變為用綜合評價變換矩陣R表示:
油氣資源評價方法與實踐
用各地質因素的權和各圈閉的綜合評價變換矩陣算出各圈閉的綜合評價,這個計算過程稱為合成:
油氣資源評價方法與實踐
式中h是樣品號,Rh是第h號樣品的綜合評價變換矩陣,Bh是n(變數數)個數構成的向量,其各元素為
油氣資源評價方法與實踐
這里,○表示某種演算法,這些演算法都是由下列4種基本演算法演化出來的(假設a、r為模糊集合中的兩元素)。
1)a∨r=max(1,r)
2)a∧r=min(a,r)
3)a·r=ar
4)a⊕r=min(a,1+r)
按照這樣合成得出一個樣品向量,然後計算綜合評價值(綜合得分)D:
油氣資源評價方法與實踐
結果為一個數。各圈閉按其D值排隊,就是這些圈閉的優劣排隊。每採用一個合成法,就有一個B,相應有一個D值,就有一個排隊,因為B的產生方法不同,各變數值所起作用不盡相同,同樣的原始數據會有不同的排隊結果。
14.4.4 神經網路計算方法
人工神經網路是指由大量與自然神經系統的神經細胞相類似的(人工)神經元互聯而成的網路。
神經網路的結構和特性是由神經元的特性和它們之間的連接方式決定的。人工神經元之間通過互聯形成網路。互聯的方式稱為連接模式。神經元之間的連接強度為連接權。當網路的連接權矩陣確定後,網路的連接模式也就確定了。
在人工神經網路中,信息處理過程或存貯知識的改變是通過修改神經元間的連接模式來完成的。這一修改過程稱做神經網路的訓練或學習。不同的權矩陣調整方式,就是不同的學習方式。
神經網路的學習和神經網路的結構沒有一一對應的關系。不同的神經網路可以採用相同的學習演算法進行訓練;同一神經網路也可以採用不同的學習演算法進行訓練。
一般採用多層前向神經網路,用誤差反傳(BP)演算法。
對於一個由3層組成的神經網路模型,第一層為輸入層,第二層為中間層,第三層為輸出層。第一層的神經元數為n,中間層的神經元數為1,第三層的神經元數為1。
第1層為輸入層,由M個樣品的n個神經元組成,約定第k個樣品(圈閉)的輸入,即第1層神經元為:xk1,xk2,…,xkn,相應的輸出為Tk,其中,k為樣品號,k=1,2,3,…,M,n為神經元數,在此可理解為自變數數。
第2層為隱層,其神經元數1是用戶設定的,由x與權系數矩陣W2相乘算出,第k個樣品的中間層為
油氣資源評價方法與實踐
F(t)採用S型(Signmoid)壓縮函數:
油氣資源評價方法與實踐
為了能控制u的取值,把第一式改為:x0=-1,w0j=ξ,記
油氣資源評價方法與實踐
則第二式成為
t的值除與Wij,xi有關外,還與變數數n有關,為了讓的值在0~1的范圍內,就需要
油氣資源評價方法與實踐
給一個適當的ξ值。
中間層到輸出層的計算與此相仿。只是它用另外一個W(矩陣)。
如果找到合適的W(兩個W陣),則由輸入的各樣品的X算出各樣品的y值應與原樣品的輸出值T相同或很接近。我們的任務就是要求這兩個W陣。
油氣資源評價方法與實踐
開始的W陣是隨機產生的。當然它算出各樣品的y不會等於T。我們用E(W)來衡量它的偏差:
油氣資源評價方法與實踐
當E(W)<ε時,學習完成。當E(W)>ε時,就要修改兩個W陣,讓E(W)逐漸變小,就現在的這個模型(一共有3層,輸出層只有一元)來說,修改W分兩步,第一步修改由u計算y的W,第二步修改由x計算u的W。
油氣資源評價方法與實踐
油氣資源評價方法與實踐
這樣,每次根據算出的y來指導修改兩層的W陣,直至E(W)<ε,學習完成。
學習完成後,得到兩個W陣,把待判樣品的x向量按既定的模式計算可得各樣品的y值,為具體對象的評價。
7. 排序演算法使用(改進的)冒泡排序演算法。
#i nclude <stdlib.h>
#i nclude <time.h>
void maopao(int source[],int n)
{
int start=0,end=n-1;
int i;
while(start<=end)/*如果還有元素沒有確定其位置*/
{
for(i=start;i<end;i++)/*尋找剩餘元素的最大數*/
if(source[i]>source[i+1])
{
int t;
t=source[i];
source[i]=source[i+1];
source[i+1]=t;
}
end--;/*找到最大數*/
for(i=end;i>start;i--)/*尋找剩餘元素的最小元素*/
if(source[i]<source[i-1])
{
int t;
t=source[i];
source[i]=source[i-1];
source[i-1]=t;
}
start++;/*找到一個最小數*/
}
}
void output(int data[],int n)
{
int i;
for(i=0;i<n;i++)
{
if(i%10==0)
printf("\n");
printf("%4d",data[i]);
}
}
int check(int data[],int n)
{/*檢查結果數據是否已升序排列*/
int i;
for(i=0;i<n-1;i++)
if(data[i]>data[i+1])
return 0;
return 1;
}
void main()
{
int data[500];
int i;
srand(time(NULL));
for(i=0;i<500;i++)
data[i]=random(500);
printf("\nThe original data is:\n");
output(data,500);
maopao(data,500);
printf("\nAfter sort:\n");
output(data,500);
printf("\n");
if(check(data,500)==1)
printf("\nRight.");
else
printf("\nWrong.");
}
8. 如何改進SVM演算法,最好是自己的改進方法,別引用那些前人改進的演算法
樓主對於這種問題的答案完全可以上SCI了,知道答案的人都在寫論文中,所以我可以給幾個改進方向給你提示一下:
1 SVM是分類器對於它的准確性還有過擬合性都有很成熟的改進,所以採用數學方法來改進感覺很難了,但是它的應用很廣泛 SVMRank貌似就是netflix電影推薦系統的核心演算法,你可以了解下
2 與其他演算法的聯合,boosting是一種集成演算法,你可以考慮SVM作為一種弱學習器在其框架中提升學習的准確率
SVM的本身演算法真有好的改進完全可以在最高等級雜志上發論文,我上面說的兩個方面雖然很簡單但如果你有實驗數據證明,在國內發表核心期刊完全沒問題,本人也在論文糾結中。。
9. A*演算法如何改進
十萬火急:此改進的模糊C-此函數實現遺傳演算法,用於模糊C-均值聚類 %% A=farm(:,Ser(1)); B=farm(:,Ser(2)); P0=unidrnd(M-1); a=[
10. C語言 簡單改進一個演算法
一般不會有人研究你的演算法的,太復雜,思路也不同。
最好的辦法就是你找一個別人的實現,然後對比一下效率慢慢改進自己的