以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [建议]提一点软件优化的建议:关于策略公式测试优化时减少内存使用量的建议  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=184156)

--  作者:lshhaaa
--  发布时间:2021/2/1 14:30:38
--  [建议]提一点软件优化的建议:关于策略公式测试优化时减少内存使用量的建议
提一点软件优化的建议:
关于策略公式测试优化时减少内存使用量的建议
问题提出:利用传统算法进行策略公式测试,优化时参数大围和数量大,对计算机的内核、内存要求极高,经常发生内存不足而崩溃。(数量大时遗传算法也多次崩溃,20核32G)。
解决思路:为了解决内存不足的问题,在使用虚拟内存寄出上,建议对运行过程数据,仅仅保留有效结果数据,大量无效结果数据予以放弃。
具体实现:
1、后一组参数运行得出的结果,和前面组的参数结果相比较,保留得分较高的参数结果,删除得分较低的参数结果。
2、将得分较高的参数,保留一定数量。该数量可调,比如保留前50组参数结果,或者60。
3、每个显示列,都单独进行排分。比如利润率前50、MAR前50、总亏损前50(从小向大排)等。
4、如果某个参数超过一定数值后发生钝化,则只记录两端边界值,比如自设的止损参数范围从0到100%,实际上15%至100%对得分不影响,均为得分最大,那么记录下15%和100%两个参数结果即可。
5、如果上述措施能解决内存问题,那么,参数优化时可以取消6个参数的限制,不设限。
6、参数大范围测试优化时间一般会很长,比如几十个小时,没关系,反正利用夜间或低负荷时电脑自行运算。需要增加一个防止休眠的小功能,和自动数据存储的功能。

--  作者:yukizzc
--  发布时间:2021/2/1 14:41:48
--  

你这还不如设计成,可分割优化的方式呢。

比如,把参数可能性分成100份,每份可能有1000个参数组合,每次优化完1000个参数组合后保存一个测试报告,然后重新回测新的一份组合

最后得到100个回测结果然后加起来


--  作者:lshhaaa
--  发布时间:2021/2/1 14:59:32
--  
分割优化的方案也是不错的一个方案。

两个方案感觉都可以,只要能达到下述目的就行:
1、突破一次优化仅能6个参数的限制,不设限;
2、巨量测试优化过程中,不崩溃,小内存也可以稳定运行。
3、对巨量的测试结果数据,自动剔除钝化的参数,减少人为判断的时间。

--  作者:无为剑
--  发布时间:2021/2/1 15:54:53
--  
 优化时是否勾选“节省内存模式”?
--  作者:lshhaaa
--  发布时间:2021/2/1 16:01:11
--  
目前操作已经勾选节省内存、自动使用虚拟内存。



对于优化建议中提到的方案,可对程序现有的内存管理模式不做改变,仅仅优化算法和存储量

--  作者:无为剑
--  发布时间:2021/2/1 16:19:25
--  
如果已经勾选了节省内存模式,那么基本上就已经不存在什么内存浪费情况了,每优化一个参数仅仅保留下参数的基本优化值,如果你还是出现内存问题,那么要从其他方面来考量问题
--  作者:lshhaaa
--  发布时间:2021/2/1 16:28:40
--  
相同设置,优化数量小了, 能正常。优化数量大了,就会崩溃,包括遗传算法,也崩溃。

如果经过算法优化能实现“大数量不崩溃、优化参数个数不设限、自动剔除钝化结果”,减少问题发生,将更加提高软件的易用性、人性化。