Пример #1
0
        private static void TestRITEMap(PartitionData pd, long conID)
        {
            //Default SubSampling Settings
            SubSamplingAnalysisSetting subSamplingSettings = new SubSamplingAnalysisSetting(false, 1, 0, 250, "", "");

            PartitionDataAdpator PDataAdap    = new PartitionDataAdpator(pd, subSamplingSettings);
            ExposureDataAdaptor  expData      = PDataAdap.GetExposureAdaptor(conID);
            ISubPerilConfig      subperilInfo = new RMSSubPerilConfig();

            RITEmapper1 mapper = new RITEmapper1(expData, new RAPSettings(new HashSet <string> {
                "EQ"
            }), subperilInfo);
        }
Пример #2
0
        private static void TestGULossVector(PartitionData pd, long conID)
        {
            //Default SubSampling Settings
            SubSamplingAnalysisSetting subSamplingSettings = new SubSamplingAnalysisSetting(false, 1, 0, 250, "", "");

            PartitionDataAdpator PDataAdap    = new PartitionDataAdpator(pd, subSamplingSettings);
            ExposureDataAdaptor  expData      = PDataAdap.GetExposureAdaptor(conID);
            ISubPerilConfig      subperilInfo = new RMSSubPerilConfig();

            IRITEindexMapper mapper = new RITEmapper1(expData, new RAPSettings(new HashSet <string> {
                "EQ"
            }), subperilInfo);
            HashSet <String> subperils = new HashSet <string> {
                "EQ", "WS"
            };


            VectorGUInputGeneratorFactory vectorgeneratorFactory = new VectorGUInputGeneratorFactory(pd, new HashSet <string> {
                "EQ"
            }, TimeStyle.ConstantTimeStamps, LossStyle.GroundUp, true, subSamplingSettings);
            VectorGUInputGenerator ReferenceEventGen = vectorgeneratorFactory.GetGeneratorForContract(conID);

            IVectorEvent Event = ReferenceEventGen.GenerateRITELoss(1);
        }
Пример #3
0
        GraphOfNodes getGraphInfo()
        {
            //string filepath = @"D:\Work\Sample-Protobuffs\Franchise-Perrisk\test\rites_batch0.dat";
            string filepath = @"D:\Work\Sample-Protobuffs\jpty_case.dat";

            PartitionData        PD           = Deserialize(filepath);
            PartitionDataAdpator PDataAdaptor = new PartitionDataAdpator(PD);

            ReferencePrototype refprototype = new ReferencePrototype(PD);
            //long contId = 11324656;
            long contId = 42586728;

            //long contId = 11331;
            refprototype.ReferencePrepare(GraphType.Auto);

            ExposureDataAdaptor expData = PDataAdaptor.GetExposureAdaptor(contId);


            GraphInfo    graphInfo  = GetGraph(GraphType.Auto, expData, new GraphBuildCache(PDataAdaptor));
            GraphOfNodes graphNodes = (GraphOfNodes)graphInfo.Graph;

            graphNodes.AssignLevelToNode();
            return(graphNodes);
        }
Пример #4
0
        public static void TestReferenceSpeed(GraphType type, PartitionData PD, int conIndex, COLCollection COLSet)
        {
            RAPSettings settings = new RAPSettings(COLSet.GetSubperils());

            //Default SubSampling Settings
            SubSamplingAnalysisSetting subSamplingSettings = new SubSamplingAnalysisSetting(false, 1, 0, 250, "", "");

            //NGFMPrototype NGFM = new NGFMPrototype(PD);
            ReferencePrototype Reference = new ReferencePrototype(PD, settings, subSamplingSettings);

            Reference.ReferencePrepare(GraphType.Auto);

            NGFMPrototype NGFM = new NGFMPrototype();

            NGFM.Prepare(PD);  //NGFM result is cached, so create another object for each event

            double    MicroSecondTicks = Stopwatch.Frequency / 1000000.0;
            Stopwatch stopwatch        = new Stopwatch();

            stopwatch.Start();
            NGFM.Prepare(PD);  //NGFM result is cached, so create another object for each event
            stopwatch.Stop();
            double NGFMGraphTime = Convert.ToDouble(stopwatch.ElapsedTicks) / MicroSecondTicks;

            PartitionDataAdpator PDataAdap = new PartitionDataAdpator(PD, subSamplingSettings);
            ExposureDataAdaptor  expData   = PDataAdap.GetExposureAdaptor(conIndex);

            GUInputGeneratorFactory generatorFactory = new GUInputGeneratorFactory(PD, COLSet, subSamplingSettings, TimeStyle.ConstantTimeStamps, LossStyle.DamagaeRatio);
            GUInputGenerator        NGFMEventGen     = generatorFactory.GetGeneratorForContract(conIndex);

            VectorGUInputGeneratorFactory vectorgeneratorFactory = new VectorGUInputGeneratorFactory(PD, COLSet.GetSubperils(), TimeStyle.ConstantTimeStamps, LossStyle.GroundUp, true, subSamplingSettings);
            VectorGUInputGenerator        ReferenceEventGen      = vectorgeneratorFactory.GetGeneratorForContract(conIndex);


            int counter = 0;
            int total   = 0;

            Console.WriteLine("State at: " + DateTime.Now.ToString("h:mm:ss tt"));
            //NGFMPrototype NGFM = new NGFMPrototype(PD);
            for (int i = 1; i < 100; i += 1)
            {
                Dictionary <string, Dictionary <int, Dictionary <long, Tuple <double, uint, List <float> > > > > NGFMguLoss;
                //Dictionary<string, Dictionary<int, Dictionary<long, Tuple<double, uint, List<float>>>>> RefguLoss;
                if (NGFMEventGen.GenerateRITELoss(i))
                {
                    NGFMguLoss = NGFMEventGen.GULosses;
                }
                else
                {
                    throw new InvalidOperationException("Cannot get ground-up loss for event: " + i);
                }

                IVectorEvent RefguLoss = ReferenceEventGen.GenerateRITELoss(i);

                stopwatch = new Stopwatch();

                stopwatch.Start();
                double ReferencePayout = Reference.Execute(conIndex, type, RefguLoss).TotalPayout;
                stopwatch.Stop();
                double ReferenceTime = Convert.ToDouble(stopwatch.ElapsedTicks) / MicroSecondTicks;

                stopwatch.Reset();
                stopwatch.Start();
                double NGFMpayout = 0;
                //double NGFMpayout = NGFM.ExecuteFM(NGFMguLoss)[conIndex];
                RMS.ContractObjectModel.ResultPosition result = NGFM.ProcessEvent(i, NGFMguLoss, true, 1, new long[] { conIndex })[conIndex];
                NGFMpayout = result.PayOut;
                stopwatch.Stop();
                double NGFMTime = Convert.ToDouble(stopwatch.ElapsedTicks) / MicroSecondTicks;

                double diff = NGFMTime - ReferenceTime;

                Console.WriteLine("Event ID: " + i + " || " + "NGFM: " + NGFMTime + " || " + "Reference: " + ReferenceTime + " || " + diff);
            }

            Console.WriteLine("total event = " + total);
            Console.WriteLine("NGFM Graph Building Time = " + NGFMGraphTime);
            Console.WriteLine("End at: " + DateTime.Now.ToString("h:mm:ss tt"));
            Console.ReadLine();
        }
Пример #5
0
        public static void TestReference(GraphType type, PartitionData PD, int conID, COLCollection COLSet)
        {
            RAPSettings settings = new RAPSettings(COLSet.GetSubperils());

            //Default SubSampling Settings
            SubSamplingAnalysisSetting subSamplingSettings = new SubSamplingAnalysisSetting(false, 1, 0, 250, "", "");

            //NGFMPrototype NGFM = new NGFMPrototype(PD);
            ReferencePrototype Reference = new ReferencePrototype(PD, settings, subSamplingSettings);

            Reference.ReferencePrepare(GraphType.Auto);

            NGFMPrototype NGFM = new NGFMPrototype();

            NGFM.Prepare(PD);  //NGFM result is cached, so create another object for each event

            PartitionDataAdpator PDataAdap = new PartitionDataAdpator(PD, subSamplingSettings);
            ExposureDataAdaptor  expData   = PDataAdap.GetExposureAdaptor(conID);

            GUInputGeneratorFactory generatorFactory = new GUInputGeneratorFactory(PD, COLSet, subSamplingSettings, TimeStyle.RandomTimeStamps, LossStyle.DamagaeRatio);
            GUInputGenerator        NGFMEventGen     = generatorFactory.GetGeneratorForContract(conID);

            GUInputGenerator ReferenceEventGen = generatorFactory.GetGeneratorForContract(conID);


            int counter = 0;
            int total   = 0;

            Console.WriteLine("State at: " + DateTime.Now.ToString("h:mm:ss tt"));
            //NGFMPrototype NGFM = new NGFMPrototype(PD);
            for (int i = 247; i < 248; i += 1)
            {
                Dictionary <string, Dictionary <int, Dictionary <long, Tuple <double, uint, List <float> > > > > NGFMguLoss;
                Dictionary <string, Dictionary <int, Dictionary <long, Tuple <double, uint, List <float> > > > > RefguLoss;
                if (NGFMEventGen.GenerateRITELoss(i))
                {
                    NGFMguLoss = NGFMEventGen.GULosses;
                }
                else
                {
                    throw new InvalidOperationException("Cannot get ground-up loss for event: " + i);
                }
                if (ReferenceEventGen.GenerateRITELoss(i))
                {
                    RefguLoss = ReferenceEventGen.GULosses;
                }
                else
                {
                    throw new InvalidOperationException("Cannot get ground-up loss for event: " + i);
                }

                //Contract ID 11236672 hard coded.. 11324656
                double ReferencePayout = Reference.Execute(conID, type, RefguLoss).TotalPayout;
                //double ReferencePayout2 = Reference.Execute(conIndex, GraphType.FixedGraph1, RefguLoss);
                //double NGFMpayout = NGFM.ExecuteFM(NGFMguLoss)[11324656];
                RMS.ContractObjectModel.ResultPosition result = NGFM.ProcessEvent(i, NGFMguLoss, true, 1, new long[] { conID })[conID];
                double NGFMpayout = result.PayOut;
                //double NGFMpayout = 0;
                double diff = NGFMpayout - ReferencePayout;

                total += 1;
                if (Math.Abs(diff) > 0.1)
                {
                    counter += 1;
                    Console.WriteLine("Event ID: " + i + " || " + "NGFM: " + Math.Round(NGFMpayout, 5) + " || " + "Reference: " + Math.Round(ReferencePayout, 5) + " || " + Math.Round(diff, 5));
                }
                Console.WriteLine("Event ID: " + i + " || " + "NGFM: " + Math.Round(NGFMpayout, 2) + " || " + "Reference: " + Math.Round(ReferencePayout, 2) + " || " + Math.Round(diff, 2));
            }

            Console.WriteLine("Number of difference: " + counter);
            Console.WriteLine("total event = " + total);
            Console.WriteLine("End at: " + DateTime.Now.ToString("h:mm:ss tt"));
            Console.ReadLine();
        }
Пример #6
0
        private static void TestMatrixHDFM(PartitionData pd, long conID)
        {
            Stopwatch sw = new Stopwatch();

            //Default SubSampling Settings
            SubSamplingAnalysisSetting subSamplingSettings = new SubSamplingAnalysisSetting(false, 1, 0, 250, "", "");

            PartitionDataAdpator PDataAdap    = new PartitionDataAdpator(pd, subSamplingSettings);
            ExposureDataAdaptor  expData      = PDataAdap.GetExposureAdaptor(conID);
            ISubPerilConfig      subperilInfo = new RMSSubPerilConfig();

            HashSet <String> subperils = new HashSet <string> {
                "WI"
            };
            IRITEindexMapper mapper = new RITEmapper1(expData, new RAPSettings(subperils), subperilInfo);



            VectorGUInputGeneratorFactory vectorgeneratorFactory = new VectorGUInputGeneratorFactory(pd, subperils, TimeStyle.ConstantTimeStamps, LossStyle.GroundUp, true, subSamplingSettings);
            VectorGUInputGenerator        vectorGenerator        = vectorgeneratorFactory.GetGeneratorForContract(conID);


            FixedMatrixGraphJPTY JPTYGraph = new FixedMatrixGraphJPTY(expData);

            JPTYGraph.Initialize();

            MatrixGraphExecuter executer = new MatrixGraphExecuter(JPTYGraph);

            int    NumOfEvents = 100;
            double totalTime   = 0;

            for (int eventId = 6; eventId < NumOfEvents; eventId++)
            {
                IVectorEvent Event = vectorGenerator.GenerateRITELoss(eventId);

                sw.Start();
                float payout = (float)(executer.Run(Event).TotalPayOut);
                sw.Stop();
                long test = sw.ElapsedMilliseconds;

                //totalTime += sw.Elapsed.TotalMilliseconds;
            }

            double avgTime         = sw.Elapsed.TotalMilliseconds / NumOfEvents;
            double avgGraphState   = executer.IniGraphState.Elapsed.TotalMilliseconds / NumOfEvents;
            double avgAggregation  = executer.Aggregation.Elapsed.TotalMilliseconds / NumOfEvents;
            double avgInteraction  = executer.Interaction.Elapsed.TotalMilliseconds / NumOfEvents;
            double avgFillARite    = executer.AssignGUtoARite.Elapsed.TotalMilliseconds / NumOfEvents;
            double avgSumByPattern = executer.Aggregation1.Elapsed.TotalMilliseconds / NumOfEvents;
            double avgAllocation   = executer.Allocationtimer.Elapsed.TotalMilliseconds / NumOfEvents;


            Console.WriteLine("For " + NumOfEvents + " Events avg execution time is "
                              + avgTime + " Milliseconds");
            Console.WriteLine("For" + NumOfEvents + "avg GraphState Instantiation is "
                              + avgGraphState + "Milliseconds");
            Console.WriteLine("For" + NumOfEvents + "avg Aggregation is "
                              + avgAggregation + "Milliseconds");
            Console.WriteLine("For" + NumOfEvents + "avg Interaction is "
                              + avgInteraction + "Milliseconds");
            Console.WriteLine("For" + NumOfEvents + "avg Assigning GU to Arites is "
                              + avgFillARite + "Milliseconds");
            Console.WriteLine("For" + NumOfEvents + "avg SumArrayByPattern is "
                              + avgSumByPattern + "Milliseconds");
            Console.WriteLine("For" + NumOfEvents + "avg allocation time is "
                              + avgAllocation + "Milliseconds");

            Console.ReadLine();
        }