//Methods public void Run() { MackeyGlassGeneratorSettings modSettings = new MackeyGlassGeneratorSettings(18, 0.1, 0.2); IGenerator generator = new MackeyGlassGenerator(modSettings); int steps = 100; for (int i = 0; i < steps; i++) { Console.WriteLine(generator.Next()); } Console.ReadLine(); generator.Reset(); for (int i = 0; i < steps; i++) { Console.WriteLine(generator.Next()); } Console.ReadLine(); ///* SimpleIFSettings settings = new SimpleIFSettings(1, new RandomValueSettings(15, 15), new RandomValueSettings(0.05, 0.05), new RandomValueSettings(5, 5), new RandomValueSettings(20, 20), 0 ); IActivationFunction af = ActivationFactory.Create(settings, new Random(0)); //*/ TestActivation(af, 800, 0.15, 10, 600); return; }
/// <summary> /// Creates an initialized instance. /// </summary> /// <param name="elem">A xml element containing the configuration data.</param> public AnalogNeuronGroupSettings(XElement elem) { //Validation XElement settingsElem = Validate(elem, XsdTypeName); //Parsing //Name Name = settingsElem.Attribute("name").Value; //Relative share RelShare = double.Parse(settingsElem.Attribute("relShare").Value, CultureInfo.InvariantCulture); //Activation settings ActivationCfg = ActivationFactory.LoadSettings(settingsElem.Elements().First()); //Firing threshold FiringThreshold = double.Parse(settingsElem.Attribute("firingThreshold").Value, CultureInfo.InvariantCulture); ThresholdMaxRefDeepness = int.Parse(settingsElem.Attribute("thresholdMaxRefDeepness").Value, CultureInfo.InvariantCulture); //Bias XElement biasSettingsElem = settingsElem.Elements("bias").FirstOrDefault(); BiasCfg = biasSettingsElem == null ? null : new RandomValueSettings(biasSettingsElem); //Retainment XElement retainmentSettingsElem = settingsElem.Elements("retainment").FirstOrDefault(); RetainmentCfg = retainmentSettingsElem == null ? null : new RetainmentSettings(retainmentSettingsElem); //Predictors PredictorsCfg = new PredictorsProviderSettings(settingsElem.Elements("predictors").First()); Check(); return; }
//Constructors /// <summary> /// Creates an initialized instance /// </summary> /// <param name="numOfNeurons">Number of hidden layer neurons</param> /// <param name="activationCfg">Layer activation configuration</param> public HiddenLayerSettings(int numOfNeurons, RCNetBaseSettings activationCfg) { NumOfNeurons = numOfNeurons; ActivationCfg = ActivationFactory.DeepCloneActivationSettings(activationCfg); Check(); return; }
/// <summary> /// The deep copy constructor /// </summary> /// <param name="source">Source instance</param> public FeedForwardNetworkSettings(FeedForwardNetworkSettings source) { OutputLayerActivation = null; OutputRange = null; if (source.OutputLayerActivation != null) { OutputLayerActivation = ActivationFactory.DeepCloneActivationSettings(source.OutputLayerActivation); OutputRange = source.OutputRange.DeepClone(); } RegressionMethod = source.RegressionMethod; HiddenLayerCollection = new List <HiddenLayerSettings>(source.HiddenLayerCollection.Count); foreach (HiddenLayerSettings shls in source.HiddenLayerCollection) { HiddenLayerCollection.Add(shls.DeepClone()); } LinRegrTrainerCfg = null; RPropTrainerCfg = null; if (source.LinRegrTrainerCfg != null) { LinRegrTrainerCfg = source.LinRegrTrainerCfg.DeepClone(); } if (source.RPropTrainerCfg != null) { RPropTrainerCfg = source.RPropTrainerCfg.DeepClone(); } return; }
/// <summary> /// Creates an initialized instance. /// </summary> /// <param name="elem">Xml element containing the initialization settings.</param> public SpikingNeuronGroupSettings(XElement elem) { //Validation XElement settingsElem = Validate(elem, XsdTypeName); //Parsing //Name Name = settingsElem.Attribute("name").Value; //Relative share RelShare = double.Parse(settingsElem.Attribute("relShare").Value, CultureInfo.InvariantCulture); //Activation settings ActivationCfg = ActivationFactory.LoadSettings(settingsElem.Elements().First()); //Homogenous excitability XElement homogenousExcitabilityElem = settingsElem.Elements("homogenousExcitability").FirstOrDefault(); HomogenousExcitabilityCfg = homogenousExcitabilityElem == null ? new HomogenousExcitabilitySettings() : new HomogenousExcitabilitySettings(homogenousExcitabilityElem); //Bias XElement biasSettingsElem = settingsElem.Elements("bias").FirstOrDefault(); BiasCfg = biasSettingsElem == null ? null : new RandomValueSettings(biasSettingsElem); //Predictors XElement predictorsSettingsElem = settingsElem.Elements("predictors").FirstOrDefault(); if (predictorsSettingsElem != null) { PredictorsCfg = new PredictorsSettings(predictorsSettingsElem); } Check(); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// This is the preferred way to instantiate reservoir settings. /// </summary> /// <param name="elem"> /// Xml data containing feed forward network settings. /// Content of xml element is always validated against the xml schema. /// </param> public FeedForwardNetworkSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.FeedForwardNetworkSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement feedForwardNetworkSettingsElem = validator.Validate(elem, "rootElem"); //Parsing OutputLayerActivation = ActivationFactory.LoadSettings(feedForwardNetworkSettingsElem.Descendants().First()); if (!IsAllowedActivation(OutputLayerActivation, out Interval outputRange)) { throw new ApplicationException($"Activation can't be used in FF network. Activation function has to be stateless and has to support derivative calculation."); } OutputRange = outputRange; RegressionMethod = ParseTrainingMethodType(feedForwardNetworkSettingsElem.Attribute("regressionMethod").Value); //Hidden layers HiddenLayerCollection = new List <HiddenLayerSettings>(); XElement hiddenLayersElem = feedForwardNetworkSettingsElem.Descendants("hiddenLayers").FirstOrDefault(); if (hiddenLayersElem != null) { foreach (XElement layerElem in hiddenLayersElem.Descendants("layer")) { HiddenLayerCollection.Add(new HiddenLayerSettings(layerElem)); } } //Trainers LinRegrTrainerCfg = null; RPropTrainerCfg = null; switch (RegressionMethod) { case TrainingMethodType.Linear: XElement linRegrTrainerElem = feedForwardNetworkSettingsElem.Descendants("linRegrTrainer").FirstOrDefault(); if (linRegrTrainerElem != null) { LinRegrTrainerCfg = new LinRegrTrainerSettings(linRegrTrainerElem); } else { LinRegrTrainerCfg = new LinRegrTrainerSettings(); } break; case TrainingMethodType.Resilient: XElement resPropTrainerElem = feedForwardNetworkSettingsElem.Descendants("resPropTrainer").FirstOrDefault(); if (resPropTrainerElem != null) { RPropTrainerCfg = new RPropTrainerSettings(resPropTrainerElem); } else { RPropTrainerCfg = new RPropTrainerSettings(); } break; } return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public NeuronGroupSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.SM.Preprocessing.PoolNeuronGroupSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing //Name Name = settingsElem.Attribute("name").Value; //Role Role = CommonEnums.ParseNeuronRole(settingsElem.Attribute("role").Value); //Relative share RelativeShare = double.Parse(settingsElem.Attribute("relShare").Value, CultureInfo.InvariantCulture); //Augmented states AugmentedStates = bool.Parse(settingsElem.Attribute("augmentedStates").Value); //Activation settings ActivationCfg = ActivationFactory.LoadSettings(settingsElem.Descendants().First()); //Bias BiasCfg = new RandomValueSettings(settingsElem.Descendants("bias").First()); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// This is the preferred way to instantiate settings. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public FeedForwardNetworkSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.FeedForwardNetworkSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing OutputLayerActivation = ActivationFactory.LoadSettings(settingsElem.Descendants().First()); if (!IsAllowedActivation(OutputLayerActivation, out Interval outputRange)) { throw new ApplicationException($"Activation can't be used in FF network. Activation function has to be stateless and has to support derivative calculation."); } OutputRange = outputRange; //Hidden layers HiddenLayerCollection = new List <HiddenLayerSettings>(); XElement hiddenLayersElem = settingsElem.Descendants("hiddenLayers").FirstOrDefault(); if (hiddenLayersElem != null) { foreach (XElement layerElem in hiddenLayersElem.Descendants("layer")) { HiddenLayerCollection.Add(new HiddenLayerSettings(layerElem)); } } //Trainer configuration TrainerCfg = null; foreach (XElement candidate in settingsElem.Descendants()) { if (candidate.Name.LocalName == "linRegrTrainer") { TrainerCfg = new LinRegrTrainerSettings(candidate); } else if (candidate.Name.LocalName == "qrdRegrTrainer") { TrainerCfg = new QRDRegrTrainerSettings(candidate); } else if (candidate.Name.LocalName == "ridgeRegrTrainer") { TrainerCfg = new RidgeRegrTrainerSettings(candidate); } else if (candidate.Name.LocalName == "resPropTrainer") { TrainerCfg = new RPropTrainerSettings(candidate); } if (TrainerCfg != null) { break; } } if (TrainerCfg == null) { throw new Exception("Trainer settings not found."); } return; }
/// <summary> /// The deep copy constructor /// </summary> /// <param name="source">Source instance</param> public FeedForwardNetworkSettings(FeedForwardNetworkSettings source) { OutputActivationCfg = ActivationFactory.DeepCloneActivationSettings(source.OutputActivationCfg); OutputRange = source.OutputRange.DeepClone(); HiddenLayersCfg = (HiddenLayersSettings)source.HiddenLayersCfg.DeepClone(); TrainerCfg = source.TrainerCfg.DeepClone(); return; }
public static DInput isHurt(ResourceFightDNCreature p_cre) { DActivationFunction activate = ActivationFactory.generateSigmoid(1, 1, false, true, true); return(() => { return activate(p_cre.m_health.Value / p_cre.m_health.Max); }); }
//Static methods /// <summary> /// Fuction tests if specified activation can be used in FF network /// </summary> /// <param name="activationSettings">Activation settings</param> /// <param name="outputRange">Returned range of the activation function</param> public static bool IsAllowedActivation(RCNetBaseSettings activationSettings, out Interval outputRange) { outputRange = ActivationFactory.GetInfo(activationSettings, out bool stateless, out bool supportsDerivative); if (!stateless || !supportsDerivative) { return(false); } return(true); }
//Resource public static DInput isHungry(ResourceFightDNCreature p_cre) { DActivationFunction activate = ActivationFactory.generateSigmoid(1, 1, false, true, true); return(() => { //Debug.Log(p_cre.m_energy.Value + " : " + activate(p_cre.m_energy.Value/p_cre.m_energy.Max)); return activate(p_cre.m_energy.Value / p_cre.m_energy.Max); }); }
/// <summary> /// Copy constructor /// </summary> /// <param name="source">Source instance</param> public HiddenLayerSettings(HiddenLayerSettings source) { NumOfNeurons = source.NumOfNeurons; Activation = null; if (source.Activation != null) { Activation = ActivationFactory.DeepCloneActivationSettings(source.Activation); } return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing the settings. /// </param> public HiddenLayerSettings(XElement elem) { NumOfNeurons = int.Parse(elem.Attribute("neurons").Value); Activation = ActivationFactory.LoadSettings(elem.Descendants().First()); if (!IsAllowedActivation(Activation, out Interval outputRange)) { throw new ApplicationException($"Activation can't be used in FF network. Activation has to be time independent and has to support derivative."); } return; }
//Methods //Static methods /// <summary> /// Fuction checks if specified activation can be used in FF network /// </summary> /// <param name="activationSettings">Activation settings</param> /// <returns></returns> public static bool IsAllowedActivation(ActivationSettings activationSettings) { IActivationFunction af = ActivationFactory.Create(activationSettings); if (!af.Stateless || !af.SupportsComputeDerivativeMethod) { return(false); } return(true); }
//Methods //Static methods /// <summary> /// Fuction checks if specified activation can be used in FF network /// </summary> /// <param name="activationSettings">Activation settings</param> /// <param name="outputRange">Returned range of the activation function</param> public static bool IsAllowedActivation(Object activationSettings, out Interval outputRange) { IActivationFunction af = ActivationFactory.Create(activationSettings, new Random()); outputRange = af.OutputRange.DeepClone(); if (!af.Stateless || !af.SupportsDerivative) { return(false); } return(true); }
/// <summary> /// The deep copy constructor /// </summary> /// <param name="source">Source instance</param> public NeuronGroupSettings(NeuronGroupSettings source) { Name = source.Name; Role = source.Role; RelativeShare = source.RelativeShare; AugmentedStates = source.AugmentedStates; Count = source.Count; ActivationCfg = ActivationFactory.DeepCloneActivationSettings(source.ActivationCfg); BiasCfg = source.BiasCfg.DeepClone(); return; }
public static DInput bulletsUpAhead(ResourceFightDNCreature p_cre) { DActivationFunction activate = ActivationFactory.generateSigmoid(5, 1, false, true, false); return(() => { GameObject[] bullets = p_cre.sense("BULLET"); // Debug.Log(bullets.Length + " : " + activate(bullets.Length)); return activate(bullets.Length); }); }
/// <summary> /// Creates an initialized instance from given xml element. /// </summary> /// <param name="elem">Xml element containing the settings.</param> public HiddenLayerSettings(XElement elem) { //Validation XElement settingsElem = Validate(elem, XsdTypeName); //Parsing NumOfNeurons = int.Parse(settingsElem.Attribute("neurons").Value); ActivationCfg = ActivationFactory.LoadSettings(settingsElem.Elements().First()); Check(); return; }
public ActivationApplicationServiceTests() { activationFactory = new ActivationFactory(); identityResolver = new FakeIdentityResolver(); domainNotificationHandler = new DomainNotificationHandler(); fakeUnitOfWork = new FakeUnitOfWork(); serviceBus = new FakeServiceBus(); domainBus = new FakeDomainServiceBus(); activationRepository = new FakeActivationRepository(); service = new ActivationApplicationService(activationRepository, identityResolver, domainNotificationHandler, fakeUnitOfWork, serviceBus, domainBus); }
public void ShouldReturnAnActivation() { IActivationFactory factory = new ActivationFactory(); Guid companyId = Guid.NewGuid(); Guid tenantId = Guid.NewGuid(); Activation activation = factory.CreateActivation(companyId, tenantId); Assert.IsNotNull(activation); Assert.AreEqual(companyId, activation.Id); }
//Constructors /// <summary> /// Creates an initialized instance /// </summary> /// <param name="outputActivationCfg">Output layer activation configuration</param> /// <param name="hiddenLayersCfg">Hidden layers configuration. Hidden layers are optional.</param> /// <param name="trainerCfg">Configuration of associated trainer</param> public FeedForwardNetworkSettings(RCNetBaseSettings outputActivationCfg, HiddenLayersSettings hiddenLayersCfg, RCNetBaseSettings trainerCfg ) { OutputActivationCfg = ActivationFactory.DeepCloneActivationSettings(outputActivationCfg); OutputRange = ActivationFactory.GetInfo(OutputActivationCfg, out _, out _); HiddenLayersCfg = hiddenLayersCfg == null ? new HiddenLayersSettings() : (HiddenLayersSettings)hiddenLayersCfg.DeepClone(); TrainerCfg = trainerCfg.DeepClone(); Check(); return; }
/// <summary> /// Instantiates an initialized feed forward network /// </summary> /// <param name="numOfInputValues">Number of network's input values</param> /// <param name="numOfOutputValues">Number of network's output values</param> /// <param name="settings">Configuration parameters</param> public FeedForwardNetwork(int numOfInputValues, int numOfOutputValues, FeedForwardNetworkSettings settings) : this(numOfInputValues, numOfOutputValues) { //Initialize FF network for (int i = 0; i < settings.HiddenLayerCollection.Count; i++) { AddLayer(settings.HiddenLayerCollection[i].NumOfNeurons, ActivationFactory.Create(settings.HiddenLayerCollection[i].Activation) ); } FinalizeStructure(ActivationFactory.Create(settings.OutputLayerActivation)); return; }
/// <summary> /// Tests whether the activation function can be used as the FF network's hidden layer activation. /// </summary> /// <param name="activationCfg">The configuration of the activation function.</param> public static bool IsAllowedHiddenAF(IActivationSettings activationCfg) { if (activationCfg.TypeOfActivation != ActivationType.Analog) { return(false); } AFAnalogBase analogAF = (AFAnalogBase)ActivationFactory.CreateAF(activationCfg, new Random(0)); if (!analogAF.SupportsDerivative || analogAF.DependsOnSorround) { return(false); } return(true); }
public void brainAction() { Matrix <float> current_matrix = getInputValueMatrix() * m_weights[0]; DActivationFunction activator = ActivationFactory.generateSigmoid(2, 2, true, false, false); MatrixCalc.activate(activator, current_matrix); for (int i = 1; i < m_weights.Length; i++) { current_matrix = current_matrix * m_weights[i]; MatrixCalc.activate(activator, current_matrix); } performOutputs(current_matrix); }
/// <summary> /// Creates an initialized instance. /// </summary> /// <param name="numOfInputValues">The number of the network's input values.</param> /// <param name="numOfOutputValues">The number of the network's output values.</param> /// <param name="cfg">The configuration of the network and associated trainer.</param> public FeedForwardNetwork(int numOfInputValues, int numOfOutputValues, FeedForwardNetworkSettings cfg) : this(numOfInputValues, numOfOutputValues) { Random rand = new Random(1); //Initialize FF network for (int i = 0; i < cfg.HiddenLayersCfg.HiddenLayerCfgCollection.Count; i++) { AddLayer(cfg.HiddenLayersCfg.HiddenLayerCfgCollection[i].NumOfNeurons, (AFAnalogBase)ActivationFactory.CreateAF(cfg.HiddenLayersCfg.HiddenLayerCfgCollection[i].ActivationCfg, rand) ); } FinalizeStructure((AFAnalogBase)ActivationFactory.CreateAF(cfg.OutputActivationCfg, rand)); return; }
/// <summary> /// Creates an initialized instance. /// </summary> /// <param name="elem">Xml element containing the initialization settings</param> public FeedForwardNetworkSettings(XElement elem) { //Validation XElement settingsElem = Validate(elem, XsdTypeName); //Parsing OutputActivationCfg = ActivationFactory.LoadSettings(settingsElem.Elements().First()); OutputRange = ActivationFactory.GetInfo(OutputActivationCfg, out _, out _); //Hidden layers XElement hiddenLayersElem = settingsElem.Elements("hiddenLayers").FirstOrDefault(); if (hiddenLayersElem != null) { HiddenLayersCfg = new HiddenLayersSettings(hiddenLayersElem); } else { HiddenLayersCfg = new HiddenLayersSettings(); } //Trainer configuration TrainerCfg = null; foreach (XElement candidate in settingsElem.Elements()) { if (candidate.Name.LocalName == "qrdRegrTrainer") { TrainerCfg = new QRDRegrTrainerSettings(candidate); break; } else if (candidate.Name.LocalName == "ridgeRegrTrainer") { TrainerCfg = new RidgeRegrTrainerSettings(candidate); break; } else if (candidate.Name.LocalName == "elasticRegrTrainer") { TrainerCfg = new ElasticRegrTrainerSettings(candidate); break; } else if (candidate.Name.LocalName == "resPropTrainer") { TrainerCfg = new RPropTrainerSettings(candidate); break; } } Check(); return; }
//Constructors /// <summary> /// The deep copy constructor /// </summary> /// <param name="source">Source instance</param> public NeuronGroupSettings(NeuronGroupSettings source) { Name = source.Name; Role = source.Role; RelativeShare = source.RelativeShare; ReadoutNeuronsDensity = source.ReadoutNeuronsDensity; Count = source.Count; ActivationType = source.ActivationType; ActivationCfg = ActivationFactory.DeepCloneActivationSettings(source.ActivationCfg); SignalingRestriction = source.SignalingRestriction; BiasCfg = source.BiasCfg?.DeepClone(); AnalogFiringThreshold = source.AnalogFiringThreshold; RetainmentNeuronsDensity = source.RetainmentNeuronsDensity; RetainmentStrengthCfg = source.RetainmentStrengthCfg?.DeepClone(); PredictorsCfg = source.PredictorsCfg?.DeepClone(); return; }
public static DInput isStronger(ResourceFightDNCreature p_cre) { DActivationFunction activate = ActivationFactory.generateSigmoid(1f, 1, false, true, false); return(() => { GameObject closest = p_cre.senseClosest("CREATURE"); if (closest == null) { return 0; } ResourceFightDNCreature enemy = closest.GetComponent <ResourceFightDNCreature>(); float strength_check = (p_cre.m_health.Value + (p_cre.m_damage * 5)) / (enemy.m_health.Value + (enemy.m_damage * 5)); //Debug.Log( "[" + strength_check +"] " + activate( strength_check-0.5f ) ); return activate(strength_check - 0.5f); //Your mesure of toughness/ enemy mesure of toughness set up so double enemy gives 0 and half enemy 1 }); }
//Dodging public static DInput bulletCollisionImminent(ResourceFightDNCreature p_cre) { DActivationFunction prox_activate = ActivationFactory.generateSigmoid(1.5f, 2, false, true, true); DActivationFunction angle_activate = ActivationFactory.generateSigmoid(10f, 2, false, true, true); DActivationFunction full_activate = ActivationFactory.generateSigmoid(1, 1, false, true, false); return(() => { GameObject[] bullets = p_cre.sense("BULLET"); List <GameObject> bullets_close_and_coming_towards = new List <GameObject>(); foreach (GameObject bul in bullets) { if (Vector2Calc.proximity(bul.transform.position, p_cre.transform.position) < 2 && Vector2Calc.checkAngle(p_cre.transform.position - bul.transform.position, bul.GetComponent <Rigidbody2D>().velocity, 10)) { bullets_close_and_coming_towards.Add(bul); } } float activation = 0; foreach (GameObject bul in bullets_close_and_coming_towards) { float bul_prox = prox_activate(Vector2Calc.proximity(bul.transform.position, p_cre.transform.position) - 0.5f); float bul_angle = angle_activate(Mathf.Abs(Vector2Calc.getAngle(p_cre.transform.position - bul.transform.position, bul.GetComponent <Rigidbody2D>().velocity))); float bul_active = full_activate(bul_prox * bul_angle); if (bul_active > activation) { activation = bul_active; } } //if(activation >0 ) Debug.Log(activation); return activation; }); }