Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Все верно, я использовал тот же принцип
За успешное приближение
увеличивается «счетчик силы»
Слабые погибают, сильные выживают.
Приближение к другому объекту на очень маленькое расстояние,
Он не участвует в тренировке, но косвенно влияет на решение, он нужен для того, чтобы оценить нужно ли приближаться к объекту или лучше от него убегать.
if-ом, безо всякой сети.Выживаемость она либо есть, либо ее нет (не выжил), в тренировке не участвует.
Насколько я помню, у вас это решение напрямую принимается в коде if-ом, безо всякой сети.
Тогда как же нейронная сеть понимает, что она успешно «убежала»?
Расстояние выбрано опытным путем, оно достаточно малое, чтобы случайно сблизиться было бы крайне сложно, в последней версии это расстояние равно 0.008, при «размере» выделенного пространства 1х1.
Если же она смогла уйти это отразится на ее памяти,
Но как вы считаете это расстояние?
double GetDist(double x1, double x2, double y1, double y2)
{
return Math.Sqrt(Math.Pow(x1 - x2, 2) + Math.Pow(y1 - y2, 2));
}
Каким образом?
Я не ставил цели получить объект играющий в покер, было интересно проверить будут ли объекты «биться головой об стену» вести себя нерационально или же покажут признаки разумного поведения.
2) С# в качестве внутреннего языка.А что, туда .NET 4.0 уже завезли?
А зачем вам вообще нужны свежие возможности языка если вы занимаетесь не приделыванием интерфейсиков к базам данных, а научными расчётамиВ .NET 3.5 не было Task Parallel Library, ParallelLinq, BigInteger/Complex. В C# 3.0 не было необязательных параметров, ко/контрвариантности и разного рода сахара типа интерполяции строк, инициализаторов. Практически все библиотеки, включая используемый автором поста encog не поддерживают .NET 3.5. Этого достаточно или продолжать?
Этого достаточно или продолжать?Можно не продолжать, и так понятно, что для вас все эти фичи важны как красивые примочки, но на кой они в данном случае вы ни на секунду не задумались, вам это не важно.
библиотеки повадились хотеть 4.0Они его «повадились» использовать по причине упрощения написания и поддержки кода.
в пень не сдалисьС таким подходом можно вообще шарп не использовать, в нём же куча ненужного.

//thinking
//если я тот кто ближе слабее попробовать съесть, если нет драпать
if (nearlife!=null )
{
if (nearlife.borncount > borncount)
{
double[][] SenseData = { new double[] { 0, 0, 0, 0 } };
trainingSet = new BasicMLDataSet(Input, SenseData);
}
else
{
double[][] SenseData = { new double[] { 1, 1, 1, 1 } };
trainingSet = new BasicMLDataSet(Input, SenseData);
}
IMLData output = network.Compute(trainingSet[0].Ideal);
if (output[0] > pL) { pL += 0.001; } else { pL -= 0.001; }
if (output[1] > pR) { pR += 0.001; } else { pR -= 0.001; }
if (output[2] > pB) { pB += 0.001; } else { pB -= 0.001; }
if (output[3] > pT) { pT += 0.001; } else { pT -= 0.001; }
}
//thinking
//если я тот кто ближе слабее попробовать съесть, если нет драпать
if (nearlife != null)
{
double speedXDelta = Math.Abs(sB - sT); if (speedXDelta > 0.001) speedXDelta = 0.001;
double speedYDelta = Math.Abs(sB - sT); if (speedYDelta > 0.001) speedYDelta = 0.001;
if (nearlife.borncount > this.borncount)
{
// убегаем
// уменьшаем скорость на ближней стороне, увеличиваем на дальней
if (sT < sB) { pT -= speedYDelta; pB += speedYDelta; }
else if (sB < sT) { pB -= speedYDelta; pT += speedYDelta; }
if (sL < sR) { pL -= speedXDelta; pR += speedXDelta; }
else if (sR < sL) { pR -= speedXDelta; pL += speedXDelta; }
}
else
{
// догоняем
// увеличиваем скорость на ближней стороне, уменьшаем на дальней
if (sT < sB) { pT += speedYDelta; pB -= speedYDelta; }
else if (sB < sT) { pB += speedYDelta; pT -= speedYDelta; }
if (sL < sR) { pL += speedXDelta; pR -= speedXDelta; }
else if (sR < sL) { pR += speedXDelta; pL -= speedXDelta; }
}
}
ret1:
...
foreach (Life life in World) {
...
goto ret1;
}
if (x < 0)
{
x = 1 - x;
}
x += pL - pR;
y += pB - pT;
...
sB += Math.Pow(GetDist(x, nearlife.x, y - 0.05, nearlife.y), 2) / 10;

C# — Моделирование «разумной» жизни на базе нейронных сетей