框架和演算法
㈠ 框架結構計算方法分層法、反彎點發概念
分層法:
將框架結構沿高度分成若干無側移的開口框架,並以每層的全部框架梁以及與其相連單飛框架柱作為該層的計算單元;根據各層樑上的豎向荷載,分別計算各梁的古段彎矩,計算梁、柱的線剛度和彎矩分配系數。各個節點的彎矩根據相鄰桿件的線剛度進行分配;梁和底層柱的傳遞系數均按遠端固定支座取為1/2,其餘柱由於將彈性支承簡化為固定端,因此傳遞系數改用1/3。分層法適用於計算豎向荷載作用下的柱等高的框架。目的是得出框架節點各桿端的彎矩,彎矩有分配系數,荷載效應組合有各種荷載的分項系數、過去也曾提過抗力的分項系數(其倒數就是現在的結構重要性系數)。
反彎點法:
豎向荷載為主時,框架分析得到的彎矩圖里,框架柱腳彎矩和柱頂的彎矩方向是相反的,一正一負經過零,零點位置叫反彎點,反彎點都位於柱中點附近。反彎點法是一種手工計算的簡化近似計算方法之一種。適用於規則框架。就是利用這個(反彎點都位於柱中點附近)特性,設每層柱子中點彎矩為零,把多層框架截成每層每層的計算簡圖來計算。
特點1:各桿的彎矩為直線分布
特點2:在固定端處,角位移為零
特點3:同層各柱具有相同的層間位移
性質:
風荷載或水平地震對框架結構的作用,一般可簡化為作用於框架節點上的水平集中力,其受力與變形具有如下特點:
(1)各桿的彎矩為直線分布,且每個桿均有一個零彎矩點即反彎點;
(2)在固定端處,角位移為零,但上部各層節點均有轉角存在,節點的轉角隨樑柱線剛度比的增大而減小;
(3)如忽略梁的軸向變形,同層內各節點具有相同的側向位移,同層各柱具有相同的層間位移。
鑒於框架結構在水平荷載作用下具有上述受力變形特點,如能求出各柱的反彎點位置及反彎點處的剪力,就可以利用靜力平衡條件求出各桿件的內力。因此解題的關鍵是確定各柱反彎點的位置及反彎點處的剪力。
應用:
1、計算假定
梁的線剛度與柱的線剛度之比無限大(ib/ic≥3)(柱上、下端無轉角)
梁端彎矩按左、右梁的線剛度分配,並滿足節點平衡條件(規定了梁的彎矩計算)
2、反彎點位置
底層:距支座2/3層高處
其餘層:1/2層高處
3、剪力在各柱中的分配
層間剪力按各柱的抗側移剛度在樓層的各柱中分配
柱的抗側移剛度
㈡ 框架結構建築中各梁和各柱的計算方法
在現澆鋼筋混凝土框架結構中,柱高應自柱基上表面至樓層或柱頂面高度計算,樓層間的柱高應按樓層面至上一樓層面或柱頂面計算,即框架柱與框架梁相交的節點部分的混凝土工程量並入框架柱中計算。
框架梁的長度,按照梁的凈長計算,梁的高度按照梁底至梁頂面全高計算,即梁和板相交部分的混凝土工程量並入梁的工程量之中。
板的工程量計算,按照板的凈長乘以板的凈寬乘以板的厚度,以立方米計算。
Android中對於圖形界面以及多媒體的相關操作比較容易實現。而且對於大多數
手機
用戶來說,他們主要也就是根據這些方面的功能來對系統那個進行修改。我們可以通過本文介紹的Android多媒體框架的源碼解讀,來具體分析一下這方面的基本知識。
Android多媒體框架的代碼在以下目錄中:external/opencore/。這個目錄是Android多媒體框架的根目錄,其中包含的子目錄如下所示:
* android:這裡面是一個上層的庫,它基於PVPlayer和PVAuthor的SDK實現了一個為Android使用的Player和Author。
* baselibs:包含數據結構和線程安全等內容的底層庫
* codecs_v2:這是一個內容較多的庫,主要包含編解碼的實現,以及一個OpenMAX的實現
* engines:包含PVPlayer和PVAuthor引擎的實現
* extern_libs_v2:包含了khronos的OpenMAX的頭文件
* fileformats:文件格式的據具體解析(parser)類
* nodes:編解碼和文件解析的各個node類。
* oscl:操作系統兼容庫
* pvmi: 輸入輸出控制的抽象介面
* protocols:主要是與網路相關的RTSP、RTP、HTTP等協議的相關內容
* pvcommon:pvcommon庫文件的Android.mk文件,沒有源文件。
* pvplayer:pvplayer庫文件的Android.mk文件,沒有源文件。
* pvauthor:pvauthor庫文件的Android.mk文件,沒有源文件。
* tools_v2:編譯工具以及一些可注冊的模塊。
Splitter的定義與初始化
以wav的splitter為例,在fileformats目錄下有解析wav文件格式的pvwavfileparser.cpp文件,在nodes目錄下有pvmf_wavffparser_factory.cpp,pvmf_wavffparser_node.h, pvmf_wavffparser_port.h等文件。
我們由底往上看,vwavfileparser.cpp中的PV_Wav_Parser類有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的成員函數,此類應該就是最終的解析類。我們搜索PV_Wav_Parser類被用到的地方可知,在PVMFWAVFFParserNode類中有PV_Wav_Parser的一個指針成員變數。
再搜索可知,PVMFWAVFFParserNode類是通過PVMFWAVFFParserNodeFactory的CreatePVMFWAVFFParserNode()成員函數生成的。而CreatePVMFWAVFFParserNode()函數是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()類構造函數中通過PVPlayerNodeInfo類被注冊到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> 的vector中,在這個構造函數中,AMR,mp3等node也是同樣被注冊的。
由上可知,Android多媒體框架中對splitter的管理也是與ffmpeg等類似,都是在框架的初始化時注冊的,只不過Opencore注冊的是每個splitter的factory函數。
綜述一下splitter的定義與初始化過程:
每個splitter都在fileformats目錄下有個對應的子目錄,其下有各自的解析類。
每個splitter都在nodes目錄下有關對應的子目錄,其下有各自的統一介面的node類和node factory類。
播放引擎PVPlayerEngine類中有PVPlayerNodeRegistry iPlayerNodeRegistry成員變數。
在PVPlayerNodeRegistry的構造函數中,將 AMR, AAC, MP3等splitter的輸入與輸出類型標示和node factory類中的create node與release delete介面通過PVPlayerNodeInfo類push到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> iType成員變數中。
當前Splitter的匹配過程
PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector<PVUuid, OsclMemAllocator>& aUuids)函數的功能是根據輸入類型和輸出類型,在已注冊的node vector中尋找是否有匹配的node,有的話傳回其唯一識別標識PVUuid。
從QueryRegistry這個函數至底向上搜索可得到,在android中splitter的匹配過程如下:
android_media_MediaPlayer.cpp之中定義了一個JNINativeMethod(java本地調用方法)類型的數組gMethods,供java代碼中調用MultiPlayer類的setDataSource成員函數時找到對應的c++函數
1.{"setDataSource", "(Ljava/lang/String;)V", (void *)
android_media_MediaPlayer_setDataSource},
2.static void android_media_MediaPlayer_setDataSource
(JNIEnv *env, jobject thiz, jstring path)
此函數中先得到當前的MediaPlayer實例,然後調用其setDataSource函數,傳入路徑
3.status_t MediaPlayer::setDataSource(const char *url)
此函數通過調getMediaPlayerService()先得到當前的MediaPlayerService, const sp<IMediaPlayerService>& service(getMediaPlayerService());
然後新建一個IMediaPlayer變數, sp<IMediaPlayer> player(service->create(getpid(), this, fd, offset, length));
在sp<IMediaPlayer> MediaPlayerService::create(pid_t pid, const sp<IMediaPlayerClient>& client, const char* url)中
調status_t MediaPlayerService::Client::setDataSource(const char *url)函數,Client是MediaPlayerService的一個內部類。
在MediaPlayerService::Client::setDataSource中,調sp<MediaPlayerBase> MediaPlayerService::Client::createPlayer(player_type playerType)
生成一個繼承自MediaPlayerBase的PVPlayer實例。
㈣ 72為什麼說框架是新的編程語言
軟體框架(Software framework)通常指是為了實現某個業界標准或完成特定基本任務的軟體組件規范,也指為了實現某個軟體組件規范,而提供規范所要求之基礎功能的軟體產品。近日,JavaWorld的特約編輯Peter WaynerWayner發布了一篇題為《框架是新編程語言的7個原因》的文章。在文章中,Wayner首先指出在20世紀80年代,開發者很容易針對一個語言的優劣展開激烈的爭論,而當前爭論的話題卻變成了框架的優劣。接著,Wayner總結了軟體框架是新編程語言的7個原因,現對這些原因進行一個全面的歸納和整理,以供開發者學習和參考。具體內容如下:
大部分代碼通常由API調用組成
過去,編寫軟體意味著開發者調用自己對編程語言的所有技能,而如今,自動化為開發者處理了大多數事情,如垃圾回收、智能編譯等。此外,大部分代碼現在都是由API調用組成,所以深入理解API就顯得更加重要,而關於編程語言及其語法就顯得沒有那麼重要了。站在巨人的肩上,看地更遠
當面對那些艱難的工作時,框架相對於編程語言來說,它給開發者帶來了很大的改變,尤其是繼承框架代碼庫里的所有精華顯得更加容易和高效。使用自己喜歡的新語言編寫所有功能,而不採用某種更受歡迎的框架,這是一種強悍的方式,而只有簡單地遵循框架及其API才會讓開發者快速享受到新選擇的樂趣。理解架構是做什麼的,而非語法
因為大多數代碼是由許多API調用組成,所以學習語言的特徵已沒有太大益處。此外,雖然搞清楚語言細節能夠給開發者帶來一定的幫助,但是進一步學習框架原理能夠獲得更多的回報。盡管開發者可以變成Java對象靜態成員變數初始化的專家,但是最好自己能夠弄清楚如何充分利用Lucene、JavaDB和其它框架。開發者可以花費數月時間來徹底了解Objective-C編譯器的運行時,但是徹底學習蘋果最新的核心Lib將真正能夠使得開發者的代碼更加高效。演算法主宰
演算法的學習只能幫助開發者處理存儲在變數里的數據,而重新實現標准演算法和數據結構又具有一定的風險,且比較浪費時間。實際中,框架已經定義和實現了正確的演算法,並且框架已經經歷了多年的廣泛測試和使用,代表著開發者在軟體基礎實施上的共同投資。所以開發者不應該拋棄別人努力的成果和完全靠自己的雙手構建起演算法庫,而應該研究框架和學習使用框架。糾正語法的編譯器和聰明的IDE
IDE和編譯器幫助開發者處理了許多問題,如語句結尾符號等語法問題。IDE的自動化處理已經把開發者從編程語法的單調乏味中拯救出來,它不僅對框架有很大的幫助,而且還能夠提醒開發者函數調用的參數、檢查數據類型等。可視化編程語言的出現,語言的語法也該消失了
有些編程正變得可視化,這意味著計算機語言正變得不是那麼重要了。GUI構建器(如AndroidBuilder)就是很好的例子,開發者只需拖拉用戶界面部件即可實現編程,而相關細節已經封裝在可視化組件里,開發者無需關心它是C、Java或其它語言。編碼即法律/規則
計算機語言被設計為開放、可無限延展的,而框架的設計卻有很強的規則和規范,其設計師可以決定什麼被允許以及本質上什麼要禁止。如果設計師不想讓某些東西發生,那麼函數調用將從API中消失;如果設計師喜歡某種想法,那麼通常會有多個函數調用以及許多支持工具。
㈤ 如何學習演算法框架
深度學習對於初學者而言,需要注意些什麼問題,如何快速入門;
對比當前比較流行的深度學習框架,並分析各種框架的優缺點;
針對用 Python 實現各種演算法模型時遇到的問題進行討論;
討論在學習 TensorFlow 並用其實現 Inception V1-V4 ,ResNet,DenseNet 等深度神經網路的過程中的難點,和在過程中出現的問題;
用現有演算法框架實現自己的圖像識別系統。
㈥ 框架結構計算方法,如分層法,反彎點法,D值法的特點和適用范圍
豎向荷載下用分層法,水平荷載下用反彎點法或D值法.
㈦ 簡述回溯法的2種演算法框架,並分別舉出適合用這兩種框架解決的一個問題實例
回溯法(探索與回溯法)是一種選優搜索法,又稱為試探法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為「回溯點」。
基本思想
在包含問題的所有解的解空間樹中,按照深度優先搜索的策略,從根結點出發深度探索解空間樹。當探索到某一結點時,要先判斷該結點是否包含問題的解,如果包含,就從該結點出發繼續探索下去,如果該結點不包含問題的解,則逐層向其祖先結點回溯。(其實回溯法就是對隱式圖的深度優先搜索演算法)。 若用回溯法求問題的所有解時,要回溯到根,且根結點的所有可行的子樹都要已被搜索遍才結束。 而若使用回溯法求任一個解時,只要搜索到問題的一個解就可以結束
一般表達
可用回溯法求解的問題P,通常要能表達為:對於已知的由n元組(x1,x2,…,xn)組成的一個狀態空間E={(x1,x2,…,xn)∣xi∈Si ,i=1,2,…,n},給定關於n元組中的一個分量的一個約束集D,要求E中滿足D的全部約束條件的所有n元組。其中Si是分量xi的定義域,且 |Si| 有限,i=1,2,…,n。我們稱E中滿足D的全部約束條件的任一n元組為問題P的一個解。
解問題P的最樸素的方法就是枚舉法,即對E中的所有n元組逐一地檢測其是否滿足D的全部約束,若滿足,則為問題P的一個解。但顯然,其計算量是相當大的。
規律
我們發現,對於許多問題,所給定的約束集D具有完備性,即i元組(x1,x2,…,xi)滿足D中僅涉及到x1,x2,…,xi的所有約束意味著j(j<=i)元組(x1,x2,…,xj)一定也滿足d中僅涉及到x1,x2,…,xj的所有約束,i=1,2,…,n。換句話說,只要存在0≤j≤n-1,使得(x1,x2,…,xj)違反d中僅涉及到x1,x2,…,xj的約束之一,則以(x1,x2,…,xj)為前綴的任何n元組(x1,x2,…,xj,xj+1,…,xn)一定也違反d中僅涉及到x1,x2,…,xi的一個約束,n≥i≥j。因此,對於約束集d具有完備性的問題p,一旦檢測斷定某個j元組(x1,x2,…,xj)違反d中僅涉及x1,x2,…,xj的一個約束,就可以肯定,以(x1,x2,…,xj)為前綴的任何n元組(x1,x2,…,xj,xj+1,…,xn)都不會是問題p的解,因而就不必去搜索它們、檢測它們。回溯法正是針對這類問題,利用這類問題的上述性質而提出來的比枚舉法效率更高的演算法。
㈧ 壁式框架的計算與框架區別要標准答案~考試用~謝了~
基本上壁式框架和框架結構演算法沒有聲么區別,在豎向荷載下用分層法;在水平荷載作用下用D值法。其要說他們的不同就是,壁式框架是屬於剪力牆結構,而不是真正的框架。演算法和框架結構沒有區別。
㈨ 進化演算法的框架
進化演算法是以達爾文的進化論思想為基礎,通過模擬生物進化過程與機制的求解問題的自組織、自適應的人工智慧技術。生物進化是通過繁殖、變異、競爭和選擇實現的;而進化演算法則主要通過選擇、重組和變異這三種操作實現優化問題的求解。如圖1: 1、t=0
2、初始化群體p(0)
3、評估初始化群體p(0)
4、while終止條件不滿足do
5、 重組操作:p(t)=r(p(t))
6、 變異操作:p(t)=m(p(t))
7、 評估操作:p(t)
8、 選擇操作:p(t+1)=s(p(t)UQ)
9、 t=t+1
10、end 圖1:進化演算法基本框架
其中r、m、s分別表示重組運算元、變異運算元、選擇運算元。
㈩ 框架結構荷載計算方法有哪些
框架結構在豎向荷載作用下的內力計算可近似地採用分層法.
在進行豎向荷載作用下的內力分析時,可假定:
(1)作用在某一層框架樑上的豎向荷載對其他樓層的框架梁的影響不計,而僅在本樓層的框架梁以及與本層框架梁相連的框架柱產生彎矩和剪力.
(2)在豎向荷載作用下,不考慮框架的側移.
計算過程可如下:
(1)分層:分層框架柱子的上下端均假定為固定端支承,
(2)計算各個獨立剛架單元:用彎矩分配法或迭代法進行計算各個獨立剛架單元.而分層計算所得的各層梁的內力,即為原框架結構中相應層次的梁的內力.
(3)疊加:在求得各獨立剛架中的結構內力以後,則可將相鄰兩個獨立剛架中同層同柱號的柱內力疊加,作為原框架結構中柱的內力.
疊加後為原框架的近似彎距圖,由於框架柱節點處的彎矩為柱上下兩層之和因此疊加後的彎距圖,在框架節點處常常不平衡.這是由於分層計算單元與實際結構不符所帶來的誤差.若欲提高精度,可對節點,特別是邊節點不平衡彎矩再作一次分配,予以修正.
框架結構水平荷載作用下得計算方法有如下幾種:
1,反彎點法.適用范圍是橫梁線剛度與柱剛度之比大於等於3時,且假定樓板為剛性.底層柱反彎點距下端為2/3層高,其餘各層柱子的反彎點在柱中點位置.反彎點處的彎矩為0,剪力不為0.
2,D值法,也叫做修正後的反彎點法.柱的反彎點高度取決於框架的層數,柱子所在的位置,上下層梁的剛度比值,上下層層高與本層層高的比值以及荷載的作用形式等.反彎點位置確定後,柱剪力,彎矩的計算與反彎點法相同.
3,門架法,門架法假定樑柱的反彎點位於它們的中點處,柱中點處的水平剪力按各柱支承框架梁的長度與寬度之比進行分配.