建模的是個bcube網絡,是云計算中心中比較熱的網絡結構,具體的可以參照scholar.google.com
創新互聯建站是一家專業提供漣源企業網站建設,專注與成都網站制作、成都網站設計、H5開發、小程序制作等業務。10年已為漣源眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。為了節省空間,我一度想采用uint8作為數據類型,因為數據量比較大,我自己以為這樣處理的時間會比較短,但是用tic toc計時后,double類型反而在運算的時候更快。
arryfun可以從一個矩陣中批量執行指定的函數。
在最后我終于還是放棄了matlab,因為這次的課題目標是速度,matlab實在太慢了,并且靈活度太低,想要整出個自定義的數據結構,或者自由的多線程,都很難(可能是我對matlab還不夠熟悉所致)。
相比之下,C++作為瑞士軍刀,可大可小,大有STL庫作支持,小則可對內存每個字節作操作,寫出來其實也不慢。并且GA算法完全可以并行化,采用C++并行之后大幅度提高速度。matlab雖然有parfor,但是挺蛋疼的,限制太多。
因為課題的關鍵是速度,計時是必須的,為了能夠方便的計時,模仿matlab寫了tic和toc
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfFreq;
QueryPerformanceFrequency(&litmp);
dfFreq= (double)litmp.QuadPart;
#define tic
QueryPerformanceCounter(&litmp);
QPart1= litmp.QuadPart
#define toc
QueryPerformanceCounter(&litmp);
QPart2=litmp.QuadPart;
std::cout<<(QPart2-QPart1)/dfFreq<<std::endl
這樣tic; fun(); toc;就能計算出時間來。
在多線程上,采用了std::thread類,據說這個類不太安全,大多推薦boost庫中的thread。但是GA中的多線程,不同線程之間完全分開,沒有公共內存區域,不需要上鎖,不涉及安全問題,簡單起見就用std::thread即可。
std::thread t[TotalThreads];
for(int i=0;i<TotalThreads;++i)
t[i]=std::thread(Eval2,i);
for(int i=0;i<TotalThreads;++i)
t[i].join();
就簡單暴力的啟動線程,然后等待線程結束。
在洗牌和排序算法中,強大的STL庫提供了支持,分別是std::sort和std::random_shuffle
這里值得一提的是random_shuffle的效率并不高,在matlab中作同樣的shuffle需要0.6秒,而C++中需要1.6秒。在本項目中影響并不大,否則要考慮重寫。
先寫到這里
新聞標題:畢設1-創新互聯
新聞來源:http://vcdvsql.cn/article2/ccicic.html
成都網站建設公司_創新互聯,為您提供ChatGPT、微信公眾號、企業建站、外貿建站、標簽優化、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯