public static void EvaluateContract(List <struContract> resultDataset) { //POS:标准数据集中该字段不为空的记录数 //ACT:选手提交结果中该字段不为空的记录数 //COR:主键匹配 且 提交字段值=正确字段值 且 均不为空 //公告ID var F1_ID = new EvaluateItem("公告ID"); var F1_JiaFang = new EvaluateItem("甲方"); var F1_YiFang = new EvaluateItem("乙方"); var F1_ProjectName = new EvaluateItem("项目名称"); var F1_ContractName = new EvaluateItem("合同名称"); var F1_ContractMoneyUpLimit = new EvaluateItem("金额上限"); var F1_ContractMoneyDownLimit = new EvaluateItem("金额下限"); var F1_UnionMember = new EvaluateItem("联合体成员"); foreach (var contract in TraningDataset.ContractList) { //POS:标准数据集中该字段不为空的记录数 if (!String.IsNullOrEmpty(contract.id)) { F1_ID.POS++; } if (!String.IsNullOrEmpty(contract.JiaFang)) { F1_JiaFang.POS++; } if (!String.IsNullOrEmpty(contract.YiFang)) { F1_YiFang.POS++; } if (!String.IsNullOrEmpty(contract.ProjectName)) { F1_ProjectName.POS++; } if (!String.IsNullOrEmpty(contract.ContractName)) { F1_ContractName.POS++; } if (!String.IsNullOrEmpty(contract.ContractMoneyUpLimit)) { F1_ContractMoneyUpLimit.POS++; } if (!String.IsNullOrEmpty(contract.ContractMoneyDownLimit)) { F1_ContractMoneyDownLimit.POS++; } if (!String.IsNullOrEmpty(contract.UnionMember)) { F1_UnionMember.POS++; } } foreach (var contract in resultDataset) { //ACT:选手提交结果中该字段不为空的记录数 if (!String.IsNullOrEmpty(contract.id)) { F1_ID.ACT++; } if (!String.IsNullOrEmpty(contract.JiaFang)) { F1_JiaFang.ACT++; } if (!String.IsNullOrEmpty(contract.YiFang)) { F1_YiFang.ACT++; } if (!String.IsNullOrEmpty(contract.ProjectName)) { F1_ProjectName.ACT++; } if (!String.IsNullOrEmpty(contract.ContractName)) { F1_ContractName.ACT++; } if (!String.IsNullOrEmpty(contract.ContractMoneyUpLimit)) { F1_ContractMoneyUpLimit.ACT++; } if (!String.IsNullOrEmpty(contract.ContractMoneyDownLimit)) { F1_ContractMoneyDownLimit.ACT++; } if (!String.IsNullOrEmpty(contract.UnionMember)) { F1_UnionMember.ACT++; } } foreach (var contract in TraningDataset.ContractList) { var key = contract.GetKey(); foreach (var contract_Result in resultDataset) { var key_Result = contract_Result.GetKey(); var IsKeyMatch = key.Equals(key_Result); if (IsKeyMatch) { //COR:主键匹配 且 提交字段值=正确字段值 且 均不为空 F1_ID.PutCORData(contract.id, contract_Result.id); F1_JiaFang.PutCORData(contract.JiaFang, contract_Result.JiaFang); F1_YiFang.PutCORData(contract.YiFang, contract_Result.YiFang); F1_ProjectName.PutCORData(contract.ProjectName, contract_Result.ProjectName); F1_ContractName.PutCORData(contract.ContractName, contract_Result.ContractName); F1_ContractMoneyUpLimit.PutCORData(contract.ContractMoneyUpLimit, contract_Result.ContractMoneyUpLimit); F1_ContractMoneyDownLimit.PutCORData(contract.ContractMoneyDownLimit, contract_Result.ContractMoneyDownLimit); F1_UnionMember.PutCORData(contract.UnionMember, contract_Result.UnionMember); break; //防止测试集出现多条主键重复的记录 } } } //单项测评 foreach (var contract in TraningDataset.ContractList) { foreach (var contract_Result in resultDataset) { var IsIdMatch = contract.id.Equals(contract_Result.id); if (IsIdMatch) { //这里假定数据都是ID为主键一对一的情况 //数据一对多的时候,这里的逻辑是不正确的 F1_ID.PutItemData(contract.id, contract_Result.id); F1_JiaFang.PutItemData(contract.JiaFang, contract_Result.JiaFang); F1_YiFang.PutItemData(contract.YiFang, contract_Result.YiFang); F1_ProjectName.PutItemData(contract.ProjectName, contract_Result.ProjectName); F1_ContractName.PutItemData(contract.ContractName, contract_Result.ContractName); F1_ContractMoneyUpLimit.PutItemData(contract.ContractMoneyUpLimit, contract_Result.ContractMoneyUpLimit); F1_ContractMoneyDownLimit.PutItemData(contract.ContractMoneyDownLimit, contract_Result.ContractMoneyDownLimit); F1_UnionMember.PutItemData(contract.UnionMember, contract_Result.UnionMember); break; } } } var score = (F1_ID.F1 + F1_JiaFang.F1 + F1_YiFang.F1 + F1_ProjectName.F1 + F1_ContractName.F1 + F1_ContractMoneyUpLimit.F1 + F1_ContractMoneyDownLimit.F1 + F1_UnionMember.F1) / 8; Program.Score.WriteLine("合同score:" + score); Program.Score.Flush(); }
/// <summary> /// 资产重组结果测评 /// </summary> /// <param name="result"></param> public static void EvaluateReorganization(List <ReorganizationRec> resultDataset) { var F1_ID = new EvaluateItem("公告ID"); var F1_Target = new EvaluateItem("交易标的"); var F1_TargetCompany = new EvaluateItem("标的公司"); F1_TargetCompany.IsOptional = true; var F1_TradeCompany = new EvaluateItem("交易对方"); F1_TradeCompany.IsList = true; var F1_Price = new EvaluateItem("交易标的作价"); var F1_EvaluateMethod = new EvaluateItem("评估方法"); F1_EvaluateMethod.IsList = true; foreach (var contract in TraningDataset.ReorganizationList) { //POS:标准数据集中该字段不为空的记录数 if (!String.IsNullOrEmpty(contract.Id)) { F1_ID.POS++; } if (!String.IsNullOrEmpty(contract.Target)) { F1_Target.POS++; } if (!String.IsNullOrEmpty(contract.TargetCompany)) { F1_TargetCompany.POS++; } if (!String.IsNullOrEmpty(contract.TradeCompany)) { F1_TradeCompany.POS++; } if (!String.IsNullOrEmpty(contract.Price)) { F1_Price.POS++; } if (!String.IsNullOrEmpty(contract.EvaluateMethod)) { F1_EvaluateMethod.POS++; } } foreach (var contract in resultDataset) { //ACT:选手提交结果中该字段不为空的记录数 if (!String.IsNullOrEmpty(contract.Id)) { F1_ID.ACT++; } if (!String.IsNullOrEmpty(contract.Target)) { F1_Target.ACT++; } if (!String.IsNullOrEmpty(contract.TargetCompany)) { F1_TargetCompany.ACT++; } if (!String.IsNullOrEmpty(contract.TradeCompany)) { F1_TradeCompany.ACT++; } if (!String.IsNullOrEmpty(contract.Price)) { F1_Price.ACT++; } if (!String.IsNullOrEmpty(contract.EvaluateMethod)) { F1_EvaluateMethod.ACT++; } } foreach (var reorg in TraningDataset.ReorganizationList) { var key = reorg.GetKey(); foreach (var reorg_Result in resultDataset) { var keys_Result = reorg_Result.GetKey().Split("|"); var IsKeyMatch = false; if (keys_Result.Length == 1) { IsKeyMatch = key.Equals(keys_Result[0]); } else { IsKeyMatch = key.Equals(keys_Result[0]) || key.Equals(keys_Result[1]); } if (IsKeyMatch) { //COR:主键匹配 且 提交字段值=正确字段值 且 均不为空 F1_ID.PutCORData(reorg.Id, reorg_Result.Id); F1_Target.PutCORData(reorg.Target, reorg_Result.Target); F1_TargetCompany.PutCORData(reorg.TargetCompany, reorg_Result.TargetCompany); F1_TradeCompany.PutCORData(reorg.TradeCompany, reorg_Result.TradeCompany); F1_Price.PutCORData(reorg.Price, reorg_Result.Price); F1_EvaluateMethod.PutCORData(reorg.EvaluateMethod, reorg_Result.EvaluateMethod); break; //防止测试集出现多条主键重复的记录 } } } //单项测评 foreach (var reorg in TraningDataset.ReorganizationList) { foreach (var reorg_Result in resultDataset) { var IsIdMatch = reorg.Id.Equals(reorg_Result.Id); if (IsIdMatch) { //COR:主键匹配 且 提交字段值=正确字段值 且 均不为空 F1_ID.PutItemData(reorg.Id, reorg_Result.Id); F1_Target.PutItemData(reorg.Target, reorg_Result.Target); F1_TargetCompany.PutItemData(reorg.TargetCompany, reorg_Result.TargetCompany); F1_TradeCompany.PutItemData(reorg.TradeCompany, reorg_Result.TradeCompany); F1_Price.PutItemData(reorg.Price, reorg_Result.Price); F1_EvaluateMethod.PutItemData(reorg.EvaluateMethod, reorg_Result.EvaluateMethod); break; //防止测试集出现多条主键重复的记录 } } } var score = (F1_ID.F1 + F1_Target.F1 + F1_TargetCompany.F1 + F1_TradeCompany.F1 + F1_Price.F1 + F1_EvaluateMethod.F1) / 6; Program.Score.WriteLine("资产重组分数:" + score); Program.Score.Flush(); }