Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
    /// <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();
    }