Re[14]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 31.05.04 15:57
Оценка:
Здравствуйте, henson, Вы писали:

H>Если Вы говорите о битовых операциях, то я предположил, что речь о геноме, который по определенным правилом скрещивается с другим(и).


Да, я тоже это имел ввиду для одного гена. Только скрещивать думал с помощью битовых операций. Геном — это набор генов?

H>Перед этим каждый геном прогоняется на оценочной функции.


Лучше после, но это не важно.

H>Могут быть и более сложные модели. Но в любом случае геном — это либо 1/0, либо коэффициент (целый или вещественный). Какую модель Вы хотите заложить?


Вещественный.

H>Для вещественных коэффициент возможно нет смысла делать операции с битами, а лучше перейти к какой то функции, x(1)i+1=(x(1)i+x(2)i)/2 в конце концов


А какие это функции? Всмысле что они должны делать и как выглядеть? Мне как-то про это не попадалось. Может, ссылка есть на то, чтобы почитать?
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[12]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 31.05.04 15:57
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Насколько я помню double в Net 64 бита ( http://www.rsdn.ru/Forum/Message.aspx?mid=375145&amp;only=1
Автор: WolfHound
Дата: 05.09.03
) и структура типа


S> public struct DoubleOrUInt64

S> {
S> [FieldOffset(0)]
S> UInt64 IntValue;

S> [FieldOffset(0)]

S> double DoubleValue;

S> }


S> В Net можно работать можно применять побитовые операции и с Int64 (но мне больше нравится UInt64)


S> Правда жалко, что Extended забыли.


Круто. А при этом остальные части класса остаются управляемыми?
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[13]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 31.05.04 19:26
Оценка: 15 (1)
Здравствуйте, Jenyay, Вы писали:

J>Здравствуйте, Serginio1, Вы писали:


S>> Насколько я помню double в Net 64 бита ( http://www.rsdn.ru/Forum/Message.aspx?mid=375145&amp;only=1
Автор: WolfHound
Дата: 05.09.03
) и структура типа


S>> public struct DoubleOrUInt64

S>> {
S>> [FieldOffset(0)]
S>> UInt64 IntValue;

S>> [FieldOffset(0)]

S>> double DoubleValue;

S>> }


S>> В Net можно работать можно применять побитовые операции и с Int64 (но мне больше нравится UInt64)


S>> Правда жалко, что Extended забыли.


J>Круто. А при этом остальные части класса остаются управляемыми?


Посмотрите еще класс System.BitConverter с методом DoubleToInt64Bits и обратным, может пригодиться.
Re[12]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 31.05.04 19:31
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Jenyay, Вы писали:



S>>>Да и вариантные структуры никто не отменял (FieldOffset)


J>>Интересно. То есть этот аттрибут (FieldOffsetAttribute) делает так, что элемент класса начинается не по положенному ему месту а по указанному?

S> Да.
J>>Впринципе, мне это надо для скрещивания хромосом. Хотел просто чтобы у ребенка было бы часть бит (допустим первая) от 1-го родителя, а часть от 2-го. Нв С++ я бы сделал ассемблерными вставками. Может есть лучшее решение? Не хотелось бы использовать числа с фиксированной точкой. Есть еще идея отдельно скрещивать отдельно целые части (таким образом) как целые числа и дробные, умноженные перед этим на большое число (35000), чтобы тоже получилось целое число. Хотя таким образом до double не дотянуть, а до float можно.
S> Насколько я помню double в Net 64 бита ( http://www.rsdn.ru/Forum/Message.aspx?mid=375145&amp;only=1
Автор: WolfHound
Дата: 05.09.03
) и структура типа


S> public struct DoubleOrUInt64

S> {
S> [FieldOffset(0)]
S> UInt64 IntValue;

S> [FieldOffset(0)]

S> double DoubleValue;

S> }


S> В Net можно работать можно применять побитовые операции и с Int64 (но мне больше нравится UInt64)


S> Правда жалко, что Extended забыли.


По-моему перед структурой надо указать
[StructLayout(LayoutKind.Explicit)]
чтоб была unmanaged memory
Re[14]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 01.06.04 06:46
Оценка:
Здравствуйте, henson, Вы писали:

H>Посмотрите еще класс System.BitConverter с методом DoubleToInt64Bits и обратным, может пригодиться.


Похоже, то, что надо. Сколько же интересного в этот .NET напихали
Кстати, и на С++ с помощью union тоже можно будет скрещивать float как int побайтно без ассемблера. Я как-то и забыл про него (union).
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[13]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 09:40
Оценка:
Здравствуйте, henson, Вы писали:


S>> Насколько я помню double в Net 64 бита ( http://www.rsdn.ru/Forum/Message.aspx?mid=375145&amp;only=1
Автор: WolfHound
Дата: 05.09.03
) и структура типа


S>> public struct DoubleOrUInt64

S>> {
S>> [FieldOffset(0)]
S>> UInt64 IntValue;

S>> [FieldOffset(0)]

S>> double DoubleValue;

S>> }


S>> В Net можно работать можно применять побитовые операции и с Int64 (но мне больше нравится UInt64)


S>> Правда жалко, что Extended забыли.


H>По-моему перед структурой надо указать

H>[StructLayout(LayoutKind.Explicit)]
H>чтоб была unmanaged memory

Для структур это выравнивание по умолчанию.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[13]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 09:40
Оценка:
Здравствуйте, Jenyay, Вы писали:

J>Здравствуйте, Serginio1, Вы писали:


S>> Насколько я помню double в Net 64 бита ( http://www.rsdn.ru/Forum/Message.aspx?mid=375145&amp;only=1
Автор: WolfHound
Дата: 05.09.03
) и структура типа


S>> public struct DoubleOrUInt64

S>> {
S>> [FieldOffset(0)]
S>> UInt64 IntValue;

S>> [FieldOffset(0)]

S>> double DoubleValue;

S>> }


S>> В Net можно работать можно применять побитовые операции и с Int64 (но мне больше нравится UInt64)


S>> Правда жалко, что Extended забыли.


J>Круто. А при этом остальные части класса остаются управляемыми?

Да. Небольшой пример из BynaryReader

 internal static decimal ToDecimal(byte[] buffer)
{
 int num1 = (((buffer[0] | (buffer[1] << 8)) | (buffer[2] << 16)) | (buffer[3] << 24));
int num2 = (((buffer[4] | (buffer[5] << 8)) | (buffer[6] << 16)) | (buffer[7] << 24));
int num3 = (((buffer[8] | (buffer[9] << 8)) | (buffer[10] << 16)) | (buffer[11] << 24));
int num4 = (((buffer[12] | (buffer[13] << 8)) | (buffer[14] << 16)) | (buffer[15] << 24));
return new decimal(num1, num2, num3, num4);
 
}


private Decimal(int lo, int mid, int hi, int flags)
{
 this.lo = lo;
this.mid = mid;
this.hi = hi;
this.flags = flags;
 
}


[CLSCompliant(false)]
public static ulong ToUInt64(decimal d)
{
 ulong num1;
if ((d.flags & 16711680) != 0)
{
 d = decimal.Truncate(d);
 
}
if (d.hi == 0)
{
 num1 = (((ulong) d.lo) | (((ulong) d.mid) << 32));
if ((d.flags >= 0) || (num1 == ((long) 0)))
{
 return num1;
 
}
 
}
throw new OverflowException(Environment.GetResourceString("Overflow_UInt64"));
 
}





public virtual double ReadDouble()
{
 this.FillBuffer(8);
uint num1 = (((this.m_buffer[0] | (this.m_buffer[1] << 8)) | (this.m_buffer[2] << 16)) | (this.m_buffer[3] << 24));
uint num2 = (((this.m_buffer[4] | (this.m_buffer[5] << 8)) | (this.m_buffer[6] << 16)) | (this.m_buffer[7] << 24));
ulong num3 = ((((ulong) num2) << 32) | ((ulong) num1));
return num3;
 
}




public static long ToInt64(double value)
{
 long num1;
double num2;
long num3;
double num4;
if (value >= 0f)
{
 if (value >= 9.2233720368547758E+18f)
{
 goto Label_0082;
 
}
num1 = ((long) value);
num2 = (value - ((double) num1));
if ((num2 <= 0.5f) && ((num2 != 0.5f) || ((num1 & ((long) 1)) == ((long) 0))))
{
 return num1;
 
}
num1 += ((long) 1);
return num1;
 
}
if (value > -9.2233720368547758E+18f)
{
 num3 = ((long) value);
num4 = (value - ((double) num3));
if ((num4 >= -0.5f) && ((num4 != -0.5f) || ((num3 & ((long) 1)) == ((long) 0))))
{
 return num3;
 
}
num3 -= ((long) 1);
return num3;
 
}
 
Label_0082:
 throw new OverflowException(Environment.GetResourceString("Overflow_Int64"));
 
}



Стоит обратить внимание еще на класс Buffer и его методы
[MethodImpl(MethodImplOptions.InternalCall)]
public static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count);

и
public static int ByteLength(Array array);
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[5]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 09:52
Оценка:
Здравствуйте, henson, Вы писали:

H>Нормальная объектная модель + автоматический сбор мусора = экономия времени

GC это палка о двух концах. За надежность и упрощение кодирование нужно платить гибкостью (применение указателей ограничено и только в унсейы режиме причем не всегда можно получить выингрыш) и write barier.
GC хорош при небольшом количестве живых объектов, там где их много можно поиметь различные неприятности. Хотя M$ не дремлет и совершенствует ее.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[15]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 01.06.04 22:25
Оценка:
H>>Для вещественных коэффициент возможно нет смысла делать операции с битами, а лучше перейти к какой то функции, x(1)i+1=(x(1)i+x(2)i)/2 в конце концов

J>А какие это функции? Всмысле что они должны делать и как выглядеть? Мне как-то про это не попадалось. Может, ссылка есть на то, чтобы почитать?


Я не помню уже где видел, вот основы http://www.systemtechnik.tu-ilmenau.de/~pohlheim/GA_Toolbox/algmutat.html
Re[15]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.06.04 12:12
Оценка:
Здравствуйте, Jenyay, Вы писали:



J>Похоже, то, что надо. Сколько же интересного в этот .NET напихали

J>Кстати, и на С++ с помощью union тоже можно будет скрещивать float как int побайтно без ассемблера. Я как-то и забыл про него (union).
Зачем так сложно??? Указатели в нативных языках вполне пригодны.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[16]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 02.06.04 12:59
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Зачем так сложно??? Указатели в нативных языках вполне пригодны.


Я сначала хотел преобразовывать через void*, но потом показалось, что через union будет покрасивее. Или я ошибаюсь?
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[6]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 02.06.04 12:59
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> GC хорош при небольшом количестве живых объектов, там где их много можно поиметь различные неприятности. Хотя M$ не дремлет и совершенствует ее.


А какие, например?
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[17]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.06.04 13:12
Оценка:
Здравствуйте, Jenyay, Вы писали:

J>Здравствуйте, Serginio1, Вы писали:


S>> Зачем так сложно??? Указатели в нативных языках вполне пригодны.


J>Я сначала хотел преобразовывать через void*, но потом показалось, что через union будет покрасивее. Или я ошибаюсь?

Конечно покрасивее. Спору нет.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[7]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.06.04 13:29
Оценка:
Здравствуйте, Jenyay, Вы писали:

J>Здравствуйте, Serginio1, Вы писали:


S>> GC хорош при небольшом количестве живых объектов, там где их много можно поиметь различные неприятности. Хотя M$ не дремлет и совершенствует ее.


J>А какие, например?


http://www.rsdn.ru/forum/Message.aspx?mid=630508&amp;only=1
Автор: Serginio1
Дата: 06.05.04

http://www.rsdn.ru/forum/Message.aspx?mid=646279&amp;only=1
Автор: Serginio1
Дата: 19.05.04
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[8]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 02.06.04 13:38
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>http://www.rsdn.ru/forum/Message.aspx?mid=630508&amp;only=1
Автор: Serginio1
Дата: 06.05.04

S>http://www.rsdn.ru/forum/Message.aspx?mid=646279&amp;only=1
Автор: Serginio1
Дата: 19.05.04


Печально
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[18]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 02.06.04 13:38
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Конечно покрасивее. Спору нет.


А зачем тогда через указатели?
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[19]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.06.04 13:42
Оценка:
Здравствуйте, Jenyay, Вы писали:

J>Здравствуйте, Serginio1, Вы писали:


S>> Конечно покрасивее. Спору нет.


J>А зачем тогда через указатели?

Из за лени
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[20]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 02.06.04 16:08
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Из за лени


... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[2]: .NET и генетические алгоритмы
От: Аноним  
Дата: 07.06.04 13:38
Оценка:
Здравствуйте, ilnar, Вы писали:

I>одну реализацию генетического алгоритма на С#, хорошую по предоставляемым параметрам управления, видел на www.codeproject.com — может взять, посмотреть. там есть много вариантов для различных задач.

I>но конечно шарп не будет лучше си при том же алгоритме и схеме реализации.

Эт почему же?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.