欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法

文檔序號:6597780閱讀:339來源:國知局

專利名稱::一種遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法
技術領域
:本發(fā)明涉及智能計算與軟硬件協(xié)同技術,特別涉及一種使用軟硬件協(xié)同來處理遺傳算法的技術。
背景技術
:遺傳算法(GeneticAlgorithm,GA)是Holland在1975年在《Ad即tationinNaturalandArtificialSystem》中首次提出的一種概率搜索算法,遺傳算法通過有組織地然而是隨機地信息交換來重新結(jié)合那些適應性好的串,在每一代中,利用上一代串中適應性好的位和段來生成一個新的串的群體,作為額外添加,偶爾也要在串結(jié)構(gòu)中嘗試用新的位和段來替代原來的部分。類似于自然進化,遺傳算法通過作用于染色體上的基因,尋找好的染色體來求解問題。由于它不受搜索空間限制性假設條件的約束,不必要求諸如連續(xù)性、可微性和單峰性等假設,以及其固有的并行性,因此作為一種穩(wěn)健、高效的優(yōu)化算法已被廣泛應用于各個領域。而目前的遺傳算法都是由純硬件或者純軟件實現(xiàn),由軟件實現(xiàn),算法的運算效率低下。而由純硬件實現(xiàn),只能針對某個問題進行求解,做不到通用性。這兩種實現(xiàn)方法都有其各自的缺陷,目前急需一種可行的綜合性技術方法能夠改善上述技術的缺陷。軟硬件協(xié)同設計(Hardware/SoftwareCo-designing)的思想是在硬件和軟件設計過程中盡最大限度的利用其協(xié)同作用來滿足系統(tǒng)的要求。自從軟硬件協(xié)同思想提出以后,一直備受國內(nèi)外研究者的關注,關于軟硬件協(xié)同設計領域的研究也十分活躍。到目前為止,國內(nèi)外學者已經(jīng)在此方面做過很多研究,比如在遙感影像的實時效應,音頻編碼算法,Lattice譯碼算法,數(shù)字電路仿真,系統(tǒng)的模擬、仿真和調(diào)試等一些方面都使用過軟硬件協(xié)同設計方法,并且獲得比使用傳統(tǒng)的設計方法更好的效果。因此利用軟硬件協(xié)同設計方法不僅可以提高求解問題的效率,同時可以擴寬其應用領域,進一步推動軟硬件協(xié)同設計的發(fā)展等。
發(fā)明內(nèi)容本發(fā)明的目的在于,利用軟硬件協(xié)同工作的方式提供一種遺傳算法的實現(xiàn)方法,使算法的計算性能得到顯著的提升,并且增加計算的通用性。本發(fā)明所提供遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法,基于FPGA平臺實現(xiàn)以下各部分,(1)在硬件層面,建立硬件遺傳算法IP核,(2)在軟件層面建立軟件協(xié)同系統(tǒng),用于計算適應值與隨機數(shù)并向硬件遺傳算法IP核提供,(3)建立硬件遺傳算法IP核與軟件協(xié)同系統(tǒng)之間信息交互的協(xié)議,使硬件層面與軟件層面之間的信息交互達到同步狀態(tài);所述軟件協(xié)同系統(tǒng)包括以下模塊,3適應值計算模塊,該模塊根據(jù)實際問題提供相應的適應值函數(shù),通過適應值函數(shù)實現(xiàn)個體適應值的計算;隨機數(shù)模塊,該模塊根據(jù)硬件需求產(chǎn)生一個隨機數(shù);所述硬件遺傳算法IP核包括以下模塊,總控模塊,該模塊提供各個模塊之間調(diào)用的控制信號,從而控制整個遺傳算法的流程以及數(shù)據(jù)的流向,協(xié)調(diào)各個模塊在總控模塊的控制信號下工作;初始化模塊,該模塊隨機地產(chǎn)生演化所需的初始種群,為遺傳算法提供初始種群;交叉選擇模塊,該模塊實現(xiàn)精英選擇和交叉操作的相結(jié)合,即由隨機數(shù)模塊提供的隨機數(shù)選擇兩個個體作為父代個體,確定交叉點位置,進行單點交叉操作產(chǎn)生兩個新個體,然后根據(jù)適應值計算模塊提供的適應值,從新個體和父代個體中選擇兩個適應值最高的個體替換父代;變異選擇模塊,該模塊實現(xiàn)精英選擇和變異操作的相結(jié)合,即由隨機數(shù)模塊提供的隨機數(shù)選擇一個個體作為父代個體,確定變異點位置,進行單點變異操作產(chǎn)生一個新個體,然后根據(jù)適應值計算模塊提供的適應值,從新個體和父代個體中選擇一個適應值最高的個體替換父代,;評價模塊,該模塊尋找出新一代種群中具有最優(yōu)適應值的個體,將具有最優(yōu)適應值的個體更新到存儲種群的片上內(nèi)存上;并判斷是否已達終止條件,若滿足終止條件則停止遺傳算法;片上內(nèi)存模塊,該模塊組織兩個片上內(nèi)存,分別用于存儲種群和適應值;個體控制模塊,該模塊是一個四選一模塊,用于判斷初始化模塊、交叉選擇模塊、變異選擇模塊和評價模塊中是哪個模塊要從存儲種群的片上內(nèi)存中進行個體讀取和存儲;適應值控制模塊,該模塊是一個四選一模塊,用于判斷初始化模塊、交叉選擇模塊、變異選擇模塊和評價模塊中是哪個模塊要從存儲適應值的片上內(nèi)存中進行適應值讀取和存儲。而且,評價模塊判斷是否已達終止條件時,所述終止條件為最優(yōu)適應值在100代內(nèi)不發(fā)生變化。而且,所述新一代種群是經(jīng)過交叉選擇模塊進行精英選擇和交叉操作,然后經(jīng)過變異選擇模塊進行精英選擇和變異操作所得結(jié)果。本發(fā)明將遺傳算法中適合于硬件處理的模塊如雜交、變異等使用硬件編程實現(xiàn),將遺傳算法中適應值評價這個通用性模塊用軟件來處理。它不僅可以提升運算速度,而且提高遺傳算法IP核的通用性,只需在軟件層改寫適應值函數(shù),就可實現(xiàn)類似問題的求解。軟硬件協(xié)同的工作平臺與純軟件或純硬件實現(xiàn)相比,運用軟硬件協(xié)同方法求解具有較高的效率和廣泛的通用性.圖l為本發(fā)明的原理圖;圖2為本發(fā)明實施例的有限狀態(tài)機圖3為本發(fā)明實施例的軟硬件交互協(xié)議示意圖。具體實施例方式下面結(jié)合附圖與實施例對本發(fā)明進行詳細描述本實施例是在Xilinx公司提供的XC2VP30FPGA開發(fā)板上實現(xiàn),使用PowerPC(—種精簡指令集架構(gòu)的中央處理器)作為處理器,使用邏輯門電路構(gòu)成硬件IP核,使用XilinxBlockMemoryGe證ator作為存儲器。FPGA平臺有兩條總線,PLB(ProcessorLocalBus,處理器局部總線)和0PB(On-ChipPeripheralBus,片上外設總線)。0PB總線連接一些低速和低性能設備,它不直接連接到處理器內(nèi)核,而是通過總線橋與PLB總線上的設備(如PowerPC和片上內(nèi)存)聯(lián)系。具體實施時,軟件層面的隨機數(shù)模塊和適應值計算模塊由本領域技術人員采用軟件模塊化方案設計后安裝到PowerPC中即可;硬件層面的各模塊可根據(jù)工作原理采用Verilog語言描述,編譯成邏輯門電路后作為硬件IP核接入0PB總線即可。在XC2VP30FPGA開發(fā)板上建硬件IP核的時候,F(xiàn)PGA平臺提供寄存器以便在工作流程中軟硬件直接進行交互時使用。由于片上內(nèi)存只能硬件訪問,實施例設定了24個寄存器,記為寄存器0、2、3.23。如圖1所示,本發(fā)明的工作狀態(tài)是由總控模塊來實現(xiàn)各模塊之間的調(diào)控的。如軟件層面的隨機數(shù)模塊和適應值計算模塊,硬件層面的初始化模塊、交叉選擇模塊、變異選擇模塊、評價模塊都和總控模塊進行著信息的交互。因此總控模塊是整個設計的核心部分,就好比計算機內(nèi)部的CPU,它控制著整個設計的流程以及數(shù)據(jù)的流向,各模塊也都是在總控模塊的控制信號下有序地工作。對本IP核的設計而言,整個系統(tǒng)的工作狀態(tài)都體現(xiàn)在總控模塊上。各個子模塊通過總控模塊的控制信號進行著信息的交互。另外初始化模塊、交叉選擇模塊、變異選擇模塊、評價模塊均是通過適應值控制模塊與個體控制模塊來對片上內(nèi)存進行訪問。為便于實施起見,下面詳細說明實施例中各個模塊以供參考總控模塊總控模塊由一個狀態(tài)機構(gòu)成,狀態(tài)分別為IDLE、INIT、CR0SS、MUT、VALUE和ST0P??偪啬K通過狀態(tài)機的方式來控制其他模塊。例如進入INIT狀態(tài)則激活初始化模塊進行工作,進入CROSS狀態(tài)則激活交叉選擇模塊進行工作。隨機數(shù)模塊輸入為硬件層面中初始化模塊、交叉選擇模塊或變異選擇模塊發(fā)來的請求信號,輸出為一定數(shù)量的隨機數(shù)。實施例采用C語言實現(xiàn),具體為調(diào)用C語言的庫函數(shù)rand,并且對所獲得的隨機數(shù)進行范圍處理再輸出。適應值計算模塊輸入為個體,輸出為計算得到的適應值。采用C語言實現(xiàn),具體實現(xiàn)為針對所求問題對二進制編碼形式的個體進行計算。具體實施時,可以事先根據(jù)實際問題在該模塊中設置相應的適應值函數(shù),例如實施例為0-1背包問題。初始化模塊模塊完成遺傳算法的第一階段的初始化工作,具體實現(xiàn)為產(chǎn)生種群大小個二進制編碼形式的個體,并且計算相應的適應值。本發(fā)明實施例中設定種群的大小為32,即包括32個個體,這些個體構(gòu)成第一代種群。初始化模塊將這些個體與對應的適應值保存在片上內(nèi)存中(所有個體存入存儲種群的片上內(nèi)存,相應適應值存入存儲適應值的片上內(nèi)存),最后通知總控模塊任務完成。交叉選擇模塊交叉選擇模塊在獲得總控模塊啟動信號之后啟動。啟動之后首先發(fā)出隨機數(shù)請求信號(本實施例中為將寄存器1中CR0SS—RAN位置為1)并開始等待、在軟5件層面的隨機數(shù)模塊檢測到該信號(CR0SS_RAN=1)之后立即使用rand函數(shù)產(chǎn)生3個隨機數(shù),其中兩個用于選擇個體作為父代個體,另一個用于獲得雜交點。并且將隨機數(shù)寫入指定的寄存器(實施例中為寄存器20)中,當隨機數(shù)模塊完成之后給總控模塊返回完成信號(實施例中為將寄存器1中CROSS_RAN_DONE位置為1)。交叉選擇模塊在獲得該高電平信號(CROSS_RAN_DONE=1)之后繼續(xù)工作。交叉選擇模塊再從指定位置(寄存器20)讀取隨機數(shù),然后通知個體控制模塊從存儲個體的片上內(nèi)存進行個體的讀取,并且通知適應值控制模塊從存儲適應值的片上內(nèi)存讀取相應的適應值。交叉選擇模塊再根據(jù)獲得的雜交點對兩個個體進行雜交。實施例所采用雜交方式為單點雜交,如兩個個體分別為Oxffff與0x0000,雜交點為8。則雜交獲得結(jié)果為OxOOff與OxffOO。雜交結(jié)束之后,將新生成的兩個個體依次保存在指定適應值計算內(nèi)存地址(實施例為寄存器7、8、9、10、11)。然后再將請求適應值計算信號置為l(實施例中為寄存器l中的recLfit位)。適應值計算模塊在檢測到該高電平信號(req_fit=1)之后從指定適應值計算內(nèi)存地址(寄存器7、8、9、10、11)讀取個體并且進行相應的計算,然后將結(jié)果保存在指定內(nèi)存地址(實施例中為寄存器12)并且發(fā)送完成信號(實施例中為寄存器0的fit_done位置為高)。交叉選擇模塊獲得完成信號(fit_done=1)之后從保持適應值的指定內(nèi)存地址(寄存器12)讀取到適應值之后,從父代個體(兩個)和子代個體(兩個)中選擇其中兩個適應值最高的個體存入存儲種群的片上內(nèi)存,相應適應值也存入存儲適應值的片上內(nèi)存。最后交叉選擇模塊發(fā)送完成信號。變異選擇模塊變異選擇模塊在獲得總控模塊啟動信號之后啟動。啟動之后首先發(fā)出隨機數(shù)請求信號(本實施例中為將寄存器1中MU乙RAN位置為1)并開始等待,在軟件層面的隨機數(shù)模塊獲得該信號(MUT_RAN=1)之后立即使用rand函數(shù)產(chǎn)生2個隨機數(shù),其中一個用于選擇個體作為父代個體,另一個用于獲得變異點,并且將隨機數(shù)寫入指定的寄存器(實施例中為寄存器20)中。當隨機數(shù)模塊完成之后給總控模塊返回完成信號(本實施例中為將寄存器1中MUT_RAN_DONE位置為1)。變異選擇模塊在獲得該高電平信號(MUT_RAN_DONE=1)之后繼續(xù)工作。變異選擇模塊再從指定位置(寄存器20)讀取隨機數(shù),然后通知個體控制模塊從存儲個體的片上內(nèi)存進行個體的讀取,并且通知適應值控制模塊從存儲適應值的片上內(nèi)存讀取相應的適應值。交叉選擇模塊再根據(jù)獲得的變異點對選擇的這個個體進行單點變異。如原始的父代個體為OxffOO,變異點為l,則變異得到新個體為OxffOl。待變異結(jié)束后,將新生成的個體保存在指定適應值計算內(nèi)存地址(實施例為寄存器7、8、9、10、11),然后再將請求適應值計算信號置為l(實施例中為寄存器l中的recLfit位)。適應值計算模塊在檢測到該高電平信號(req_fit=1)之后從適應值計算內(nèi)存地址(寄存器7、8、9、10、11)讀取個體并且進行相應的計算,然后將結(jié)果保存在適應值內(nèi)存地址(實施例中為第12寄存器)并且發(fā)送完成信號(實施例中為第0寄存器的fit_done位置為高)。變異選擇模塊獲得完成信號(fit_done=1)之后從適應值內(nèi)存地址(寄存器12)讀取到適應值之后,從父代個體(一個)與子代個體(一個)中選擇適應值最好的個體存入存儲種群的片上內(nèi)存,相應適應值也存入存儲適應值的片上內(nèi)存。最后變異選擇模塊發(fā)送完成信號。評價模塊具體操作為比較新一代種群中具有最優(yōu)適應值的個體與上一代種群中具有最優(yōu)適應值的個體的適應值大小比較。如前者適應值更大,則將前者替換后者并且將6計數(shù)器置0。否則就保存不變,并且將計數(shù)器加l。實施例中,存儲種群的片上內(nèi)存除存儲32個個體外,還單獨提供一個專用空間存儲具有最優(yōu)適應值的個體,替換時更新該空間即可。存儲適應值的片上內(nèi)存也單獨提供一個專用空間存儲相應最優(yōu)適應值,替換個體時也進行相應更新。當計數(shù)器大于預設值(實施例為100)時,說明最優(yōu)適應值在100代內(nèi)未發(fā)生變化,則通知總控模塊停機。具體實施時,可以每進行一次交叉選擇、一次變異選擇,將結(jié)果作為新一代;還可以設定交替運用交叉選擇和變異選擇得到下一代,例如進行一次交叉選擇后結(jié)果作為新一代,進行一次變異選擇后結(jié)果作為下一個新一代,再進行一次交叉選擇后結(jié)果作為新一代...甚至設計一個函數(shù),由函數(shù)決定通過交叉選擇還是變異選擇得到下一代。實施例設定,進行一次交叉選擇,然后進行一次變異選擇,再將結(jié)果作為新一代,這樣可以綜合兩種進化方式優(yōu)點。具體實施時,也可以相反,進行一次變異選擇,然后進行一次交叉選擇,再將結(jié)果作為新一代。個體控制模塊由于實施例中有4個模塊需要讀取片上內(nèi)存模塊中存儲種群的片上內(nèi)存,該模塊為四選一模塊。實施例通過使用片上內(nèi)存模塊的4個模塊的不同優(yōu)先級別,來確定哪個模塊通過使用片上內(nèi)存模塊獲取個體,具體優(yōu)先級為初始化模塊>交叉選擇模塊>變異選擇模塊>評價模塊;適應值控制模塊由于實施例中有4個模塊需要讀取片上內(nèi)存模塊中存儲適應值的片上內(nèi)存,該模塊為四選一模塊。實施例通過使用片上內(nèi)存模塊的4個模塊的不同優(yōu)先級別,來確定哪個模塊使用通過使用片上內(nèi)存模塊獲取適應值,具體優(yōu)先級為初始化模塊>交叉選擇模塊>編譯模塊>評價模塊;片上內(nèi)存模塊為了快速的讀取個體信息所產(chǎn)生存儲種群的的片上內(nèi)存,具體實現(xiàn)為使用Xilinx公司的BlockMemoryGenerator生成的(種群大小+1)*個體串長(實施例為33*50的雙口片上內(nèi)存。XilinxBlockMemoryGenerator提供AB兩個端口,實施例將A端口用于讀取,B端口用于寫入。適應值的存儲對應于個體,實現(xiàn)方式一致為了快速的讀取適應值信息所產(chǎn)生存儲適應值的片上內(nèi)存,具體實現(xiàn)為使用Xilinx公司的BlockMemoryGenerator生成的(種群大小+1)*適應值大小(實施例為33*32)的雙口片上內(nèi)存。XilinxBlockMemoryGenerator提供AB兩個端口,實施例將A端口用于讀取,B端口用于寫入。除了存儲種群的個體和相應適應值外,實施例特別多設置1個個體和相應適應值存儲位置,就是為了存放種群中具有最優(yōu)適應值的個體,以及該個體的適應值。如圖2所示,整個設計分成六個狀態(tài)。以下系統(tǒng)是指本發(fā)明的整個軟硬件結(jié)合方案。IDLE:空閑狀態(tài),系統(tǒng)復位后進入該狀態(tài)??臻e狀態(tài)由硬件層面的總控模塊進行控制處理。系統(tǒng)在時鐘上升沿時檢查是否有外部運行信號(如switch開關)。在系統(tǒng)獲得高電平信號之后開始運行,否則一直循環(huán)等待。開始運行之后即轉(zhuǎn)入初始化狀態(tài)(INIT)。INIT:初始化狀態(tài),完成本系統(tǒng)的初始化工作,初始化工作具體包含了生成種群,評價種群個體的適應值。首先由總控模塊發(fā)送信號至軟件層面,即將寄存器0的init標記位置為1。軟件層面當檢測到init標記位為1時,則開始使用隨機數(shù)模塊(調(diào)用rand函數(shù))開始產(chǎn)生種群大小個的隨機數(shù),并且將結(jié)果送到軟件層面的適應值計算模塊進行評價計算。待評價結(jié)束之后,適應值計算模塊將個體及其適應值放在指定位置(實施例中將個體存放在寄存器2、3、4、5、6中,適應值存放在寄存器12中),然后將寄存器0中的init_7done標記位置為l。即發(fā)送完成信號通知總控模塊??偪啬K在收到完成信號之后,再發(fā)送信號通知初始化模塊去指定寄存器(寄存器2、3、4、5、6、12)讀取個體與適應值并且將個體與適應值存儲在片上內(nèi)存中,所有個體存入存儲種群的片上內(nèi)存,相應適應值存入存儲適應值的片上內(nèi)存。當初始化模塊完成種群大小個個體的初始化工作之后,初始化模塊發(fā)送初始化結(jié)束信號給總控模塊進入CROSS狀態(tài)。CROSS:交叉狀態(tài),完成本系統(tǒng)中的交叉選擇操作。具體為總控模塊發(fā)送信號調(diào)用交叉選擇模塊開始工作。并且在該狀態(tài)進行等待。待收到交叉選擇模塊的完成信號之后,進入MUT狀態(tài)。MUT:變異狀態(tài),完成本系統(tǒng)中的變異選擇操作。具體為總控模塊發(fā)送信號調(diào)用變異選擇模塊開始工作。并且在該狀態(tài)進行等待。待收到變異選擇模塊的完成信號之后,進入VALUE狀態(tài)。VALUE:評估狀態(tài),完成本系統(tǒng)中的評估和停機判斷工作。評價模塊用來判斷從雜交和變異種獲得的新個體中是否有適應值更好的個體。如果當適應值在一段時間內(nèi)(實施例中本系統(tǒng)為在100次迭代)最優(yōu)個體沒有發(fā)生變化,就說明找到了最優(yōu)個體,發(fā)送信號通知總控模塊停機。STOP:停止狀態(tài),完成本系統(tǒng)停止過程中的相關操作。主要操作就是系統(tǒng)將最優(yōu)個體及其適應值輸出,即將個體與適應值置于指定位置(實施例中將個體存放在寄存器19、20、21、22、23,適應值存放在寄存器12中),然后由軟件層面讀取打印。最后再將整個設備恢復到IDLE狀態(tài),片上內(nèi)存重置。整個系統(tǒng)的工作流程為系統(tǒng)復位或者上電后進入IDLE狀態(tài),系統(tǒng)在START信號為0的時候則在IDLE狀態(tài)保持等待。當系統(tǒng)得到START=1后,轉(zhuǎn)入INIT初始化狀態(tài);INIT狀態(tài)工作未完成時,INIT_DONE—直等于0,并且在保持在INIT狀態(tài)繼續(xù)工作。當初始化工作完成后發(fā)出INIT_DONE=1信號,系統(tǒng)轉(zhuǎn)入CROSS狀態(tài);在雜交操作未完成之前,CROSS_DONE—直保持為0,并且在保持在CROSS狀態(tài)繼續(xù)工作。當交叉操作完成后發(fā)出CROSS_DONE=1信號,系統(tǒng)轉(zhuǎn)入MUT狀態(tài);在變異操作未完成之前,MUT_DONE—直保持為0,并且在保持在MUT狀態(tài)繼續(xù)工作。當變異操作完成后發(fā)出MUT_DONE=1信號,系統(tǒng)轉(zhuǎn)入EVALUE狀態(tài);評價操作完成后進行停止狀態(tài)判斷,如果滿足停止條件,則發(fā)出STOP=1信號,系統(tǒng)轉(zhuǎn)入STOP狀態(tài),否則發(fā)出STOP=0信號并轉(zhuǎn)入CROSS狀態(tài),繼續(xù)進行循環(huán)操作;系統(tǒng)完成STOP狀態(tài)要做的工作后無條件轉(zhuǎn)入IDLE狀態(tài)。關于軟硬件通信協(xié)議由圖3可知硬件發(fā)出Request為高(1)的信號并阻塞等待軟件處理完成,軟件得到硬件發(fā)出Request信號為高后才開始進行相關的軟件處理工作,軟件處理完成后將處理done置為高(1)并且開始阻塞等待;硬件得到軟件發(fā)來的信號為高(1)的done信號之后,進行相應的硬件處理,硬件處理完成后再將Request信號置為低(0)并且阻塞等待。軟件得到硬件發(fā)出信號為低(0)的Request信號后將done信號置低(0);硬件得到done信號為低(0)說明本次軟硬件通信結(jié)束,然后硬件便可以進行后續(xù)工作。這種操作避免了由于硬件速度較快,導致的在軟件信號在完成之后在拉低信號的過程中,硬件再次請求操作所帶來的錯誤數(shù)據(jù);或者軟件多次響應硬件請求信號等誤操作。保證了系統(tǒng)的穩(wěn)定性和健壯性。發(fā)明實施例選取了0-1背包問題這一典型的組合優(yōu)化問題分別從三個方面做了對比實驗,在實驗過程中,三種方式都采用了同樣的演化策略,實驗結(jié)果如下表<table>tableseeoriginaldocumentpage9</column></row><table>從表中數(shù)據(jù)可以知道該發(fā)明運行速度明顯優(yōu)于純軟件運行的速度并且可以獲得和軟件一樣的最優(yōu)值甚至更好。另外本發(fā)明還可以應用于二進制問題,函數(shù)優(yōu)化問題等,充分體現(xiàn)了純硬件實現(xiàn)所不具備的通用性。以上所述僅為本發(fā)明中的一個實施例,并不用于限制本發(fā)明。凡在本發(fā)明的精神與原則之內(nèi),所做的任何修改,改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。權利要求一種遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法,其特征在于基于FPGA平臺實現(xiàn)以下各部分,(1)在硬件層面,建立硬件遺傳算法IP核,(2)在軟件層面建立軟件協(xié)同系統(tǒng),用于計算適應值與隨機數(shù)并向硬件遺傳算法IP核提供,(3)建立硬件遺傳算法IP核與軟件協(xié)同系統(tǒng)之間信息交互的協(xié)議,使硬件層面與軟件層面之間的信息交互達到同步狀態(tài);所述軟件協(xié)同系統(tǒng)包括以下模塊,適應值計算模塊,該模塊根據(jù)實際問題提供相應的適應值函數(shù),通過適應值函數(shù)實現(xiàn)個體適應值的計算;隨機數(shù)模塊,該模塊根據(jù)硬件需求產(chǎn)生一個隨機數(shù);所述硬件遺傳算法IP核包括以下模塊,總控模塊,該模塊提供各個模塊之間調(diào)用的控制信號,從而控制整個遺傳算法的流程以及數(shù)據(jù)的流向,協(xié)調(diào)各個模塊在總控模塊的控制信號下工作;初始化模塊,該模塊隨機地產(chǎn)生演化所需的初始種群,為遺傳算法提供初始種群;交叉選擇模塊,該模塊實現(xiàn)精英選擇和交叉操作的相結(jié)合,即由隨機數(shù)模塊提供的隨機數(shù)選擇兩個個體作為父代個體,確定交叉點位置,進行單點交叉操作產(chǎn)生兩個新個體,然后根據(jù)適應值計算模塊提供的適應值,從新個體和父代個體中選擇兩個適應值最高的個體替換父代;變異選擇模塊,該模塊實現(xiàn)精英選擇和變異操作的相結(jié)合,即由隨機數(shù)模塊提供的隨機數(shù)選擇一個個體作為父代個體,確定變異點位置,進行單點變異操作產(chǎn)生一個新個體,然后根據(jù)適應值計算模塊提供的適應值,從新個體和父代個體中選擇一個適應值最高的個體替換父代,;評價模塊,該模塊尋找出新一代種群中具有最優(yōu)適應值的個體,將具有最優(yōu)適應值的個體更新到存儲種群的片上內(nèi)存上;并判斷是否已達終止條件,若滿足終止條件則停止遺傳算法;片上內(nèi)存模塊,該模塊組織兩個片上內(nèi)存,分別用于存儲種群和適應值;個體控制模塊,該模塊是一個四選一模塊,用于判斷初始化模塊、交叉選擇模塊、變異選擇模塊和評價模塊中是哪個模塊要從存儲種群的片上內(nèi)存中進行個體讀取和存儲;適應值控制模塊,該模塊是一個四選一模塊,用于判斷初始化模塊、交叉選擇模塊、變異選擇模塊和評價模塊中是哪個模塊要從存儲適應值的片上內(nèi)存中進行適應值讀取和存儲。2.根據(jù)權利要求1所述遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法,其特征在于評價模塊判斷是否已達終止條件時,所述終止條件為最優(yōu)適應值在100代內(nèi)不發(fā)生變化。3.根據(jù)權利要求2所述遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法,其特征在于所述新一代種群是經(jīng)過交叉選擇模塊進行精英選擇和交叉操作,然后經(jīng)過變異選擇模塊進行精英選擇和變異操作所得結(jié)果。全文摘要本發(fā)明提供了一個遺傳算法的軟硬件協(xié)同工作實現(xiàn)方法。遺傳算法是一種典型的演化算法,但是由于二進制編碼的特點,利用軟件實現(xiàn)的遺傳算法求解實際問題的效率較低。硬件FPGA雖然可以提高求解的速度,但是純硬件實現(xiàn)一旦實現(xiàn),硬件結(jié)構(gòu)不易改變,缺乏靈活性。本發(fā)明針對軟件和硬件實現(xiàn)存在不足,提出了遺傳算法的軟硬件協(xié)同設計方法,它不僅可以提升運算速度,而且提高遺傳算法IP核的通用性,只需在軟件層改寫適應值函數(shù),就可實現(xiàn)類似問題的求解。軟硬件協(xié)同的工作平臺與純軟件,純硬件實現(xiàn)相比,運用軟硬件協(xié)同方法求解具有較高的效率和廣泛的通用性。文檔編號G06F17/50GK101789044SQ20101010357公開日2010年7月28日申請日期2010年1月27日優(yōu)先權日2010年1月27日發(fā)明者劉海峰,李元香,柳林,王峰,王瓏,雷新申請人:武漢大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
略阳县| 武乡县| 通海县| 都昌县| 四子王旗| 无极县| 潮安县| 留坝县| 榆树市| 濮阳县| 额尔古纳市| 鹤峰县| 隆安县| 长武县| 聂荣县| 揭东县| 公主岭市| 林芝县| 辽源市| 任丘市| 黄陵县| 延长县| 彰化县| 凉城县| 金山区| 岱山县| 南陵县| 华坪县| 双江| 攀枝花市| 鄱阳县| 东丽区| 通海县| 永济市| 正阳县| 仁布县| 琼海市| 温州市| 宜春市| 土默特左旗| 乐平市|