ftr演算法
『壹』 為什麼這個程序Free pascal 能執行,Free pascal for NOI 就不能執行
201 是因為調用了tree[0].data而你的程序定義的tree是從1開始的
這個可能跟編譯器的版本有關
有些是從左到右判斷布爾表達式並且一旦有可以確定表達式真偽的條件出現便不再繼續比如你寫的lch=0時有些編譯器就不會執行tree[lch].data<>'#'
但是有的會完整的對布爾表達式作檢查
那麼避免這個問題的方法是做如下之一的改動
1\if <語句> then if <語句>...這樣來做多個條件且互為前提的邏輯判斷
2\將tree從0開始定義(不一定符合演算法要求)
『貳』 什麼是節點電價
基於最優潮流的節點電價計演算法研究
本文首先介紹了國外電力市場節點電價理論的研究和應用情況,根據我國區域電力市場建設進程,有針對性的分析了採用節點電價體制的優點。本文介紹了交流最優潮流和直流最優潮流在一般電力市場節點電價計算中的應用,並對基於兩種電價演算法建立相應數學模型,推導出節點電價數學公式。以IEEE-14母線系統算例證明,節點電價能夠有效反映電力資源稀缺程度,提高電力資源的使用效率,同時可為投資者提供可靠的經濟信號。 本文進一步介紹了傳統的考慮節點邊際輸電損耗的節點電價計演算法,並提出一種改進的節點電價模型,並以簡單的3節點母線系統進行算例分析說明。此外本文提出一種考慮網路損耗的節點電價近似演算法,並以IEEE-14母線系統算例表明,考慮網損成本的節點電價不僅保持了原有節點電價的優點,而且可進一步激勵電源和電網投資,引導經濟合理的運行方式,完善電力市場電價體系,促進電力市場的建設。
作 者: 王永強
學科專業: 電力系統及其自動化
授予學位: 碩士
學位授予單位: 上海交通大學
導師姓名: 侯志儉
學位年度: 2007
研究方向:
語 種 : chi
分類號:
關鍵詞: 節點電價計演算法
電力市場
輸電損耗
機標分類號: TM728.3
機標關鍵詞:
基於輸電市場長期效率的節點電價研究
中國貴陽政府門戶網站 http://www.gygov.gov.cn | 更新時間:2009-02-03 | 來源:中經專網
字型大小:【大】【中】【小】 【復制本頁地址】 【列印本頁】 【關閉窗口】
[摘要]國外電力市場普遍實的節點電價制度對我國電力市場的改革具有重要的借鑒意義。本文從輸電市場的長期效率出發,對節點電價內涵、特徵及作用進行了深入的分析。通過研究發現,節點電價可以引導輸電容量的合理投資,促進發電公司和電力用戶有效使用輸電網,從而實現輸電市場的長期效率。
(中經評論·北京)輸電市場是輸電企業向發電企業、配電企業或用戶提供電能輸送服務的市場。輸電企業的成本以固定成本為主,其運營特點是投資周期長,沉沒成本高。輸電市場長期效率主要來自於電網企業的長期投資效率、發電企業和用電企業對電網的長期使用效率。
節點電價是電力批發市場價格制定的重要方法,已經被廣泛應用在美國幾個主要的電力市場,如PJM、加州、紐約電力市場。對於節點較為密集的網格狀輸電網,節點電價法是非常科學的電價制定方法,可以給出豐富的區域或節點價格信號,引導用戶合理進行電力消費和投資。節點電價可以引導發電企業和電力用戶合理使用電網,而根據節點電價之差確定的輸電阻塞價格也是引導輸電有效投資的經濟信號。另外,以阻塞價格為基礎確定的金融輸電權(FTR)作為一種長期的產權安排,可以對輸電容量的擴展產生有效的激勵。
當前,我國的輸電網建設進入了高速增長期,很多區域電網公司要在「十一五」期間將電網的規模翻一番。在這樣的背景下,如何保證電網的投資效率就變得非常重要。所以,關於節點電價和輸電投資效率的研究對於我國電力市場的改革與電力行業的健康發展具有重要的意義。
一、節點電價的形成機制
節點電價是~種市場定價機制,電力批發市場的買賣雙方在提供報價的基礎上形成了市場出清價格和交易量。所謂節點,就是輸電網中發電廠、電力用戶或變電所在某輸電網中的位置。節點電價,是指隨著節點或位置的不同而不統一的電能價格。節點電價是發電廠賣電的電量電價,比如一度電0.30元。節點電價也是供電商或大用戶購買電能的價格,其水平的確定是根據各個節點供電短期邊際成本。具體來說,在電網某一運行狀態下,該節點增加單位電能消費導致電網和發電廠總體增加的成本。節點電價的形成是基於各發電商的賣方報價、各供電商和大用戶的需求報價、對未進行需求報價的電力消費預測、電網運行狀態和阻塞情況等因素,是市場定價和電網技術約束共同作用的結果。
節點電價主要是競爭性電力批發市場上的電能交易價格。在競爭性的電力批發市場中,多個發電公司直接將電能賣給多個電力大用戶和地方供電商(供電公司或配電商),而輸電網提供網路輸送服務。這個市場主要是一種集中交易市場。目前,我國電力批發市場比較特殊,多個發電公司將電能賣給唯一的、地域壟斷的電網公司(輸電公司和配電公司),再由該電網公司將電能賣給多個電力用戶。這是一個電網公司雙邊壟斷的市場。競爭性批發市場的基礎是輸電、配電分離和獨立輸電價格機制形成,配電公司與輸電公司分離以後成為批發市場的買方。由於目前我國電力批發市場的實體一般為省或區域,而一個省或區域包含多個地區及相應的地區配電商,所以,只要實現了輸院分離,即使沒有電力用戶直接進入批發市場,由於有多個地區配電商的存在,電力批發市場買方也能形成競爭關系。獨立輸電價格是電能交易時輸電網提供輸電網服務的價格。當輸電公司有了獨立的輸電價格,就可以退出批發市場,不參與電力批發市場的交易,而只是作為基礎設施運營商,提供網路服務。
二、節點電價包含的輸電成本信息
輸電電價是輸電公司的輸電服務價格。一般由電網服務費用、網損費用、輔助服務費用和阻塞費用等幾部分組成。電網服務費用主要是彌補電網的投資成本、管理成本等固定成本。輔助服務費用主要是電網為了電力系統運行的安全性、可靠性和電能質量保證提供的輔助服務所消耗的成本。網損費用是電能在輸電網中傳輸發生的電能損耗形成的成本。阻塞費用是由於電網輸送容量限制導致的電網阻塞形成的成本,它可以是直接進行阻塞管理發生的費用,也可以是電網稀缺容量租金。電網服務費用和輔助服務費用都有獨立的價格,但網損費用和阻塞費用可能都包含在節點電價中,沒有獨立的價格。
輸電服務是電能從電網某個節點的輸入和從電網另外一個節點的輸出,而電網是跨地域的基礎設施,所以由電能的輸入節點和輸出節點確定的交易路徑就非常重要。由於節點電價是某個電能輸入節點賣方的售電價格和電能輸出節點買方的購電價格,由此可以推出買方的購電電價中包含電能價格和輸電價格,電能價格就是電能輸入節點的賣方售電價格,而輸電價格就是電能輸出節點價格與電能輸入節點價格之差。這個輸電價格只是輸電阻塞價格與網損價格,是輸電服務價格中的一部分。
三、節點電價與輸電市場效率
節點電價是通過最優潮流程序計算出來的,該程序的目標是社會福利最大化。如果電力批發市場的需求為剛性需求,這個目標就等價於發電費用最小化;如果電力批發市場的需求為彈性需求,這個目標就等價於發電公司的生產剩餘和電力用戶的消費剩餘。最優潮流程序根據發電廠的賣方報價和用戶、供電公司的買方報價,在電網容量約束滿足的前提下安排各方的交易量並確定節點電價。如果在某線路上輸電阻塞發生,該線路作為稀缺資源就具有了市場價值(阻塞租金)。當從某一輸電路徑傳輸電能時,部分電能會流過該阻塞線路,佔用部分線路容量的機會成本就包含在節點電價之中。如果不考慮電網損耗,兩個節點的節點電價之差就是輸電阻塞價格,它等於這兩個節點之間傳輸電能導致的所有阻塞線路上的機會成本。所以,阻塞線路的阻塞租金、節點電價和輸電阻塞價格之間有密切的關系。
節點電價包含的阻塞租金信息是有效輸電容量判定的重要依據,因而成為引導輸電有效投資的重要的價格信號。某一條輸電線路的阻塞租金是是指通過增加該線路的單位輸電容量導致的電力批發交易中發電成本的減少量,或者是交易中消費者剩餘、發電商生產剩餘的增加量。這是輸電線路容量增加帶來的邊際容量收益,體現了輸電線路容量的真實市場價值。隨著線路容量的增加,其阻塞租金會下降。若假設輸電邊際容量成本不變,可以推斷,當增加某一線路單位輸電容量帶來的收益與由此增加的輸電容量成本相等時,也就是邊際容量收益等於邊際容量成本時,此時該線路輸電容量達到最優。
電力批發市場的交易時段很短,往往是半個小時或15分鍾一個時段。然而,電網投資周期都比較長,一個電網投資周期包含了非常多的交易時段,而某一條輸電線路的市場價值取決於在一個投資周期內該線路在所有的阻塞時段或高峰時段的累積阻塞租金。
由於節點電價和線路阻塞租金反映了輸電投資價值,可以作為有效的投資信號。如果輸電線路的邊際容量收益高於邊際容量成本,說明該線路容量投資不足,可以增加投資;如果線路邊際容量收益低於邊際容量成本,則說明投資過度,應該減少投資。無論是對電網總體的評價,還是對於某一輸電項目的評價,輸電容量阻塞租金都可以作為基本的價值評價標准。輸電阻塞價值是未來電網投資的收益,可以憑借過去實際發生的線路阻塞價值來預測,也可以通過電力期貨市場來對未來的電力交易和輸電阻塞價值進行預測。
金融輸電權是一種輸電市場上採用的金融衍生工具,它是將輸電阻塞價值產權化的一種安排。在電網的投資市場,電網投資商通過對某條線路容量的投資來獲得金融輸電權.通過輸電權,輸電的投資收益權可以被分解、流動,這提高了輸電投資市場的效率。而對於輸電市場的需求方,考慮到電力市場運行的隨機性和不確定性,發電公司和用戶的雙邊交易可以通過購買金融輸電權來規避未來可能發生的阻塞收入風險。金融輸電權的交易可以通過定期拍賣來實現交易效率。另外,輸電權可以分為長期輸電權和短期輸電權。對於電網投資商來說,出售金融輸電權可以套現未來的收益,規避了,電力市場的經營風險。所以,長期輸電權比短期輸電權更具有吸引力。從國外電力市場的實踐來看,短期輸電權對電網商業投資的激勵效果並不理想。所以,基於電力期貨市場的長期輸電權將是大勢所趨。
輸電阻塞發生以後,一般是發電容量集中的區域的節點電價低,用電和負荷集中的區域的節點電價高。所以,節點電價的分布會鼓勵發電公司在負荷集中的區域投資發電廠,或在這一區域原有發電廠增加發電容量;節點電價的分布也會鼓勵用電企業在節點電價便宜的發電集中區域落戶,或擴大生產。這將導致發電容量充裕的地區用電增加,節點電價水平下降;而發電容量短缺的地區發電容量的增加,節點電價上升,最終各個地區的節點電價水平差異減小。而對於用電成本在總成本40%以上的高耗能企業來說,這種節點電價的引導作用會非常明顯。從總體來看,高水平節點電價地區的用戶會減少用電,低水平節點電價地區的用戶會多用電,而且長期彈性大於短期彈性,這有利於提高電力市場的效率。
四、節點電價的應用價值
目前,在我國的各省電力市場並沒有獨立的輸電電價,由自然壟斷的省電網公司運營輸電網和配電網。省電網公司的收入來自於向電力用戶售電的收入與向發電公司買電的費用之差,這就是實際的輸配電價,它不包含任何的區域或阻塞信號。
從電網用扇來看,發電企業和用電企業面臨的價格也是如此。各個發電公司的上網電價都是政府制定的管制價格。是按照發電公司平均成本制定的價格,並沒有包括區域信號。在2004年國家發改委頒布的電價改革方案中,發電公司在未來將採取兩部制電價,容量電價由政府控制,電量電價在市場中競價形成。無論是現在的管制價格,還是將來的市場競價,都未考慮區域信號。各省電力市場的各類電力用戶都面臨的是由政府制定的用戶電價,這個價格對全省的用戶是統一的,也沒有包括區域信號。
電網是跨地區的基礎設施,如果沒有包含區域信息的市場價格去引導的電力的投資和消費,也就不能通過市場機制去實現輸電市場的長期效率。從這個角度來看,在條件成熟時,在我國的電力市場引入節點電價制度將有利於電力行業的健康發展。
五、結論
本文從輸電市場長期效率的視角,分析了節點電價的內涵、市場形成機制和價格引導作用。節點電價是電力批發市場的價格,包含了輸電成本信息。節點電價之差反映了輸電容量租金或輸電阻塞價格,是輸電容量作為稀缺資源的市場價值,是引導輸電容量合理投資的重要信號。由於節點電價包含豐富的經濟信號,電力市場中的各個主體行為可以被有效引導,有利於實現資源的優化配置,這對電力市場的健康發展具有重要的意義。
『叄』 機器學習的txt全集下載地址
鏈接:
《機器學習》展示了機器學習中核心的演算法和理論,並闡明了演算法的運行過程。
『肆』 急!那位大俠有用C語言實現的互相關演算法的源代碼,謝謝啦
#include <math.h>
#define M_PI 3.14159265358979323846
#define FALSE 0
#define TRUE 1
#define BIG 1e10
#define SMALL 1e-10
typedef struct {
float r, i;
} complex;
/* FAST CORRELATION OF X(0:L) AND Y(0:L). FINDS RXY(0) THRU RXY(NMAX). */
/* L=LAST INDEX IN BOTH X AND Y. MUST BE (POWER OF 2)+1 AND AT LEAST 5. */
/* ITYPE=TYPE OF CORRELATION=0 IF X AND Y ARE THE SAME VECTOR (AUTO- */
/* CORRELATION), OR NOT 0 IF X AND Y ARE DIFFERENT VECTORS. */
/* NMAX=MAXIMUM LAG OF INTEREST IN THE CORRELATION FUNCTION. */
/* FFT LENGTH ,N, USED INTERNALLY, IS L-1. */
/* LET K=INDEX OF FIRST NONZERO SAMPLE IN Y(0)---Y(N-1). THEN X(0) */
/* 到 X(N-1) MUST INCLUDE PADDING OF AT LEAST NMAX-K ZEROS. */
/* CORRELATION FUNCTION, RXY, REPLACES X(0) THRU X(NMAX). */
/* Y(0) THRU Y(L) IS REPLACED BY ITS FFT, COMPUTED USING SPFFTR. */
/* IERROR=0 NO ERROR DETECTED */
/* 1 L-1 NOT A POWER OF 2 */
/* 2 NMAX OUT OF RANGE */
/* 3 INADEQUATE ZERO */
void spcorr(float *x, float *y, long *l, long *type, long *nmax, long *error)
/*
x:序列X;
y:序列Y;
l:序列X與序列Y的長度,不小5,且要為2的冪次方;
type:相關的類型,0:表示X與Y序列相同,其它值:X與Y序列不相同
nmax:相關的最大時延;
error:運行出錯提示;0:無錯;1:數據長度不是2的冪次方;2:時延超界;3:無足夠零填充出錯
*/
{
long j, k, m, n;//n:FFT長度;k:序列Y中的首個非零樣本的位置序號;在序列Y中必須最少包含有(nmax-k)零填充。
complex cx;
float test;
n = *l - 1;
if (*nmax < 0 || *nmax >= n)
{
*error = 2;
return;
}
test = (float) n;
test /= 2.0;
while ((test - 2.0) > 0.0)
{
test /= 2.0;
}
if ((test - 2.0) == 0)
{
for (k = 0 ; k < n && y[k] == 0.0 ; ++k) ;
for (j = n - 1 ; j >= 0 && x[j] == 0.0 ; --j) ;
if ((n - 1 - j) < (*nmax - k))
{
*error = 3;
return;
}
spfftr(x, &n);//對X序列FFT變換
if (*type != 0)
{
spfftr(y, &n);//如果X、Y是相同序列,則對Y序列也進行FFT
}
for (m = 0 ; m <= (n / 2) ; ++m)
{
cx.r = x[m * 2] * y[m * 2] - -x[(m * 2) + 1] * y[(m * 2) + 1];
cx.i = x[m * 2] * y[(m * 2) + 1] + -x[(m * 2) + 1] * y[m * 2];
x[m * 2] = cx.r / n;
x[(m * 2) + 1] = cx.i / n;
}
spiftr(x, &n);
*error = 0;
}
else if ((test - 2.0) < 0.0)
{
*error = 1;
}
return;
} /* spcorr */
/* SPFFTR 11/12/85 */
/* FFT ROUTINE FOR REAL TIME SERIES (X) WITH N=2**K SAMPLES. */
/* COMPUTATION IS IN PLACE, OUTPUT REPLACES INPUT. */
/* INPUT: REAL VECTOR X(0:N+1) WITH REAL DATA SEQUENCE IN FIRST N */
/* ELEMENTS; ANYTHING IN LAST 2. NOTE: X MAY BE DECLARED */
/* REAL IN MAIN PROGRAM PROVIDED THIS ROUTINE IS COMPILED */
/* SEPARATELY ... COMPLEX OUTPUT REPLACES REAL INPUT HERE. */
/* OUTPUT: COMPLEX VECTOR XX(O:N/2), SUCH THAT X(0)=REAL(XX(0)),X(1)= */
/* IMAG(XX(0)), X(2)=REAL(XX(1)), ..., X(N+1)=IMAG(XX(N/2). */
/* IMPORTANT: N MUST BE AT LEAST 4 AND MUST BE A POWER OF 2. */
//FFT計算函數
void spfftr(complex *x, long *n)
{
/* Builtin functions */
void r_cnjg();
/* Local variables */
void spfftc();
long m, tmp_int;
complex u, tmp, tmp_complex;
float tpn, tmp_float;
tpn = (float) (2.0 * M_PI / (double) *n);
tmp_int = *n / 2;
spfftc(x, &tmp_int, &neg_i1);
x[*n / 2].r = x[0].r;
x[*n / 2].i = x[0].i;
for (m = 0 ; m <= (*n / 4) ; ++m)
{
u.r = (float) sin((double) m * tpn);
u.i = (float) cos((double) m * tpn);
r_cnjg(&tmp_complex, &x[*n / 2 - m]);
tmp.r = (((1.0 + u.r) * x[m].r - u.i * x[m].i)
+ (1.0 - u.r) * tmp_complex.r - -u.i * tmp_complex.i) / 2.0;
tmp.i = (((1.0 + u.r) * x[m].i + u.i * x[m].r)
+ (1.0 - u.r) * tmp_complex.i + -u.i * tmp_complex.r) / 2.0;
tmp_float = ((1.0 - u.r) * x[m].r - -u.i * x[m].i
+ (1.0 + u.r) * tmp_complex.r - u.i * tmp_complex.i) / 2.0;
x[m].i = ((1.0 - u.r) * x[m].i + -u.i * x[m].r
+ (1.0 + u.r) * tmp_complex.i + u.i * tmp_complex.r) / 2.0;
x[m].r = tmp_float;
r_cnjg(&x[*n / 2 - m], &tmp);
}
return;
} /* spfftr */
/* SPIFTR 02/20/87 */
/* INVERSE FFT OF THE COMPLEX SPECTRUM OF A REAL TIME SERIES. */
/* X AND N ARE THE SAME AS IN SPFFTR. IMPORTANT: N MUST BE A POWER */
/* OF 2 AND X MUST BE DIMENSIONED X(0:N+1) (REAL ARRAY, NOT COMPLEX). */
/* THIS ROUTINE TRANSFORMS THE OUTPUT OF SPFFTR BACK INTO THE INPUT, */
/* SCALED BY N. COMPUTATION IS IN PLACE, AS IN SPFFTR. */
//逆FFT變換函數
void spiftr(complex *x, long *n)
{
long m, tmp_int;
complex u, tmp_complex, tmp;
float tpn, tmp_float;
tpn = (float) (2.0 * M_PI / (double) *n);
for (m = 0 ; m <= (*n / 4) ; ++m)
{
u.r = (float) sin((double) m * tpn);
u.i = (float) -cos((double) m * tpn);
r_cnjg(&tmp_complex, &x[*n / 2 - m]);
tmp.r = ((1.0 + u.r) * x[m].r - u.i * x[m].i)
+ ((1.0 - u.r) * tmp_complex.r - -u.i * tmp_complex.i);
tmp.i = ((1.0 + u.r) * x[m].i + u.i * x[m].r)
+ ((1.0 - u.r) * tmp_complex.i + -u.i * tmp_complex.r);
r_cnjg(&tmp_complex, &x[*n / 2 - m]);
tmp_float = ((1.0 - u.r) * x[m].r - -u.i * x[m].i)
+ ((1.0 + u.r) * tmp_complex.r - u.i * tmp_complex.i);
x[m].i = ((1.0 - u.r) * x[m].i + -u.i * x[m].r)
+ ((1.0 + u.r) * tmp_complex.i + u.i * tmp_complex.r);
x[m].r = tmp_float;
r_cnjg(&x[*n / 2 - m], &tmp);
}
tmp_int = *n / 2;
spfftc(x, &tmp_int, &pos_i1);
return;
} /* spiftr *
void r_cnjg(complex *r, complex *z)
{
r->r = z->r;
r->i = -z->i;
}
『伍』 IDE的使用方法!
IDE是數據線,用於硬碟光碟機,傳輸數據用的! 詳細: IDE的多種含義解釋一:
集成設備電路,Integrated Device Electronics,一般叫做IDE匯流排,但是更准確地應該是ATA。IDE匯流排是平行匯流排,在SATA(Serial ATA)引入後,Parallel ATA(IDE)被稱為PATA.它一般會作為ATA硬體的介面,它的本意是指把「硬碟控制器」與「盤體」集成在一起的硬碟驅動器。把盤體與控制器集成在一起的做法減少了硬碟介面的電纜數目與長度,數據傳輸的可靠性得到了增強,硬碟製造起來變得更容易,因為硬碟生產廠商不需要再擔心自己的硬碟是否與其它廠商生產的控制器兼容。對用戶而言,硬碟安裝起來也更為方便。IDE這一介面技術從誕生至今就一直在不斷發展,性能也不斷的提高,其擁有的價格低廉、兼容性強的特點,為其造就了其它類型硬碟無法替代的地位。
它有3個傳輸模式:PIO,Multiword DMA和Ultra DMA.
解釋二:
集成開發環境,Integrated Development Environment,可以輔助開發程式的應用軟體(詳細見網路之集成開發環境) [編輯本段]IDE ATA/ATAPI控制器 PIO的英文拼寫是「Programming Input/Output Model」,PIO模式是一種通過CPU執行I/O埠指令來進行數據的讀寫的數據交換模式。是最早先的硬碟數據傳輸模式,數據傳輸速率低下,CPU佔有率也很高,大量傳輸數據時會因為佔用過多的CPU資源而導致系統停頓,無法進行其它的操作。PIO數據傳輸模式又分為PIO mode 0[3.3MB/S]、PIO mode 1[5.2MB/S]、PIO mode 2[8.3MB/S]、PIO mode 3[11.1MB/S]、PIO mode 4[16.7MB/S]幾種模式,數據傳輸速率從3.3MB/s到16.6MB/s不等。受限於傳輸速率低下和極高的CPU佔有率,這種數據傳輸模式很快就被淘汰。
IDE架構剖析與發展趨勢
Enhanced IDE介面歷史(一)
1. AT ATTACHMENT (ATA):ATA介面是個人電腦上最具有實力的存儲介面,ATA介面早先被廣泛應用於IBM及其兼容機,它被定義為標準的硬碟介面。
2. ATA-1:ATA硬碟介面的第一代標准ANSI X3.279-1994,也就是早期的IDE介面。
3. ATA-2:ATA硬碟介面的第二代標准ANSI X3.279-1995,就是大家所知道的Fast ATA或者稱之為Enhanced IDE(EIDE)介面。
4. Apple-ATA:Apple上使用的ATA介面,當然也是由標準的ATA介面演化而來的,在ANSI的國際標准提案申請為X3T9.2/90-143.Revision 3.1,這一個由標准ATA介面規格演化而來Apple-ATA支持IDE介面的硬碟LBA驅動模式,但是沒有支持ATATP。
5. ATA-3:ATA硬碟介面的第三代標准ANSI X3T13/2008D Revision 7(draft),同樣包含在Fast ATA或Enhanced IDE的介面之中,一般使用者大多都知道Fast ATA或是Enhanced IDE介面,而對原來Fast ATA或Enhanced IDE介面居然還包括了ATA-2以及ATA-3兩組國際標准。
6. ATAPI:AT Attachment Packet Interface,這是ATA Protocol的延伸,被定義用來支持CD-ROM光碟機以及Tape磁帶機,這一個ATAPI Protocol容許硬碟以外的設備使用ATA數據線。
7. ATA/ATAPI-4:ATA硬碟介面的第四代標准ANSI X3T13/D96153(draft),也就是大家所知道的Ultra ATA或是Ultra DMA,這一個版本支持33MB/sec的數據傳輸率(in burst mode),相信各位讀者對ATA-4/Ultra DMA都是比較熟悉的了。
8. ATA/ATAPI-5:這是目前ATA硬碟介面的比較新的一代標准,這一規格里規定的數據流傳輸速率(in burst mode)為66MB/sec,並且加強了內部資料的檢查與錯誤修正的演算法,強化了資料的完整性和可靠性。
9. ATA/ATAPI-6:還有更新的一個標准,是ATA/ATAPI-5的改進,這一規格里規定的數據流傳輸速率(in burst mode)為100MB/sec。
表一:
PIO驅動模式的資料傳輸速率
PIO Mode Cycle time Transfer Rate
PIO Mode 0 600ns 3.3Mbytes/sec
PIO Mode 1 383ns 5.2Mbytes/sec
PIO Mode 2 240ns 8.3Mbytes/sec
PIO Mode 3 180ns 11.1Mbytes/sec
PIO Mode 4 120ns 16.6Mbytes/sec
Enhanced IDE介面發展至今,ULTRA DIRECT MEMORY ACCESS(ULTRA-DMA)的是目前最新的目前大家最為熟悉的就是Ultra-DMA的資料傳輸率最高可以達到ATA-3標準的四倍,也就是66.6Mbytes/sec。
實際上硬碟介面的鼻祖,除了SCSI界面以外,就是MFM/ST-506 Bus介面了,後來經過不斷的演變才演進成為今天的Enhanced IDE介面,而在Enhanced IDE之前的IDE/AT-BUS介面,則僅僅提供了PIO驅動模式,而沒有DMA驅動模式,這兩種驅動模式簡單來講區別主要是在數據傳輸時是否需要CPU來控制。在PIO模式下,任何一個硬碟的讀取動作,都必須經過CPU來控制管理,所以只要硬碟讀寫動作頻繁的時候,CPU的資源就被大量的消耗,進而降低了電腦整體的效率。而在DMA模式下,硬碟和內存之間的數據可以直接交換,這樣就不會佔用CPU的資源,提高了電腦的整體效率。讀者千萬不要忽略掉從PIO到DMA的進步,事實上個人電腦內的任何一個動作都必須運用系統的內存,畢竟CPU內部的緩存器容量太小了,所以凡是程序的讀取、運算都必須在內存上操作,這樣從硬碟到內存的數據交換就會非常頻繁,所以簡化這么一步對於電腦整體性能的提高還是非常突出的。
以前硬碟採用PIO模式的時候,只要一開始大量的硬碟讀寫操作,就會使得電腦的性能急劇下降,讓人感覺電腦總在等待什麼似的,實際上SCSI介面一開始也是採用PIO模式,後來也演變成了DMA模式,IDE/AT-BUS介面也不例外,到了PIO Mode 4驅動模式之後,IDE/AT-BUS介面已經成功的演化成為Enhanced IDE介面,驅動模式也由PIO Mode 4升級為Multi-word DMA Mode2,原本預計還有一個PIO Mode 5會問世的,但是DMA Mode已經出現,PIO Mode已經沒有市場了。
所以讀者可以認為Enhanced IDE介面的特點主要在於:驅動模式的改變,增加了對非硬碟存儲設備的支持等,而且原本是一組的IDE界面現在也增加到了兩組。
DMA的全名為Direct Memory Access直接內存存取,採用DMA驅動模式以後,CPU不再象往常那樣需要花費相當多的時間在硬碟的O/I操作上,DMA的意義就是在於讓硬碟和內存直接溝通,所有的硬碟操作都不需要佔用太多的CPU時間。
接著讓我們來看看DMA Mode的相關資料。
DMA驅動模式資料傳輸速率
DMA Mode I/O Cycle time Transfer Rate
Single-word DMA Mode 0 900ns 2.1 Mbytes/sec
Single-word DMA Mode 1 480ns 4.2 Mbytes/sec
Single-word DMA Mode 2 240ns 8.4 Mbytes/sec
Multi-word DMA Mode 0 480ns 4.2 Mbytes/sec [編輯本段]IDE RAID是什麼 RAID(Rendant Array of Inexpensive Disks)磁碟陣列是一種由多塊廉價硬碟構成的冗餘陣列,RAID技術分為幾種不同的等級,分別可以提供不同的速度,安全性和性價比。組建RAID可以充分發揮出多塊硬碟的優勢,實現遠遠超出任何一塊單獨硬碟的速度和吞吐量。除了性能上的提高之外,RAID還可以提供良好的容錯能力,在任何一塊硬碟出現問題的情況下都可以繼續工作,不會受到損壞硬碟的影響。RAID對伺服器/工作站是一項很重要的技術,目前的伺服器RAID主要可分為IDE、SCSI、SATA三大類產品,下面我們就先來了解一下IDE RAID晶元,以便您能對RAID這種技術和產品有更深入的了解。
與SCSI RAID相比,IDE RAID具有極低的價格,和一點也不遜色的性能表現,IDE RAID具有SCSI RAID無法比擬的高性價比。IDE RAID自推出後,受到工作站用戶和普通商業應用的普遍歡迎。也正是IDE RAID的出現,讓RAID對於普通的商業用戶來說再也不是什麼奢侈的技術,通過使用IDE磁碟陣列就可以讓你的機器性能更高、速度更快、穩定性更強。
Linux如何使用IDE RAID
RAID卡幾乎已經成為伺服器的標准配置了,RAID卡不但可以大大提高數據的安全,還可以大幅提高硬碟讀寫性能,從而提供伺服器的整體性能和可靠性。
Linux很早就提供對RAID的支持,不但支持RAID卡,也支持軟RAID,不過軟RAID實在是比不上硬RAID.早期的RAID卡都是用於scsi系統的,性能好,可惜價格高昂,而且scsi硬碟也大大貴過ide硬碟。
近年來,市場上出現了ide RAID卡,配合新一代的高速ide硬碟的降價,一些入門級的伺服器和工作站開始考慮採用ide RAID系統。
ide RAID系統相對scsi RAID而言,性能稍差,但價格相當低廉,實在是DIY友的利器。ide RAID卡的代表是promise fasttrak100.我就以此為例,介紹IDE RAID卡在Linux上的應用。
Linux的2.4.x核心開始支持ide RAID卡promise fasttrak系列產品。但有少少問題,可能會導致有些型號工作不穩定,推薦使用promise公司提供的驅動。
promise提供單cpu的驅動ftrh71_120b5.zip。它提供對fasttrak100TX2/LP/100的支持,可用在redhat 6.2和redhat 7.x上。
promise提供多cpu的驅動FTv120b3RHsmp.TAR。它提供對 fasttrak100TX2/66/100的支持,可用在redhat 6.2和redhat 7.0上。
如果你的promise ide RAID卡上的晶元是PDC20262和PDC20265,廠家建議你用redhat 7.0,因為可啟動的scsi模塊只支持單cpu,不支持smp.
現在我們來用單cpu的驅動來介紹安裝。
你需要兩張空白的,用dos格式化的軟盤。解壓文件ftrh71_120b5.zip後,可以看到幾個文件。看到disk1.img和disk2.zip了吧。可在dos下用rawrite.exe工具來把disk1.img寫進disk1軟盤中。
Linux用戶就更好辦:
dd if=disk.img of=/dev/fd0,要注意先不要把軟盤mount上。接下來,解壓disk2.zip,把生成的文件拷貝到disk2軟盤中。如果你有一個安裝好的Linux系統,想把fasttrak的驅動加進系統,從disk2軟盤上找到scsi_mod.o和ft.o兩個模塊。
insmod scsi_mod.o
insmod ft.o
用lsmod檢查一下是不是載入成功。如果你想在新的ide RAID系統上安裝新的Linux系統的話,就要麻煩一點。首先在ide RAID卡的cmos中選擇RAID方式和其它設置,如塊的大小等。把disk1軟盤插進軟碟機,開始安裝。disk1軟盤包含了redhat的啟動部分,可以當作redhat 7.x的安裝啟動軟盤。
正常安裝系統
當系統安裝接近完畢,顯示「Congratulations」的時候
按Ctrl+Alt+F2進入命令行模式
更換disk2軟盤
chroot /mnt/sysimage
mount -t vfat /dev/fd0 /mnt/floppy
cd /mnt/floppy
./setup-ft
完成後按Ctrl+Alt+F1,會到正常安裝模式,繼續進行完成安裝。 [編輯本段]IDE 集成開發環境 較早期程序設計的各個階段都要用不同的軟體來進行處理,如先用字處理軟體編輯源程序,然後用鏈接程序進行函數、模塊連接,再用編譯程序進行編譯,開發者必須在幾種軟體間來回切換操作。現在的編程開發軟體將編輯、編譯、調試等功能集成在一個桌面環境中,這樣就大大方便了用戶。
集成開發環境(簡稱IDE Integrated Develop Environment )是用於提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面工具。就是集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟體服務套。所有具備這一特性的軟體或者軟體套(組)都可以叫做集成開以環境。如微軟的Visual Studio系列,Borland的C++ Builder、Delphi系列等。該程序可以獨立運行,也可以和其它程序並用。例如,BASIC語言在微軟辦公軟體中可以使用,可以在微軟Word文檔中編寫WordBasic程序。IDE為用戶使用Visual Basic、Java和PowerBuilder等現代編程語言提供了方便。不同的技術體系有不同的IDE。比如visual studio.Net可以稱為C++、VB、C#等語言的集成開發環境,所以visual studio.Net可以叫做IDE。同樣,Borland的JBuilder也是一個IDE,它是Java的IDE。zend studio、editplus、ultraedit這些,每一個都具備基本的編碼、調試功能,所以每一個都可以稱作IDE。
IDE有三項必須集成的基本功能:「編輯器」、「編譯/鏈接器」、「調試器」。還有一些更強大的功能,如:代碼提示、項目管理、界面設計、建模功能
IDE多被用於開發HTML應用軟體。例如,許多人在設計網站時使用IDE(如HomeSite、DreamWeaver、FrontPage(Sharepointdesigner),等等),因為很多腳本可以自動生成。
『陸』 安裝xp系統產品密鑰是
這是XP的序列號。雖然真正的系統是干凈的,但可能不容易使用。有些提示很煩人
正品序列號:
MRX3F-47B9T-2487J-KWKMF-RPWBY
QC986-27D34-6M3TY-JJXP9-TBGMD
CM3HY-26VYW-6JRYC-X66GX-JVY2D
DP7CM-PD6MC-6BKXT-M8JJ6-RPXGJ
BW2VG-XXDY6-VW3P7-YHQQ6-C7RYMACER
MXVK6-CVJR8-7XB27-J87Q4-4V4HYALIENWARE
KYKVX-86GQG-2MDY9-F6J9M-K42BQCOMPAQ
XJM6Q-BQ8HW-T6DFB-Y934T-YD4YTDELL
BG6RK-BJ28X-4QTVT-T3BV2-C96V8EMACHINES
HW8DV-GBVHT-YRPRK-RPDQ2-9K6XTEQUUS
F4G2M-BH2JF-GTGJW-W82HY-VMRRQFOUNDER
GVVF9-44R2P-DHC42-QGVQV-R67RMFUJITSU-PC
C873T-F3X3M-9F6TR-J26GM-YTKKDFUJITSUSIEMENS
PXQKT-6Y2TF-HHYGX-RFB48-YKVRQGATEWAY
DMQBW-V8D4K-9BJ82-4PCJX-2WPB6HP
HCBR8-FGC2K-RY7BM-HM3KT-BKVRW IBM & LENOVO
FCDGH-QW3DJ-VBC6C-9BYTX-4GKQJLEGEND
KPWY2-Y6VCB-GRKQG-MVH23-JQTW6MAXDATA
MVF4D-W774K-MC4VM-QY6XY-R38TBMicrosoft
FD4PM-TVGHD-3BC36-D3DPJ-FYF6YOptima
WRPKR-XB7PK-RJ4H3-MPJHM-PPXK8POWERSPEC
HXDYM-CPFJP-7VP7Q-98CRF-GVTDYRoverBook
CXD6B-HTKB7-DVPWP-KTHH7-43TWQSAMSUNG
K4TDP-MGJ8D-YGF6X-9H3JM-W8PCMSOTEC
Q9RV4-G448X-F4WJP-F69MX-YBQ46SONY
TFJMW-TGPQH-77PCH-8448V-XB3HGSUPORTETECNICO
WDWCD-QBBPF-YCFC7-4P6RP-H8YF8TOSHIBA
M68XC-TX2C9-PKK8H-GP8JH-RC8XBTSINGHUATONGFANG
前幾個是批量發行版的激活碼,後面是對應品牌的激活碼。注意你的版本。
(6)ftr演算法擴展閱讀:
產品密鑰
產品密鑰是產品授權的證明。它是根據某種演算法(如橢圓演算法)生成的隨機數。當用戶進入密鑰產品時,會根據密鑰輸入判斷是否符合相應的演算法,然後通過這種方式進行判斷,確認用戶的身份和使用許可權。每個產品密鑰只能用於在特定數量的唯一計算機上安裝軟體。
簡介
與某些使用同一密鑰對數據進行加密和解密的加密技術不同,公鑰加密技術使用一對匹配的密鑰對數據進行加密和解密。每個鍵執行數據的單向處理,每個鍵的功能正好相反。當一個密鑰用於加密時,另一個密鑰用於解密。
公鑰由其所有者公開,而私鑰必須保密。為了發送機密消息,發送方必須使用接收方的公鑰來加密數據。一旦加密,只有接收者才能用他的私鑰解密。相反,用戶可以使用自己的私鑰處理數據。
換句話說,密鑰對可以在任何方向工作。這為「數字簽名」提供了基礎。如果用戶想要用自己的私鑰處理數據,其他人可以使用他提供的公鑰來處理數據。因為只有所有者知道私鑰,處理後的消息形成一個電子簽名——一種其他人無法生成的文件。數字證書包含公鑰信息,從而確認擁有密鑰對的用戶的身份。
『柒』 SENet及對輕量級網路的一些理解
轉自: https://zhuanlan.hu.com/p/71995304
受限於硬體的羸弱,深度學習在上世紀的發展一直是不溫不火,直到2012年,Alexnet橫空出世,深度學習才開始前所未有的大發展。隨著技術的發展,卷積神經網路逐漸取代了之前全連接的神經網路,成為深度學習領域的主流演算法。
卷積神經網路的優勢在於能夠更好的提取特徵和權值共享,自Alexnet之後,VGG又提出了神經網路的深度越深,效果越好的思想。自此深度成為構建網路時所考慮的第一要素。此時,又有人提出了Inception模型,這是人們在關注深度之外第一次關注網路的時間復雜度和空間復雜度。
圖1
如圖1所示,就是Inception v1的模型,該模型主要利用了1x1卷積進行了降維處理,達到了減小網路參數量和計算量的效果。在接下來的改進中,Inception又提出了利用兩層3x3網路取代一層5x5網路這樣的奇思妙想,進一步達到了減輕網路復雜度的作用。
如圖2所示,就是5x5卷積變成3x3卷積的示意圖。
圖2
從此之後,輕量級網路開始盛行。諸如Squeezenet,Mobilenet等都是輕量級網路中的傑出代表。
自Inception之後,人們已經不再通過暴力的增加網路層數的方法來企圖獲得更高的准確率了,然而面對復雜的問題,過淺的網路很難達到理想的效果,所以加深網路依然是解決圖像分類問題的最佳途徑。但是增加網路很容易造成overfiting甚至訓練集上得到的效果也比淺層網路要差,所以如何有效的增加網路層數就成了深度學習領域研究的重中之重。
為了解決這個問題,很多學者提出了自己的見解,如resnet所講述的殘差網路就是一例。然而殘差網路雖然能夠增加層數但是層數增加到三位數之後再增加也就有些無能為力了。此時作者另闢蹊徑,提出了一種新型的網路結構SENet,這個網路結構可以對所有網路進行改進然後做到真正有效的增加層數,無論原網路層數有多深,通過加入SENet,都能增加相當數量的深度,並有效的提高實驗效果。值得一提的是SENet在2017年的ImageNet挑戰賽獲得冠軍。
從Inception開始,學者們提出網路的時候就主要是提出一個block,然後用這個block像搭積木一樣的搭出整個網路。同樣,作者也是用這個方法設計網路的,作者提出了一個Squeeze-and-Excitation block,然後用這個SE block搭出了整個網路。
卷積神經網路雖然有諸多的好處,但是卷積神經網路捕捉到的只是局部的信息,假如卷積核是7x7,那麼感受野的大小也只有7x7。但是一張圖片的每一個像素點之間都是互相有聯系的,之前使用局部感受野的網路都忽略掉了全局像素點之間的關聯信息,使得實驗效果不夠理想。Inception通過多尺度的卷積核,找到了提取一張feature map上全局關聯信息的方法,然而直到本文網路之前都沒有誰考慮各通道之間的全局關聯信息。所以作者將關注點放到了通道關聯信息上,作者發現提取出通道之間互相關聯的信息可以有效的增加神經網路的分類准確率。
圖3
如圖3所示,就是一個SE block。對於任意給定的變換
(1)
我們可以構造一個對應的SE塊來進行特徵重新校準。首先通過擠壓操作,跨越空間維度WXH產生一個全局描述符,這個全局描述符聚合了所有通道的空間信息,之後再進行激勵操作,其中通過基於通道依賴性的門控機制為每個通道學習特定采樣的激活,控制每個通道的激勵。然後特徵映射U被重新加權以生成SE塊的輸出,再與之前的block結合在一起,就達到了提取通道關聯信息的目的。
SE網路可以通過簡單地堆疊SE block的集合來生成,也可以用作架構中任意深度的原始塊的直接替換。
新CNN架構的開發是一項具有挑戰性的工程任務,通常涉及許多新的超參數和網路各層配置的選擇。相比之下,上面概述的SE塊的設計是簡單的,並且可以直接與現有的最新架構一起使用,其卷積層可以通過直接用對應的SE層來替換從而使效果得到加強。另外,SE塊在計算上是輕量級的,並且在模型復雜性和計算負擔方面僅稍微增加。為了支持這些聲明,作者開發了一些SENets,即SE-ResNet,SE-Inception,SE-ResNeXt和SE-Inception-ResNet,並在ImageNet 2012數據集上對SENets進行了廣泛的評估。此外,為了證明SE塊的一般適用性,作者還呈現了ImageNet之外的結果,這表明作者所提出的方法不受限於特定的數據集或任務。
圖3所示的Ftr,我們可以將其看做一個普通的卷積層,事實上,在SE-ResNet,SE-Inception中,對應的Ftr分別就是殘差塊和Inception塊。
Squeeze操作的目的其實就是將空間信息提取出來,為了網路的輕量級,事實上我們還希望能夠將信息進行壓縮,不要增加過大的時間復雜度和空間復雜度。
因此作者選取了全局平均池化進行Squeeze操作。如圖3所示,我們將通過全局平均池化得到的向量設為Z,那麼z的第c個元素即可通過公式(2)進行計算:
(2)
這個操作實際上是在得到U之後再進行的全局平均池化。一般CNN的每個通道的濾波器都是對局部感受野進行特徵提取,因此U中的每個feature map都無法利用與其他feature map之間的關聯關系,而且在較低網路層次上對應到原圖尺寸上的感受野相對於較高層數的來說,無疑是很小的,這樣空間關聯信息的流失就會更加嚴重。
那麼作者提出的這個Squeeze,實際上就相當於將感受野擴展到了全局,自然能夠提取的特徵就更為豐富,通過訓練得到的分類識別的准確率就更高了。
為了利用在上一個操作中得到的全局信息,作者就提出了Excitation這個操作來全面捕獲通道相關性。如圖4和圖5所示,就分別是SE-Inception Mole和SE-Inception Mole。作者指出我們所需的這個Excitation必須是靈活的同時又要能學習到非互斥的信息。
那麼通過觀察圖4和圖5我們也能輕易的得知:
(3)
其中指的是Relu函數,指的是sigmoid函數,r為壓縮比例。這實際上就是兩個全連接層再加上兩個激活層。第一層全連接層的作用就是將global pooling所得到的全局信息進行壓縮,作者通過實驗發現,壓縮比例r=16的時候實驗結果最為理想。那麼第二層全連接層的作用就是將被壓縮的向量進行還原,還原到和global pooling層之後的向量大小一致。然後再將該向量與Ftr得到的三維卷積進行乘運算,實際上該向量中的每個值就與三維卷積中每個通道對應的feature map 相乘,這樣每一個feather map就得到了與其他通道的空間關聯特徵了。
圖4
那麼圖4和圖5中的C指的就是通道的數目,而指的就是這個模塊輸入的feather map的尺寸大小。而通過圖示我們也能清楚的看到SE block可以通用的加在所有的網路結構中從而達到提升性能的作用。
SENet通過堆疊一組SE塊來構建。實際上,它是通過用原始塊的SE對應部分(即SE殘差塊)替換每個原始塊(即殘差塊)而產生的,作者在表1中描述了SE-ResNet-50和SE-ResNeXt-50的架構。
圖5
表1
作者通過實驗發現,SE block改進resnet-50時,所增加參數量不超過10%,卻提升了1.5個百分點的准確率,並且作者後來通過實驗發現整體網路最末尾的SE block對效果提升作用很小,去除掉這些block網路的准確率也不過下降0.1個百分點,而增加的額外參數量就減小到4%了。如表2所示,是幾個原有的網路結構的top-1和top-5的准確率,original表示的是網路提出者得到的結果,而re-implementation指的是作者復現的結果,而SENet指的是作者運用SENet加強之後得到的結果,很明顯有顯著的准確率提升。
表2(該表截取自論文)
同時,作者還提出了一個計算模型復雜度的方法來探究運用了SENet之後,模型的參數量到底增加了多少,很顯然准確率增加百分比相同的情況下,參數量增加越少的話,演算法性價比越高。
兩個全連接層的參數量都是,那麼兩個全連接層的參數量就是。以resnet為例,假設resnet一共包含了S個stage,其中第s個stage裡麵包含了個重復的殘差塊,那麼用SENet加強過的resnet所增加的參數量就可以用公式(4)進行計算:
(4)
SENet的結構非常簡單,特別容易部署,不需要引入新的函數或者卷積層,並且增加的參數量微乎其微,是一個有效增加神經網路分類准確率的方法。同時,作者通過實驗發現,在Faster-rcnn等用於實現目標檢測的網路中增加SENet塊進行加強,也能得到很好的效果,這進一步證明了SENet網路的通用性。
接下來,作者思考了最後一個問題,增加的SE block添加在原有block中位置的不同會不會影響到實驗結果。為此,作者進行了對比試驗。
如圖6所示, 是原來的殘差網路與作者在四個不同位置添加了SE block的四種不同的網路結構,總共是五個不同的網路結構。
圖6
表3
而表3即是四種不同的SENet結構的錯誤率對比,我們能夠看到SE-PRE結構是其中相對表現最好的,這說明了SE block塊所在位置確實會影響到神經網路的整體效果,所以我們在運用SENet時,對於其所添加的位置應該好好斟酌。
這篇論文提出了一個名為名為SE block的架構單元,通過使網路能夠執行動態的信道特徵重新校準來提高網路的表示能力。實驗證明了SENets的有效性,它在多個數據集和任務之間實現了最先進的性能。此外,SE塊揭示了以前的體系結構無法充分地對通道相關關系建模。並且SE塊生成的特徵重要度值可以用於其他任務,例如用於模型壓縮的網路剪枝。
『捌』 有什麼快速的方法將掃描件彩色的變成黑白的(比如文字)
設置掃描方式為黑白掃描。或者在PS裡面打開掃描件,點擊「去色」。
『玖』 三角曲面相交特性
用三角曲面表示的兩張簡單曲面可能交於若干交線、若干交點與若干交面。下面將介紹兩張簡單曲面的交集的特性。
6.1.1.1 兩個空間三角形的關系與求交演算法及程序
6.1.1.1.1 空間三角形的關系
簡單曲面是若干三角形面片的集合,因此,簡單曲面的交由若干三角形面片對的交決定。兩個空間三角形面片的關系包括交於一點、交於一條線段、部分或全部重合、分離。圖6.1給出了兩個空間三角形可能存在的相交關系。
從圖6.1可以看出兩個三角形相交具有如下特徵:
(1)如果兩個三角形交於一點,那麼交點可能是一個或兩個三角形的頂點,或者兩個三角形只交於一條邊上。對於兩張曲面而言,這種交點可能是獨立的,也可能位於其他交線段上。如果交點位於其他交線上,則一定能在計算其他三角形對的交線時獲得。
(2)如果兩個三角形交於一條線段,那麼交線段的每個端點一定位於兩個三角形的某條邊上。在計算完所有三角形對的交線後,可以利用這個特點進行交線追蹤。
(3)如果兩個三角形完全或部分重合,那麼重合區域的邊界一定位於兩個三角形的邊界上。
6.1.1.1.2 空間三角形的求交演算法與程序
三角曲面求交運算最終歸結為空間三角形的求交運算,因此,三角形求交演算法的效率與正確性對曲面求交效率與結果影響顯著。下面介紹兩種求交演算法。
演算法一:先計算兩個三角形所在平面的交線,然後分別計算出該交線與兩個三角形邊的交點,再根據交點在交線上的位置直接確定交線段。如圖6.2所示,三角形Δ1與Δ2所在平面的交線為L,L與Δ1的交點為a與b,L與Δ2的交點為c與d。根據4個交點在L上的位置可以直接判斷出Δ1與Δ2的交線段為cb。
圖6.1 兩個空間三角形可能存在的相交關系
三維地質建模方法及程序實現
三維地質建模方法及程序實現
6.1.1.2 簡單曲面的相交特徵
兩張簡單曲面s1與s2之間可能交於一條或若干條交線,或者交於若干交點,也可能存在若幹部分重合。簡單曲面的交集具有如下特徵:
(1)s1與s2之間的每條交線由若干線段順序連接而成,每條線段同時位於s1與s2的一個三角形上。由於簡單曲面是由三角形組成的,曲面之間的交線實際上就是分別來自兩張曲面的三角形之間的交線段的集合,因此,每條交線段一定同時位於兩張曲面的一個三角形上。
(2)s1與s2之間每條交線是連續的,相當於一條封閉或不封閉的簡單弧。每條交線只存在兩種可能:交線是首尾相連的封閉環,或者交線的兩個端點分別位於s1或s2的某條邊界線上。根據這個特點,可以判斷一條交線上的所有交線段是否全部被搜索到。
(3)s1與s2之間可能存在若干獨立的交點,任意兩個獨立的交點之間的連線不位於其他交線上。當兩張簡單曲面之間出現獨立交點時,應在曲面重構後保證交點位於曲面網格的結點上,或者適當微調曲面,消除獨立交點。
(4)s1與s2之間可能存在若干獨立的重合面,每個重合面均有一個封閉的外邊界與若干個內邊界。重合面的邊界均位於s1與s2上三角形的邊上。在地質模型中,地層尖滅是經常遇到的地質現象,地層尖滅的位置就會出現地層界面部分重合。