public void SetBasicSettings(InitializationParameters parameters) { SetSizeSettings(parameters); SetVisualizationSettings(parameters); SetParticleMovementSettings(parameters); SetCostStorageSettings(parameters); }
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(); } }
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(); } }
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; }
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(); }
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(); }
public void SetCentralizedPositions(InitializationParameters parameters) { parameters.ParticleGenerator = new CenterParticleGenerator(new Random(0)); }
public void SetParticleRightCornerDistribution(InitializationParameters parameters) { parameters.ParticleGenerator = new RightDownCornerParticleGenerator(); }
public void SetBallDistribution(InitializationParameters parameters, Vector3 ballCenter, double ballRadius, float maxSpeed) { parameters.ParticleGenerator = new BallParticleGenerator(ballCenter, ballRadius, new Random(0), maxSpeed); }
public void SetMatrixSettings(InitializationParameters retPar, int timesSorting, int cellSize) { SetMatrixSettings(retPar, timesSorting, 1, cellSize); }
public void SetSemiCentralizedPositions(InitializationParameters parameters) { throw new NotImplementedException(); }
public void SetSideSortSettings(InitializationParameters retPar, int initialElementsPerSide) { retPar.CoreFactory = new SideSortCoreFactory(); retPar.SorterFactory = new SideSorterFactory(); retPar.SectionFactory = new SideSorterSectionFactory(initialElementsPerSide); }
private void SetCostSettings(InitializationParameters particleSettings) { particleSettings.CostStorage = new FinalReviewCostStorage(); particleSettings.ComCostFactory = new CohesionComCalcFactory(); particleSettings.VisualizationParameters.CostName = "Costs"; }
public void SetStrictBoundarySettings(InitializationParameters retPar) { retPar.CoreFactory = new StrictBoundaryCoreFactory(); retPar.SectionFactory = new StrictBoundarySectionFactory(); retPar.SorterFactory = new StrictBoundarySorterFactory(); }
public void SetHelsimSettings(InitializationParameters retPar) { retPar.CoreFactory = new HelsimCoreFactory(); retPar.SectionFactory = new HelsimSectionFactory(); retPar.SorterFactory = new HelsimSorterFactory(); }
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); }
public void SetBcSettings(InitializationParameters retPar) { retPar.CoreFactory = new FtCoreFactory(); retPar.SorterFactory = new BcSorterFactory(); retPar.SectionFactory = new FtSectionFactory(0.1f * 0.1f, 2); }
public ExampleGame(InitializationParameters initializationParameters) : base(initializationParameters) { }