Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 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());
         }
     }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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);
        }