public void SetBasicSettings(InitializationParameters parameters)
 {
     SetSizeSettings(parameters);
     SetVisualizationSettings(parameters);
     SetParticleMovementSettings(parameters);
     SetCostStorageSettings(parameters);
 }
示例#2
0
        private void setSituationSettings(int particleSituation, InitializationParameters particleSettings, float maxSpeed)
        {
            //Explosion
            if (particleSituation == 0)
            {
                particleSettings.ParticleGenerator    = new BallParticleGenerator(new Vector3(0.5f), 0.01f, new Random(0), maxSpeed);
                particleSettings.ParticleMoverFactory = new BiasedParticleMoverFactory(new Random(0), maxSpeed, new Vector3(), 0f);
                particleSettings.VisualizationParameters.MainOutputPath += @"Explosion" + @"\";
            }

            //Sinusoidal movement
            if (particleSituation == 1)
            {
                particleSettings.ParticleGenerator    = new LocalParticleGenerator(new Random(0));
                particleSettings.ParticleMoverFactory = new WaveParticleMoverFactory(new Random(0), 5f);
                particleSettings.VisualizationParameters.MainOutputPath += @"Sinusoidal" + @"\";
            }
            //Smooth distribution
            if (particleSituation == 2)
            {
                particleSettings.ParticleGenerator    = new LocalParticleGenerator(new Random(0));
                particleSettings.ParticleMoverFactory = new BiasedParticleMoverFactory(new Random(0), maxSpeed, new Vector3(), 1f);
                particleSettings.VisualizationParameters.MainOutputPath += @"SmoothDistributed" + @"\";
            }
            if (particleSituation > 2)
            {
                throw new Exception();
            }
        }
示例#3
0
 private void setSimulationSettings(int simulationType, InitializationParameters particleSettings)
 {
     //NoSorting
     if (simulationType == 0)
     {
         simulationTypeFactory.SetHelsimSettings(particleSettings);
         particleSettings.VisualizationParameters.MainOutputPath += @"NoSorting\";
     }
     //StrictBoundary
     if (simulationType == 1)
     {
         simulationTypeFactory.SetStrictBoundarySettings(particleSettings);
         particleSettings.VisualizationParameters.MainOutputPath += @"StrictBoundary\";
     }
     //Matrix 1,3,6
     if (simulationType >= 2 && simulationType <= 4)
     {
         int timesSorting = new List <int> {
             1, 3, 6
         }[simulationType - 2];
         simulationTypeFactory.SetMatrixSettings(particleSettings, timesSorting, 6);
         particleSettings.VisualizationParameters.MainOutputPath += @"MatrixSort" + timesSorting + @"\";
     }
     if (simulationType >= 5)
     {
         throw new NotImplementedException();
     }
 }
示例#4
0
 public void SetMatrixSettings(InitializationParameters retPar, int timesSorting, int perTimeSorting, int cellSize)
 {
     retPar.CoreFactory      = new MatrixSortCoreFactory();
     retPar.SectionFactory   = new MatrixSortSectionFactory(cellSize);
     retPar.SorterFactory    = new MatrixSorterFactory(timesSorting, perTimeSorting);
     retPar.ParticlesPerCell = cellSize * cellSize * cellSize;
 }
示例#5
0
 public void SetKMeansSettings(InitializationParameters retPar)
 {
     retPar.CoreFactory    = new KMeansCoreFactory();
     retPar.SectionFactory = new KMeansSectionFactory(0.0f, 0.8f, 1f);
     retPar.SorterFactory  = new SingleDimKMeansSorterFactory(0.1f);
     retPar.VisualizationParameters.ParticleSubVisualizers.Add(
         new NtSectionCenterVisualizer(retPar.VisualizationParameters.PictureCoordinateConverter));
 }
 public void SetParticleMovementSettings(InitializationParameters parameters)
 {
     parameters.TimeStep             = 0.002f;
     parameters.TotalSteps           = 400;
     parameters.Randi                = new Random(0);
     parameters.ParticleGenerator    = new CenterParticleGenerator(new Random(0));
     parameters.ParticleMoverFactory = new GravityPointMoverFactory(new Random(0), 0.2f, 0.5f);
 }
 public void SetCostStorageSettings(InitializationParameters parameters)
 {
     parameters.CostStorage = new AllCostReviewer(
         new MaxCostStorage(dic => dic.Keys.Contains(ParticleMovementCost.GetParticleMovementCostType()) ?
                            dic[ParticleMovementCost.GetParticleMovementCostType()] :
                            0d));
     parameters.VisualizationParameters.CostName = "MaxCost";
     parameters.ComCostFactory = new SimpleComCostFactory();
 }
示例#8
0
 public void SetGNeighbourSettings(InitializationParameters retPar)
 {
     retPar.CoreFactory   = new GNeighbourCoreFactory();
     retPar.SorterFactory = new GNeighbourSorterFactory(0.1f);
     if (!retPar.VisualizationParameters.ParticleSubVisualizers.Any(o => o is NtSectionCenterVisualizer))
     {
         retPar.VisualizationParameters.ParticleSubVisualizers.Add(
             new NtSectionCenterVisualizer(retPar.VisualizationParameters.PictureCoordinateConverter));
     }
     retPar.SectionFactory = new GNeighbourSectionFactory(0.1f);
 }
 private static void SetSizeSettings(InitializationParameters retPar)
 {
     retPar.XCores           = 4;
     retPar.XSections        = 1;
     retPar.YCores           = 1;
     retPar.YSections        = 1;
     retPar.ZCores           = 4;
     retPar.ZSections        = 1;
     retPar.TotalSteps       = 300;
     retPar.ParticlesPerCell = 16 * 216;
 }
 public void SetSizeSettings(InitializationParameters parameters)
 {
     parameters.ParticlesPerCell         = 216;
     parameters.SectionSize              = new Vector3(1f, 1f, 1f);
     parameters.XCores                   = 5;
     parameters.YCores                   = 1;
     parameters.ZCores                   = 5;
     parameters.XSections                = 1;
     parameters.YSections                = 1;
     parameters.ZSections                = 1;
     parameters.CellsPerSectionSingleDim = 16;
 }
        public InitializationParameters InitializationParameters(int coreSize)
        {
            var retPar = new InitializationParameters();

            SetBasicSettings(retPar);
            retPar.TotalSteps = 800;
            retPar.XCores     = coreSize;
            retPar.ParticleReductionFactor = 1;
            retPar.ZCores = coreSize;
            retPar.VisualizationParameters.SnapTime = 2;

            retPar.ParticleGenerator = new LocalParticleGenerator(new Random(0));
            retPar.VisualizationParameters.CostName = "UninitializedCostName";
            retPar.VisualizationParameters.ParticleVisualizationSize = new Point(400, 400);
            return(retPar);
        }
 public void Simulate(InitializationParameters parameters)
 {
     ExtractParameters(parameters);
     for (var i = 0; i < steps; i++)
     {
         if (i % 5 == 0)
         {
             Console.Out.WriteLine("\r\n\r\nSTARTING STEP: " + i + "\r\n\r\n");
         }
         mover.MoveParticles(structure, stepSize, i);
         sorter.Sort(structure, i);
         fieldCalculator.CalculateField(structure, i);
         stepVisualizer.VisualizeStep(structure, i);
     }
     finalVisualizer.Visualize(steps - 1);
 }
        private void ExtractParameters(InitializationParameters parameters)
        {
            storage = parameters.CostStorage;
            var com = parameters.ComCostFactory.GetCalculator(storage,
                                                              parameters.CellsPerSectionSingleDim, parameters.ParticleReductionFactor);

            fieldCalculator       = new FieldCalculator(com, new ConstSolveCostCalculator(storage));
            simulationInitializer = new SimulationInitializer(new Random(0), parameters.CoreFactory,
                                                              parameters.SectionFactory);
            var sortingCostCalculator = new SortingCostCalculator(parameters.ParticleReductionFactor, storage);

            sorter = parameters.SorterFactory.GetSorter(sortingCostCalculator);
            mover  =
                parameters.ParticleMoverFactory.GetIParticleMover(new MovementCostCalculator(storage,
                                                                                             parameters.ParticleReductionFactor));
            stepSize  = parameters.TimeStep;
            steps     = parameters.TotalSteps;
            structure = simulationInitializer.InitializeSimulation(mover, parameters);
            var visualizationBuilder = new VisualizationBuilder(parameters.VisualizationParameters);

            stepVisualizer  = visualizationBuilder.GetStepVisualizer(storage);
            finalVisualizer = visualizationBuilder.GetFinalVisualizer(storage);
        }
 public InitializationParameters SetHelsimCombinedEstimation(InitializationParameters retParameters)
 {
     retParameters.CostStorage =
         new MaxCostStorage((o =>
                             o[ParticleMovementCost.GetParticleMovementCostType()] +
                             (o.ContainsKey(ConstantSolvingCost.GetConstantSolvingCost())
                 ? o[ConstantSolvingCost.GetConstantSolvingCost()]
                 : 0) +
                             (o.ContainsKey(new SortingCostParticleSwap())
                 ? o[new SortingCostParticleSwap()]
                 : 0) +
                             (o.ContainsKey(new SortingCostParticleComparison())
                 ? o[new SortingCostParticleComparison()]
                 : 0) +
                             (o.ContainsKey(ParticleWpcCoresSectionCoreRole.GetParticleWpcCoresReceiveCost())
                 ? o[ParticleWpcCoresSectionCoreRole.GetParticleWpcCoresReceiveCost()]
                 : 0) +
                             (o.ContainsKey(ParticleWPCCoresHomeCoreRole.GetParticleWpcCoresSend())
                 ? o[ParticleWPCCoresHomeCoreRole.GetParticleWpcCoresSend()]
                 : 0)));
     retParameters.VisualizationParameters.CostName = "SetHelsimCombinedEstimation";
     retParameters.ComCostFactory = new SimpleComCostFactory();
     return(retParameters);
 }
 public void SetVisualizationSettings(InitializationParameters parameters)
 {
     parameters.VisualizationParameters = (new VisualizationSettingsFactory()).GetVisualizationParameters();
 }
示例#16
0
 public void SetCentralizedPositions(InitializationParameters parameters)
 {
     parameters.ParticleGenerator = new CenterParticleGenerator(new Random(0));
 }
示例#17
0
 public void SetParticleRightCornerDistribution(InitializationParameters parameters)
 {
     parameters.ParticleGenerator = new RightDownCornerParticleGenerator();
 }
示例#18
0
 public void SetBallDistribution(InitializationParameters parameters, Vector3 ballCenter, double ballRadius, float maxSpeed)
 {
     parameters.ParticleGenerator = new BallParticleGenerator(ballCenter, ballRadius, new Random(0), maxSpeed);
 }
示例#19
0
 public void SetMatrixSettings(InitializationParameters retPar, int timesSorting, int cellSize)
 {
     SetMatrixSettings(retPar, timesSorting, 1, cellSize);
 }
示例#20
0
 public void SetSemiCentralizedPositions(InitializationParameters parameters)
 {
     throw new NotImplementedException();
 }
示例#21
0
 public void SetSideSortSettings(InitializationParameters retPar, int initialElementsPerSide)
 {
     retPar.CoreFactory    = new SideSortCoreFactory();
     retPar.SorterFactory  = new SideSorterFactory();
     retPar.SectionFactory = new SideSorterSectionFactory(initialElementsPerSide);
 }
示例#22
0
 private void SetCostSettings(InitializationParameters particleSettings)
 {
     particleSettings.CostStorage    = new FinalReviewCostStorage();
     particleSettings.ComCostFactory = new CohesionComCalcFactory();
     particleSettings.VisualizationParameters.CostName = "Costs";
 }
示例#23
0
 public void SetStrictBoundarySettings(InitializationParameters retPar)
 {
     retPar.CoreFactory    = new StrictBoundaryCoreFactory();
     retPar.SectionFactory = new StrictBoundarySectionFactory();
     retPar.SorterFactory  = new StrictBoundarySorterFactory();
 }
示例#24
0
 public void SetHelsimSettings(InitializationParameters retPar)
 {
     retPar.CoreFactory    = new HelsimCoreFactory();
     retPar.SectionFactory = new HelsimSectionFactory();
     retPar.SorterFactory  = new HelsimSorterFactory();
 }
示例#25
0
 public void SetDistributedPositions(InitializationParameters parameters)
 {
     parameters.ParticleGenerator = new LocalParticleGenerator(new Random(0));
 }
 public InitializationParameters SetFinalCombinedEstimation(InitializationParameters parameters)
 {
     parameters.CostStorage    = new CostStorage();
     parameters.ComCostFactory = new CohesionComCalcFactory();
     return(parameters);
 }
示例#27
0
 public void SetBcSettings(InitializationParameters retPar)
 {
     retPar.CoreFactory    = new FtCoreFactory();
     retPar.SorterFactory  = new BcSorterFactory();
     retPar.SectionFactory = new FtSectionFactory(0.1f * 0.1f, 2);
 }
示例#28
0
 public ExampleGame(InitializationParameters initializationParameters)
     : base(initializationParameters)
 {
 }