【三维虚拟仿真】与【数据模型计算仿真】
一、三维仿真与数据仿真的差别
【三维虚拟仿真】举例:虚拟工厂,工业仿真.....其实他属于3D可视化仿真(VR),这里只列举基于业务流程的仿真。
【数据模型计算仿真】更多偏向计算(三维仿真也有计算,但更多调用底层的三位引擎进行GPU计算),用数学模型对某业务进行模拟仿真,通过给定的数据和参数,用模型计算来推动仿真的过程,最终给出结果,并对结果进行解释。
三维虚拟仿真在调试程序的时候,因为你知道给定条件下大概会输出什么结果,所以调试比较方便,【比如柴油机车三维仿真时,按下启动按钮后,各个面板的指示灯、仪表要显示什么信息,是很明确的,程序正不正确,看看VR的输出结果就知道,比如发动机启动后,转速表却为0,这肯定不正确,或者发动机在转,但是没有粒子效果,那一定是代码错了,没有做事件关联】。
而用【数学模型】进行仿真的时候,给定条件下会出什么结果,好多是未知的,所以更多依赖【模型合理性】和【代码正确性】来保证计算结果是可信的。
二、数据仿真时,如何确保程序的正确性、健壮性.....
1、写好文档【需求、设计、测试文档】,定期搞一搞“回头看”(自动狗头)
2、规范编码、反复测试代码
3、多检查程序代码,特别是数据引用是否正确,计算公式是否正确......
4、请人挑错【别人愿意帮你挑错,简直是洪福啊】
5、无论科班还是非科班的同学,特别是毕业好几年的人,要定期补习硬件知识【组成原理、体系结构...】、软件知识【数据结构、算法、软件工程】、如果你还要设计模型,那么除了是【业务专家】以外,你还得有【深厚的数学功底】......
6、项目文档(资源)的管理也很重要(很多人自己做过的东西,却怎么也找不到)。管理好你的【配置数据】、【各种文档】、【程序源码】、【结算结果】、【结果分析和解释文档】等等。
7、每天锻炼身体......健壮的程序,需要健壮的身体 :D
写函数的时候,一定要写注释
包含以下信息:
【输入的参数】......
【处理逻辑】......
【输出的参数】......
这样别人改你的程序才不会刨你的坟,自己来改的话,也会轻松些......人生苦短,光活着就已经用尽全力了,所以,不要干自己折磨自己的事情....
"""
====作者====
。。。。。。
====日期====
。。。。。。
====维护记录====
。。。。。。
====功能====
生成每个交易【月份】->【板块集合】映射表
需要配合大盘交易日,每个有交易的月份都要生成数据,如果没有板块,板块信息为[]
====in====
df = ym_bankuai_df ,每月强势板块信息表
dapan_days_df = dapan_days_df ,大盘交易日表
=====每月强势板块信息表=====结构如下
Row │ 日期 板块 年 月 月份
│ Any Any Any Any String
────┼──────────────────────────────────────
1 │ 2018-07-31 yj 2018 7 2018-07
2 │ 2018-07-31 yc 2018 7 2018-07
3 │ 2018-08-31 yj 2018 8 2018-08
4 │ 2018-08-31 yz 2018 8 2018-08
5 │ 2018-08-31 yc 2018 8 2018-08
6 │ 2018-08-31 yx 2018 8 2018-08
7 │ 2018-09-30 yc 2018 9 2018-09
8 │ 2018-09-30 yj 2018 9 2018-09
=====大盘交易日表=====结构如下
Row │ day 年 月
│ Date Int64 Int64
─────┼──────────────────────────
1 │ 2009-12-03 2009 12
2 │ 2009-12-04 2009 12
3 │ 2009-12-07 2009 12
4 │ 2009-12-08 2009 12
5 │ 2009-12-09 2009 12
6 │ 2009-12-10 2009 12
7 │ 2009-12-11 2009 12
8 │ 2009-12-14 2009 12
====逻辑====
根据大盘日期信息,逐月统计该月的强势板块,生成一个unique的数组
====out===
df【月份】->【强势板块集合】表
Row │ 月份 年 月 板块
│ String Int32 Int32 Array…
────┼────────────────────────────────────────────────────
1 │ 2018-07 2018 7 Any["yj", "yc"]
2 │ 2018-08 2018 8 Any["yj", "yz", "yc", "yx"]
3 │ 2018-09 2018 9 Any["yc", "yj", "yx"]
4 │ 2018-10 2018 10 Any["yj", "yc"]
5 │ 2018-11 2018 11 Any["yc", "yz"]
6 │ 2018-12 2018 12 Any[]
7 │ 2019-01 2019 1 Any["yx"]
8 │ 2019-02 2019 2 Any["yx"]
9 │ 2019-03 2019 3 Any["yx", "yz", "yc"]
10 │ 2019-04 2019 4 Any["yc"]
11 │ 2019-05 2019 5 Any["yx"]
12 │ 2019-06 2019 6 Any["yx"]
"""
function gen_ym_inds_df(; df = ym_bankuai_df, dapan_days_df = dapan_days_df)
begin_date = df.日期[1]
end_date = df.日期[end]
dapan_ym_df = gen_dapan_yyyy_mm(dapan_days_df, begin_date, end_date)
dapan_ym_df[!, "板块"] = [[] for i = 1:size(dapan_ym_df, 1)]
for r in eachrow(dapan_ym_df)
ym = r.月份
q_df = @linq df |> where(:月份 .== ym)
if size(q_df, 1) == 0
r.板块 = []
else
r.板块 = q_df.板块 |> unique
end
end
return dapan_ym_df
end