public void causalInference_EntropyMinimize_Trivial4() { Linearizer linearizer = new Linearizer(); linearizer.random = new Random(42); float terminationPropability = 0.1f; NonanytimeEntropyMinimizer entropyMinimizer = new NonanytimeEntropyMinimizer(linearizer, terminationPropability); entropyMinimizer.random = new Random(42); CausalSetSystemBlock testCausalBlock = new CausalSetSystemBlock(); // fill it testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[0].globalIndex = 0; testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[1].globalIndex = 1; testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[2].globalIndex = 2; // 1 -> 0 // 1 -> 2 testCausalBlock.nodes[1].next = new CausalIndirectionIndex[] { new CausalIndirectionIndex(0) }; testCausalBlock.nodes[2].next = new CausalIndirectionIndex[] { new CausalIndirectionIndex(0) }; entropyMinimizer.entry(testCausalBlock); entropyMinimizer.anytimeInvoke(); long energyOfLinearization; GlobalLinearization linearization = entropyMinimizer.getBestGlobalLinearizationAndEnergy(out energyOfLinearization); Assert.AreEqual(energyOfLinearization, 3); Assert.IsTrue(linearization.linearization[2] == 0); if (linearization.linearization[1] == 1) { Assert.IsTrue(linearization.linearization[0] == 2); } else if (linearization.linearization[1] == 2) { Assert.IsTrue(linearization.linearization[0] == 1); } else { throw new Exception("first element must be 1 or 2!"); } entropyMinimizer.finish(); }
public override void Run() { try { ControlInput.IsOpenLoop = true; Settings settings = Settings.GetInstance(); settings.GetDefaultSettings(); logger.Info($"Ligral (R) Simulation Engine version {Program.Version}.\nCopyright (C) Ligral Tech. All rights reserved."); PluginLoader pluginLoader = new PluginLoader(); pluginLoader.Load(); if (IsJsonFile is bool isJsonFile && isJsonFile) { JsonLoader jsonLoader = new JsonLoader(); jsonLoader.Load(FileName); } else { Interpreter interpreter = Interpreter.GetInstance(FileName); interpreter.Interpret(); } Inspector inspector = new Inspector(); List <Model> routine = inspector.Inspect(ModelManager.ModelPool); string problemName = Path.GetFileNameWithoutExtension(FileName); Problem problem = new Problem(problemName, routine); Linearizer linearizer = new Linearizer(); if (settings.LinearizerConfiguration != null) { linearizer.Configure(settings.LinearizerConfiguration); } else { logger.Warn("No linearization configuration is set. The model will be linearized at zero."); } settings.ApplySetting(); linearizer.Linearize(problem); if (OutputFile is string outputFile) { try { File.WriteAllText(outputFile, linearizer.ToString()); } catch (Exception e) { logger.Prompt(linearizer.ToString()); throw logger.Error(new LigralException($"Cannot write to {outputFile}, got error: {e.Message}")); } } else { logger.Prompt(linearizer.ToString()); } }
public async Task When_linearizing_then_not_throws() { var store = await GetEventStore(); var streamId = SequentialGuid.NewGuid(); var stream = new EventStream(streamId, new IEvent[] { new FakeEvent() }); await store.SaveChangesAsync(streamId, ExpectedVersion.NoStream, stream); var exception = await Record.ExceptionAsync( async() => { using (var linearizer = new Linearizer(ConnectionString, new NullLogger(), TimeSpan.FromMilliseconds(50), TimeSpan.FromSeconds(1))) { await linearizer.StartOnce().NotOnCapturedContext(); } }).NotOnCapturedContext(); Assert.Null(exception); }
// Token: 0x06000625 RID: 1573 RVA: 0x000251D8 File Offset: 0x000233D8 private List <DiscoveryPluginResultBase> Linearize(IEnumerable <DiscoveryPluginResultBase> input) { List <DiscoveryPluginResultBase> list = Linearizer.Linearize <DiscoveryPluginResultBase>((from item in input select Linearizer.CreateInputItem <DiscoveryPluginResultBase>(item, item.GetPrerequisites(input))).ToArray <Linearizer.Input <DiscoveryPluginResultBase> >(), true, true); IEnumerable <DiscoveryPluginResultBase> collection = from item in list where item is CoreDiscoveryPluginResult && item.PluginTypeName == "SolarWinds.Orion.Core.DiscoveryPlugin.CoreDiscoveryPlugin" select item; List <DiscoveryPluginResultBase> list2 = new List <DiscoveryPluginResultBase>(); list2.AddRange(collection); for (int i = 0; i < list.Count; i++) { DiscoveryPluginResultBase discoveryPluginResultBase = list[i]; if (!(discoveryPluginResultBase is CoreDiscoveryPluginResult) || !(discoveryPluginResultBase.PluginTypeName == "SolarWinds.Orion.Core.DiscoveryPlugin.CoreDiscoveryPlugin")) { list2.Add(discoveryPluginResultBase); } } return(list2); }
public void CausalInference_EntropyMinimize_Tunnel0() { Linearizer linearizer = new Linearizer(); linearizer.random = new Random(42); float terminationPropability = 0.1f; NonanytimeEntropyMinimizer entropyMinimizer = new NonanytimeEntropyMinimizer(linearizer, terminationPropability); entropyMinimizer.random = new Random(42); CausalSetSystemBlock testCausalBlock = new CausalSetSystemBlock(); // fill it testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[0].globalIndex = 0; testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[1].globalIndex = 1; testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[2].globalIndex = 2; testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[3].globalIndex = 3; testCausalBlock.nodes.Add(new CausalSetNode()); testCausalBlock.indirectionArray.Add(testCausalBlock.getNewIndirectionNumber()); testCausalBlock.nodes[4].globalIndex = 4; // 2 -> 0 // 3 -> 4 // 3 -> 1 // 3 -> 0 // 0 -> 1 // 4 -> 1 testCausalBlock.nodes[2].next = new CausalIndirectionIndex[] { new CausalIndirectionIndex(0) }; testCausalBlock.nodes[3].next = new CausalIndirectionIndex[] { new CausalIndirectionIndex(4), new CausalIndirectionIndex(1), new CausalIndirectionIndex(0) }; testCausalBlock.nodes[0].next = new CausalIndirectionIndex[] { new CausalIndirectionIndex(1) }; testCausalBlock.nodes[4].next = new CausalIndirectionIndex[] { new CausalIndirectionIndex(1) }; entropyMinimizer.entry(testCausalBlock); entropyMinimizer.anytimeInvoke(); // target sequence with minimal energy is 2 3 0 4 1 long energyOfLinearization; GlobalLinearization linearization = entropyMinimizer.getBestGlobalLinearizationAndEnergy(out energyOfLinearization); Assert.AreEqual(energyOfLinearization, 11); Assert.IsTrue(linearization.linearization[0] == 2); Assert.IsTrue(linearization.linearization[1] == 3); Assert.IsTrue(linearization.linearization[2] == 0); Assert.IsTrue(linearization.linearization[3] == 4); Assert.IsTrue(linearization.linearization[4] == 1); entropyMinimizer.finish(); }
private List <DiscoveryPluginResultBase> Linearize( IEnumerable <DiscoveryPluginResultBase> input) { List <DiscoveryPluginResultBase> pluginResultBaseList1 = (List <DiscoveryPluginResultBase>)Linearizer.Linearize <DiscoveryPluginResultBase>((IEnumerable <Linearizer.Input <M0> >)input.Select <DiscoveryPluginResultBase, Linearizer.Input <DiscoveryPluginResultBase> >((Func <DiscoveryPluginResultBase, Linearizer.Input <DiscoveryPluginResultBase> >)(item => (Linearizer.Input <DiscoveryPluginResultBase>)Linearizer.CreateInputItem <DiscoveryPluginResultBase>((M0)item, (IEnumerable <M0>)item.GetPrerequisites(input)))).ToArray <Linearizer.Input <DiscoveryPluginResultBase> >(), true, true); IEnumerable <DiscoveryPluginResultBase> collection = ((IEnumerable <DiscoveryPluginResultBase>)pluginResultBaseList1).Where <DiscoveryPluginResultBase>((Func <DiscoveryPluginResultBase, bool>)(item => item is CoreDiscoveryPluginResult && item.get_PluginTypeName() == "SolarWinds.Orion.Core.DiscoveryPlugin.CoreDiscoveryPlugin")); List <DiscoveryPluginResultBase> pluginResultBaseList2 = new List <DiscoveryPluginResultBase>(); pluginResultBaseList2.AddRange(collection); for (int index = 0; index < pluginResultBaseList1.Count; ++index) { DiscoveryPluginResultBase pluginResultBase = pluginResultBaseList1[index]; if (!(pluginResultBase is CoreDiscoveryPluginResult) || !(pluginResultBase.get_PluginTypeName() == "SolarWinds.Orion.Core.DiscoveryPlugin.CoreDiscoveryPlugin")) { pluginResultBaseList2.Add(pluginResultBase); } } return(pluginResultBaseList2); }