反向推包算法

整体流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1. 理解什么是推包和反向推包:	
从海量资产中逆向筛选出满足要求的基础资产池,即条件已知反过来推符合条件的
2. 模型的实现流程:前期处理->建立模型->求解模型
前期处理: 备选池处理
建立模型: 确定决策变量->决策变量取值限制->建立目标函数->设立约束条件
模型求解: 单纯形法,分支切割法,目前代码使用的是CBC和GLOP

要求是线性的: 非线性要转换成线性 a/b>2 转换成a-2b>0

使用的是混合整数规划的思想,分成线性规划和纯整数规划.

约束条件分成几类,其中规模必须有,按照优先级排序. 全部约束条件获取不到,则依次减少


代码层面:
一: 对备选池数据进行筛选
①按照约束条件进行排序
②排序完,需要针对约束条件获取到最少获取的资产数量,目的是减少计算过程,省得浪费时间
1)按照资产规模上限,使用累计值,获取最低索引位置
2)按照2和3的资产规模限制获取最低的索引位置
3)当没有排序只有枚举值时候,使用枚举条件的第一个获取该字段大于0的最大索引和三倍规模上限获取最小的值. (3倍最大规模所在位置)



总次数TOTAL_TIME 的获取逻辑是什么,没看懂
glop_cha=0.00的作用是什么
跑这个代码对服务器的要求是怎么样的,内存,cpu

笔记

1
2
1. File_parameter存放各个文件的地址,包含线性规划限制条件Parameter.csv,推包结果集result.csv. 资产池文件Asset_IN_10w.csv
核心点就是Parameter文件