Exemple #1
0
        public override IEnumerable <Command> CompGetGizmosExtra()
        {
            var com = new Command_Action
            {
                defaultLabel  = ResourceBank.CycleLayerLabel,
                defaultDesc   = ResourceBank.CycleLayerDesc,
                icon          = currentLayer == NetLayer.Lower ? ResourceBank.UILower : ResourceBank.UIUpper,
                activateSound = SoundDef.Named("DesignateMine"),
                hotKey        = KeyBindingDefOf.CommandColonistDraft,
                action        = () =>
                {
                    var oldLayer = currentLayer;
                    currentLayer = currentLayer == NetLayer.Lower ? NetLayer.Upper : NetLayer.Lower;
                    MoteThrower.ThrowText(parent.Position.ToVector3Shifted(),
                                          ResourceBank.CycleLayerMote.Translate(currentLayer.ToStringTranslated()));
                    AirNetManager.NotifyCompLayerChange(this, oldLayer);
                }
            };

            foreach (var current in base.CompGetGizmosExtra())
            {
                yield return(current);
            }

            yield return(com);
        }
    public void ShouldReturnCorrectGenotype()
    {
        NetVector v1 = NetVector.FromValues(new double[] { 1, 2, 3 });
        NetVector v2 = NetVector.FromValues(new double[] { 4, 5, 6 });
        NetVector v3 = NetVector.FromValues(new double[] { 7, 8, 9 });
        NetVector v4 = NetVector.FromValues(new double[] { 10, 11, 12 });

        NetVector v5 = NetVector.FromValues(new double[] { 13, 14, 15, 16, 17 });
        NetVector v6 = NetVector.FromValues(new double[] { 18, 19, 20, 21, 22 });

        Neuron n1 = new Neuron(v1, Config.ACTIVATION_FUNC);
        Neuron n2 = new Neuron(v2, Config.ACTIVATION_FUNC);
        Neuron n3 = new Neuron(v3, Config.ACTIVATION_FUNC);
        Neuron n4 = new Neuron(v4, Config.ACTIVATION_FUNC);

        Neuron n5 = new Neuron(v5, Config.ACTIVATION_FUNC);
        Neuron n6 = new Neuron(v6, Config.ACTIVATION_FUNC);

        NetLayer l1 = new NetLayer(new Neuron[] { n1, n2, n3, n4 });
        NetLayer l2 = new NetLayer(new Neuron[] { n5, n6 });

        NeuralNetwork        n  = new NeuralNetwork(new NetLayer[] { l1, l2 });
        List <NeuralNetwork> ln = new List <NeuralNetwork>();

        ln.Add(n);
        List <List <double> > genotypes = new NeuralNetworkConverter().ToGenotypes(ln);

        Assert.AreEqual(genotypes.Count, 1);

        TestUtils.AssertEqualDoubleList(
            new List <double>(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 }),
            genotypes[0]
            );
    }
    private NeuralNetwork ToNetwork(List <double> genotype, int[] topology)
    {
        int index = 0;

        NetLayer[] layers = new NetLayer[topology.Length - 1];

        for (int i = 1; i < topology.Length; ++i)
        {
            Neuron[] neurons = new Neuron[topology[i]];
            for (int j = 0; j < neurons.Length; ++j)
            {
                double[] weight = new double[topology[i - 1] + 1];
                for (int k = 0; k < weight.Length; ++k)
                {
                    weight[k] = genotype[index++];
                }

                neurons[j] = new Neuron(NetVector.FromValues(weight), Config.ACTIVATION_FUNC);
            }

            layers[i - 1] = new NetLayer(neurons);
        }

        return(new NeuralNetwork(layers));
    }
Exemple #4
0
        public AirNet(IEnumerable <CompAir> newNodes, NetLayer layer, CompAir root)
        {
            Layer = layer;
            var compAirs = newNodes.ToList();

            foreach (var current in compAirs)
            {
                RegisterNode(current);
                current.connectedNet = this;
            }

            checked
            {
                debugId = debugIdNext++;
            }
            this.root = root;

            var intake =
                compAirs.Where(s => s.GetType() == typeof(CompAirTrader))
                .Cast <CompAirTrader>()
                .ToList()
                .Find(
                    s =>
                    s.parent.def.defName == "RedistHeat_DuctIntake" ||
                    s.parent.def.defName == "RedistHeat_DuctCooler");

            if (intake == null || intake.netTemp == 999)
            {
                NetTemperature = GenTemperature.OutdoorTemp;
            }
            else
            {
                NetTemperature = intake.netTemp;
            }
        }
        public AirNet( IEnumerable< CompAir > newNodes, NetLayer layer, CompAir root )
        {
            Layer = layer;
            var compAirs = newNodes.ToList();

            foreach ( var current in compAirs )
            {
                RegisterNode( current );
                current.connectedNet = this;
            }

            checked
            {
                debugId = debugIdNext++;
            }
            this.root = root;

            var intake =
                compAirs.Where( s => s.GetType() == typeof ( CompAirTrader ) )
                        .Cast< CompAirTrader >()
                        .ToList()
                        .Find(
                            s =>
                                s.parent.def.defName == "RedistHeat_DuctIntake" ||
                                s.parent.def.defName == "RedistHeat_DuctCooler" );

            if ( intake == null || intake.netTemp == 999 )
            {
                NetTemperature = GenTemperature.OutdoorTemp;
            }
            else
            {
                NetTemperature = intake.netTemp;
            }
        }
        public static AirNet NetAt( IntVec3 pos, NetLayer layer )
        {
            if(!AirNetTicker.doneInit)
                AirNetTicker.Initialize();

            return netGrid[(int)layer][CellIndices.CellToIndex( pos )];
        }
Exemple #7
0
        public override IEnumerable <Gizmo> CompGetGizmosExtra()
        {
            foreach (var current in base.CompGetGizmosExtra())
            {
                yield return(current);
            }

            if (this.parent.Faction == Faction.OfPlayer)
            {
                Command_Action act = new Command_Action();

                act.defaultLabel  = ResourceBank.CycleLayerLabel;
                act.defaultDesc   = ResourceBank.CycleLayerDesc;
                act.icon          = currentLayer == NetLayer.Lower ? ResourceBank.UILower : ResourceBank.UIUpper;
                act.activateSound = SoundDef.Named("DesignateMine");
                act.hotKey        = KeyBindingDefOf.Command_ColonistDraft;
                act.action        = () =>
                {
                    var oldLayer = currentLayer;
                    currentLayer = currentLayer == NetLayer.Lower ? NetLayer.Upper : NetLayer.Lower;
                    MoteMaker.ThrowText(parent.Position.ToVector3Shifted(), parent.Map,
                                        ResourceBank.CycleLayerMote.Translate(currentLayer.ToStringTranslated())
                                        );
                    AirNetManager.NotifyCompLayerChange(this, oldLayer);
                };
                yield return(act);
            }
        }
 public Dijkstra(List<NetUser> netUserList, NetLayer.NetData _netData)
 {
     if (netUserList.Count < 3) throw new ArgumentOutOfRangeException("totalNodeCount " + netUserList.Count + "Expected a minimum of 3.");
     this.netUserList = netUserList;
     Hint = getConnectedNodesNetuSer;
     TraversalCost = getCostNetUser;
     TotalNodeCount = this.netUserList.Count;
     netData = _netData;
 }
        private static IEnumerable<CompAir> ContiguousAirBuildings( Building root, NetLayer layer )
        {
            closedSet.Clear();
            currentSet.Clear();
            openSet.Add( root );

            do
            {
                //Move all opened to closed
                foreach (var current in openSet)
                {
                    closedSet.Add( current );
                }

                var tempSet = currentSet;
                currentSet = openSet;
                openSet = tempSet;
                openSet.Clear();

                foreach (var things in currentSet.SelectMany( openBuilding =>
                                                                  GenAdj.CellsAdjacentCardinal( openBuilding )
                                                                        .Select( openCells => openCells.GetThingList() ) )
                    )
                {
                    //All adjacent things
                    foreach (var current in things)
                    {
                        var building = current as Building;
                        var compAir = building?.TryGetComp< CompAir >();

                        //No adjacent CompAir
                        if (compAir == null)
                        {
                            continue;
                        }
                        //CompAir is not on the same layer
                        if (!compAir.IsLayerOf( layer ))
                        {
                            continue;
                        }
                        //Already swept through
                        if (openSet.Contains( building ) ||
                            currentSet.Contains( building ) ||
                            closedSet.Contains( building ))
                        {
                            continue;
                        }

                        openSet.Add( building );
                        break;
                    }
                }
            } while (openSet.Count > 0);

            return from b in closedSet
                   select b.TryGetComp< CompAir >();
        }
Exemple #10
0
        public static AirNet NetAt(IntVec3 pos, NetLayer layer)
        {
            if (!AirNetTicker.doneInit)
            {
                AirNetTicker.Initialize();
            }

            return(netGrid[(int)layer][CellIndices.CellToIndex(pos)]);
        }
Exemple #11
0
        private static IEnumerable <CompAir> ContiguousAirBuildings(Building root, NetLayer layer, Map map)
        {
            closedSet.Clear();
            currentSet.Clear();
            openSet.Add(root);

            do
            {
                //Move all opened to closed
                foreach (var current in openSet)
                {
                    closedSet.Add(current);
                }

                var tempSet = currentSet;
                currentSet = openSet;
                openSet    = tempSet;
                openSet.Clear();

                foreach (var things in currentSet.SelectMany(openBuilding =>
                                                             GenAdj.CellsAdjacentCardinal(openBuilding)
                                                             .Select(openCells => openCells.GetThingList(map)))
                         )
                {
                    //All adjacent things
                    foreach (var current in things)
                    {
                        var building = current as Building;
                        var compAir  = building?.TryGetComp <CompAir>();

                        //No adjacent CompAir
                        if (compAir == null)
                        {
                            continue;
                        }
                        //CompAir is not on the same layer
                        if (!compAir.IsLayerOf(layer))
                        {
                            continue;
                        }
                        //Already swept through
                        if (openSet.Contains(building) ||
                            currentSet.Contains(building) ||
                            closedSet.Contains(building))
                        {
                            continue;
                        }

                        openSet.Add(building);
                        break;
                    }
                }
            } while (openSet.Count > 0);

            return(from b in closedSet
                   select b.TryGetComp <CompAir>());
        }
    public void ShouldReturnCorrectSizeAndInputsLength()
    {
        NetLayer netLayer = new NetLayer(10, 8, -5, 5, Config.ACTIVATION_FUNC);

        Assert.AreEqual(10, netLayer.Neurons.Length);

        for (int i = 0; i < netLayer.Neurons.Length; ++i)
        {
            Assert.AreEqual(9, netLayer.Neurons[i].WeightsVector.Values.Length);
        }
    }
        public static Building GetAirTransmitter( this IntVec3 loc, NetLayer layer )
        {
            foreach ( var current in Find.ThingGrid.ThingsListAt( loc ) )
            {
                var compAir = current.TryGetComp< CompAir >();
                if ( compAir == null )
                    continue;

                if ( compAir.IsLayerOf( layer ) )
                    return (Building) current;
            }
            return null;
        }
        public static void NotifyCompLayerChange(CompAir compAir, NetLayer oldLayer)
        {
            if (oldLayer == compAir.currentLayer)
            {
                Log.Error("RedistHeat: Tried to change " + compAir + "\'s layer to " + compAir.currentLayer +
                          ", which is not different!");
                return;
            }

            oldComps[(int)oldLayer].Add(compAir);
            newComps[(int)compAir.currentLayer].Add(compAir);

            AddToGraphicUpdateList(compAir);
        }
Exemple #15
0
        public AirNet(IEnumerable <CompAir> newNodes, NetLayer layer, CompAir root, Map map)
        {
            Layer   = layer;
            pushers = 0;
            pullers = 0;
            var compAirs = newNodes.ToList();

            foreach (var current in compAirs)
            {
                RegisterNode(current);
                current.connectedNet = this;

                /*if (current.GetType() == typeof(CompAirTrader))
                 * {
                 *  var units = ((CompAirTrader)current).Props.units;
                 *  if (units > 0)
                 *  {
                 *      pushers += units;
                 *  }
                 *  else
                 *  {
                 *      pullers += -units;
                 *  }
                 * }*/
            }

            checked
            {
                debugId = debugIdNext++;
            }
            this.root = root;

            var intake =
                compAirs.Where(s => s.GetType() == typeof(CompAirTrader))
                .Cast <CompAirTrader>()
                .ToList()
                .Find(
                    s =>
                    s.parent.def.defName == "RedistHeat_DuctIntake" ||
                    s.parent.def.defName == "RedistHeat_DuctCooler");

            if (intake == null || intake.netTemp == 999)
            {
                NetTemperature = map.mapTemperature.OutdoorTemp;
            }
            else
            {
                NetTemperature = intake.netTemp;
            }
        }
Exemple #16
0
        public static Building GetAirTransmitter(this IntVec3 loc, NetLayer layer)
        {
            foreach (var current in Find.ThingGrid.ThingsListAt(loc))
            {
                var compAir = current.TryGetComp <CompAir>();
                if (compAir == null)
                {
                    continue;
                }

                if (compAir.IsLayerOf(layer))
                {
                    return((Building)current);
                }
            }
            return(null);
        }
    public void ShouldReturnCorrectResponse()
    {
        NetVector v1 = NetVector.FromValues(new double[] { 1, 2, 3 });
        Neuron    n1 = new Neuron(v1, ActivationFunctions.Linear);

        NetVector v2 = NetVector.FromValues(new double[] { 4, 5, 6 });
        Neuron    n2 = new Neuron(v2, ActivationFunctions.Linear);

        NetLayer layer = new NetLayer(new Neuron[] { n1, n2 });

        NetVector v3 = NetVector.FromValues(new double[] { 7, 8 }); // -1 + 14 + 24 ; -4 + 35 + 48

        double[] r = layer.Response(v3).Values;

        Assert.AreEqual(2, r.Length);
        Assert.AreEqual(37, r[0], 0.01);
        Assert.AreEqual(79, r[1], 0.01);
    }
        private static Building GetAirNodeAt(IntVec3 loc, NetLayer layer)
        {
            var things = Find.ThingGrid.ThingsListAt(loc);

            foreach (var current in things)
            {
                var compAir = current.TryGetComp <CompAir>();
                if (compAir == null)
                {
                    continue;
                }

                if (compAir.IsLayerOf(layer))
                {
                    return((Building)current);
                }
            }
            return(null);
        }
Exemple #19
0
        // network
        public static NetLayer[] getNetwork(int[] layers, int inputs)
        {
            var num     = inputs;
            var network = new NetLayer[layers.Length];

            for (int i = 0; i < layers.Length; i++)
            {
                network[i] = new NetLayer {
                    Layer = new Neuron[layers[i]]
                };
                for (int j = 0; j < layers[i]; j++)
                {
                    network[i].Layer[j] = new Neuron {
                        Delta = 0.0f, Output = 0.0f, Weights = (randomInitArray(new double[num + 1]))
                    };
                }
                num = layers[i];
            }

            return(network);
        }
        private void OnValidate()
        {
            if (layers.Count < 2)
            {
                for (int i = 0; i <= 2 - layers.Count; i++)
                {
                    layers.Add(new NetLayer {
                        neurons = 1, func = (layers.Count == 1 ? ActivationType.Sigmoid : ActivationType.LeakyReLU)
                    });
                }
            }

            if (layers[0].func != ActivationType.Identity)
            {
                layers[0] = new NetLayer {
                    neurons = layers[0].neurons, func = ActivationType.Identity
                }
            }
            ;
        }
    }
Exemple #21
0
        //protected override CreateParams CreateParams
        //{
        //    get
        //    {
        //        var handleParam = base.CreateParams;
        //        handleParam.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
        //        return handleParam;
        //    }
        //}

        public MapCtl()
        {
            InitializeComponent();

            var center = Settings.CenterMapBound;

            _mapLayer = new MapLayer(Width, Height, center, Settings.Default.StartZoomLevel);
            _netLayer = new NetLayer(Width, Height, center, Settings.Default.StartZoomLevel);
            _mapLayer.DrawLayerBuffer += Layer_DrawBufferChanged;
            _netLayer.DrawLayerBuffer += Layer_DrawBufferChanged;

            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            SetStyle(ControlStyles.Opaque, true);
            SetStyle(ControlStyles.SupportsTransparentBackColor, false);

            MouseWheel += MapCtl_MouseWheel;

            RefreshControl();
        }
        public override IEnumerable<Command> CompGetGizmosExtra()
        {
            var com = new Command_Action
            {
                defaultLabel  = ResourceBank.CycleLayerLabel,
                defaultDesc   = ResourceBank.CycleLayerDesc,
                icon          = currentLayer == NetLayer.Lower ? ResourceBank.UILower : ResourceBank.UIUpper,
                activateSound = SoundDef.Named( "DesignateMine" ),
                hotKey        = KeyBindingDefOf.CommandColonistDraft,
                action        = () =>
                {
                    var oldLayer = currentLayer;
                    currentLayer = currentLayer == NetLayer.Lower ? NetLayer.Upper : NetLayer.Lower;
                    MoteThrower.ThrowText( parent.Position.ToVector3Shifted(),
                                           ResourceBank.CycleLayerMote.Translate( currentLayer.ToStringTranslated() ) );
                    AirNetManager.NotifyCompLayerChange( this, oldLayer );
                }
            };

            foreach (var current in base.CompGetGizmosExtra())
                yield return current;

            yield return com;
        }
 public virtual bool IsLayerOf( NetLayer ly )
 {
     return currentLayer == ly;
 }
 public static string ToStringTranslated(this NetLayer layer)
 {
     return(("RedistHeat_" + layer + "ChannelTranslated").Translate());
 }
        private static Building GetAirNodeAt( IntVec3 loc, NetLayer layer )
        {
            var things = Find.ThingGrid.ThingsListAt( loc );
            foreach (var current in things)
            {
                var compAir = current.TryGetComp< CompAir >();
                if (compAir == null)
                {
                    continue;
                }

                if (compAir.IsLayerOf( layer ))
                {
                    return (Building) current;
                }
            }
            return null;
        }
 public static AirNet NewAirNetStartingFrom( Building root, NetLayer layer )
 {
     return new AirNet( ContiguousAirBuildings( root, layer ), layer, root.TryGetComp<CompAir>() );
 }
Exemple #27
0
 public virtual bool IsLayerOf(NetLayer ly)
 {
     return(currentLayer == ly);
 }
        public static void NotifyCompLayerChange( CompAir compAir, NetLayer oldLayer )
        {
            if (oldLayer == compAir.currentLayer)
            {
                Log.Error("RedistHeat: Tried to change " + compAir + "\'s layer to " + compAir.currentLayer +
                           ", which is not different!" );
                return;
            }

            oldComps[(int) oldLayer].Add( compAir );
            newComps[(int) compAir.currentLayer].Add( compAir );

            AddToGraphicUpdateList( compAir );
        }
Exemple #29
0
 public static AirNet NewAirNetStartingFrom(Building root, Map map, NetLayer layer)
 {
     return(new AirNet(ContiguousAirBuildings(root, layer, map), layer, root.TryGetComp <CompAir>(), map));
 }
Exemple #30
0
        public AirNet(IEnumerable <CompAir> newNodes, NetLayer layer, CompAir root, Map map)
        {
            var intakeRoomTemp = -500f;

            netTemperature = -500f;
            Layer          = layer;
            pushers        = 0;
            pullers        = 0;

            this.root = root;
            debugId   = debugIdNext++;

            foreach (var current in newNodes)
            {
                RegisterNode(current);
                current.connectedNet = this;

                if (netTemperature >= Common.AbsoluteZero)
                {
                    continue;
                }

                /*switch (current)
                 * {
                 *  case CompAirTrader airTrader:
                 *      if (airTrader.Props.units > 0)
                 *      {
                 *          AddPusherOrPuller(airTrader);
                 *          var room = airTrader.parent.GetRoom();
                 *          if (room != null)
                 *          {
                 *              intakeRoomTemp = room.Temperature;
                 *          }
                 *      }
                 *
                 *      if (airTrader.netTemp >= Common.AbsoluteZero)
                 *      {
                 *          netTemperature = airTrader.netTemp;
                 *      }
                 *      break;
                 * }*/
                if (current is CompAirTrader)
                {
                    var airTrader = (CompAirTrader)current;
                    if (airTrader.Props.units > 0)
                    {
                        AddPusherOrPuller(airTrader);
                        var room = airTrader.parent.GetRoom();
                        if (room != null)
                        {
                            intakeRoomTemp = room.Temperature;
                        }
                    }

                    if (airTrader.netTemp >= Common.AbsoluteZero)
                    {
                        netTemperature = airTrader.netTemp;
                    }
                }
            }

            if (netTemperature < Common.AbsoluteZero)
            {
                netTemperature = intakeRoomTemp < Common.AbsoluteZero
                    ? intakeRoomTemp
                    : map.mapTemperature.OutdoorTemp;
            }
        }