FosterScript.Core 1.0.1-alpha

This is a prerelease version of FosterScript.Core.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package FosterScript.Core --version 1.0.1-alpha
NuGet\Install-Package FosterScript.Core -Version 1.0.1-alpha
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FosterScript.Core" Version="1.0.1-alpha" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FosterScript.Core --version 1.0.1-alpha
#r "nuget: FosterScript.Core, 1.0.1-alpha"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FosterScript.Core as a Cake Addin
#addin nuget:?package=FosterScript.Core&version=1.0.1-alpha&prerelease

// Install FosterScript.Core as a Cake Tool
#tool nuget:?package=FosterScript.Core&version=1.0.1-alpha&prerelease

FosterScript.Core

FosterScript.Core is a C# library that provides a framework for genetic evolution of virtual species. It is designed to facilitate the implementation of the Neuroevolution of Augmenting Topologies (NEAT) algorithm, while offering high flexibility and dynamic behavior.

Key Features

The essential features of this library is:

  • Scriptable neurons: FosterScript.Core allows you to create custom neuron types with different calculations, enabling the development of novel neural network architectures.
  • Scriptable modules: Modules are components that enhance the functionality of agents. You can define and add custom modules to your agents to incorporate specific behaviors and capabilities.
  • Propagation: The library supports signal propagation where neurons transmit signals in discrete steps, allowing for back-propagation and introducing a realistic delay between input and output.

Planned Usage

I am planning to develop a server-hosted implementation of FosterScript.Core, featuring a web-based graphical user interface. This implementation will provide a live view of the agents' survival attempts, showcasing their adaptation to dynamic events. It will serve as a tool for researchers, game developers, and individuals interested in learning about neural networks and genetic algorithms.

Inspiration

FosterScript.Core was inspired by a video from David Randall Miller, which explores various aspects of neural networks and genetic evolution. You can watch the video here. The video covers topics such as neural network structure, diverse input and output nodes, weighting systems, and network visualization.

Getting Started

To integrate FosterScript.Core into your project, please refer to the implementation guide for detailed instructions.

Examples

The FosterScript.Examples repository contains several examples demonstrating the usage of FosterScript.Core. You can explore these examples to gain insights into implementing the framework in your own projects.

Best Practices

When creating custom modules, it is recommended to follow the best practice of inheriting the Module base class. Here's an example illustrating the inheritance:

public class ExampleModule : Module
{
    // Inherited Properties
    public override string Name => "Example module";
    public override int[] Version => new int[] { 1, 0, 0 };

    // Custom Properties
    public double StoredSample
    {
        get { return _storedSample; }
        set
        {
            if (value <= 0)
            {
                // Example of how to terminate the host actor
                Body?.Kill();
            }
            _storedSample = value;
        }
    }
    private double _storedSample;

    public ExampleModule() : base()
    {
        // Pre-initialization code
    }

    public override void Initialize()
    {
        // Perform initialization tasks, including adding input and output neurons.
    }

    public override void Think()
    {
        // Observation phase: Add logic for observing the environment, such as distance calculations with other actors.
    }

    public override void Act()
    {
        // Action phase: Execute planned interactions or behaviors.
    }
}

Definitions

For detailed definitions and explanations of key terms used throughout the framework, please refer to the DEFINITIONS.md file. This document provides comprehensive descriptions of concepts such as modules, nodes, neural connections, actors, and more. It serves as a valuable resource for gaining a deeper understanding of the framework's components and their interactions.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1-alpha 191 10/15/2023
1.0.3-alpha 122 10/14/2023
1.0.2-alpha 68 10/12/2023
1.0.1-alpha 104 5/31/2023