Jump to content

  • Log In with Google      Sign In   
  • Create Account


Druzil

Member Since 27 Feb 2011
Offline Last Active Jul 08 2014 10:37 PM
-----

Posts I've Made

In Topic: AI for chess similar games

07 November 2013 - 03:52 PM

Think about how many options you have available per move (if the board is almost infiinite - then potentially you have almost an infinite amount of options), can those options be limited in some manner - are only a subset of them reasonable to inspect.  If you can answer those questions it may lead you closer to an answer on how to solve it.  For instance an almost infinite amount of viable options instantly rules out adversarial search like minimax/ab-pruning.


In Topic: [Answered] Real numbers (constants) in genetic programming

27 October 2013 - 07:38 PM

The implementation that I used for genetic programming was representing the program as a tree.  Each node in the the tree had an INode interface with a method 'Evaluate( INode[] params)'

Then I had concrete implementations of nodes for each of the different operators I wanted to represent

 

operator+

operator*

sqrt

while(...)

if(...)

and so on...

 

I also had a literal operator which just returned a bounded value which was generated randomly at instantiation of the tree (through initial creation or mutation)

so at runtime I would create a concrete class through c# IL  e.g.

 

class literal5 : INode

{

     INode Execute(INode[] params)

    {

            return 5.0;

    }

}

 

hope that helps


In Topic: Need AI Help dealing with trends in Random Numbers

13 October 2013 - 04:59 PM

using System;
using System.Collections.Generic;
using System.Threading;

public class ColumnPick
{
    private static readonly Dictionary<int, int> NumberCount = new Dictionary<int, int>();

    public enum Face { Zero = 0, One = 1, Two, Three, Four, Five, Six, Seven, Eight, Nine };

    public static void Main()
    {
        for (int i = 0; i < 10; i++)
            NumberCount[i] = 0;

        const int maxIndex = 15000;
        var rand = new Random();
        int oldHighest = 0;
        for (int i = 0; i < maxIndex; i++)
        {
            int next = rand.Next(0, 10);
            NumberCount[next]++;

            Console.Clear();
            for (int j = 0; j < 10; j++)
                Console.WriteLine("{0}: {1}", Enum.GetName(typeof(Face), j), NumberCount[j]);

            if (NumberCount[next] > oldHighest)
            {
                oldHighest = NumberCount[next];
                Thread.Sleep(500);
            }
        }
        Console.Write("Press any key to continue...");
        Console.ReadKey();
    }
}

I've simplified the code. Now to find the top x%, just sort the dictionary and take the top x% x 10 number of buckets.


In Topic: Latest trends in procedural quest generation

26 September 2013 - 04:37 PM

There are a few articles here that might be of interest. http://www.gamesbyangelina.org/  Maybe the Jul 20 one?


In Topic: Negascout behaves oddly

04 July 2013 - 11:17 PM

One thing to look for when the AI is not taking the immediate win.  Is to see if the evaluation function discriminates between depth when it finds a win.  For instance, if a win is found at depth 2 and one at depth 5. It might choose the one at depth 5 which looks odd to a human - even if the win is still forced.


PARTNERS