專案 優化演算法設計(二) 程式的簡單實現

2022-03-05 23:56:09 字數 1107 閱讀 8673

變異率種群大小

最大遺傳代數

最優個體所在世代

專案資源的方差

0.70.08

50100

87511.2500

0.60.08

2002000

1884

434.6750

0.60.4100

1500

673459.8250

這裡我是給出了方差,但在遺傳演算法的評價函式中我是使用了方差的倒數。因為我們要求的是方差小的方案,而遺傳演算法中規定適應值為非負,而且在任何情況下都希望數值越大越好(看看遺傳演算法中選擇運算元的輪盤賭形式就知道了),所以不能直接使用方差作為染色體的適應度。我只是隨便把方差取倒數來用,只是為了先實現,再改進。實際上要考慮到適應度的分布,不要太離散了,不然的話就會有不正常的收斂。當然用了double還有考慮到c#雙精度浮點數的精度去到多少位。還有的就是根據李東南老師**,整個專案理想的資源消耗量應該是鐘形,而不是矩形這樣的話,評價適應度函式是有改進的地方。

還有就是李文雄老師周一晚來看了一下。他說遺傳演算法的核心是要儲存種群的多樣性,就像現實世界一樣,只有儲存種群多樣性才能逼近全域性最優解。他強調特別是執行到了後面各個個體都差不多,在進行交叉就意義不大了。要實現多樣性這一點,就要設計好遺傳演算法的各個運算元,例如都保留舊種群中某些個體,或者在新種群中挑一些適應度低的跟舊種群進行替換。具體要怎樣做就要自己設計了。

程式的大體框架是這樣的:

程式時序圖

程式類圖結構

兩個xsd檔案均是強型別的dataset,主要是方便資料的處理。通過command中的dataoperator讀取xml格式的project檔案(使用到型別化dataset),在通過dataaccess把資料填充到entity中。要注意的是project,task這幾個類是根據project檔案的xml標記設計的。

優化相關的全部設定在bussiness裡面,考慮到優化的方向不止資源均衡一方面(還有像如何調整每項工作的時間來縮短總工期),有把所以與資源均衡相關的都放到resourceequipoise中。而為了實現多種運算元,並能夠更新(就是相當於公升級),還設定乙個遺傳運算元的介面。在gaoperator中是介面的實現。這裡還要用一下patterns,我還沒有考慮好是用那個。

程式源**

實驗算例打包

優化C 程式編譯效率的實

發帖人 flytothespace 時 間 詳細資訊 1 自定義程式的入口 2 合併區段 3 不用調malloc,free等函式 3 不用cout來輸出,cin來輸入 4 如果呼叫了很多庫函式如memset,stycpy等等 的話,請匯入msvcrt.lib,不然編譯器會在程式裡面 匯入靜態庫,這樣...

簡單的矩陣優化演算法

對於矩陣乘法 c a b 通常的做法是將矩陣進行分塊相乘,如下圖所示 從上圖可以看出這種分塊相乘總共用了 8 次乘法,當然對於子矩陣相乘 如 a0 b0 還可以繼續遞迴使用分塊相乘。對於中小矩陣來說,很適合使用這種分塊乘法,但是對於大矩陣來說,遞迴的次數較多,如果能減少每次分塊乘法的次數,那麼效能將...

react 簡單優化設計 純元件的優化

加入有如下 settimeout 1000 這裡每隔1 秒 就重新整理一次,這個時候 a 元件會每次重複diff 演算法,看是否該重新渲染,然後走render 方法 這樣效率太低,我們的設想就是,只要 data 資料不變,我們就不會渲染,這樣會節省很大的成本 所以這就有了純元件的概念 一種是clas...