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)); }
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 )]; }
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 >(); }
public static AirNet NetAt(IntVec3 pos, NetLayer layer) { if (!AirNetTicker.doneInit) { AirNetTicker.Initialize(); } return(netGrid[(int)layer][CellIndices.CellToIndex(pos)]); }
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); }
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; } }
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); }
// 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 } } ; } }
//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>() ); }
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 ); }
public static AirNet NewAirNetStartingFrom(Building root, Map map, NetLayer layer) { return(new AirNet(ContiguousAirBuildings(root, layer, map), layer, root.TryGetComp <CompAir>(), map)); }
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; } }