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

J>>Какого полинома? Простое число — это когда перемножаются 2 простых числа.

AJD>
AJD>Мне кажеться это будет совсем не простое число

Ну да
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[11]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 29.05.04 15:11
Оценка:
Здравствуйте, henson, Вы писали:

H>Гыгыгыг, простое — это как раз когда никакими перемножениями невозможно его получить. Т.е. делится на 1 и на само себя, например 3, 7 и т.д.


... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[10]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 29.05.04 15:11
Оценка:
Здравствуйте, WolfHound, Вы писали:

H>>Как чего? Приложений, тут же речь об этом.

WH>Каких приложений?

Хочется верить, что работающих. Хотя к чему ты клонишь я понял
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[11]: .NET и генетические алгоритмы
От: WolfHound  
Дата: 29.05.04 16:10
Оценка:
Здравствуйте, Jenyay, Вы писали:

J>Хочется верить, что работающих. Хотя к чему ты клонишь я понял

К тому что приложение-приложению рознь. И если все сводится например к рисованию форм то тут ВинФормс по сравнению с МФЦ рулит однозначно.
Однако есть приложения где С++ со своими автоматическими деструкторами и шаблонами начинает рулить. А есть приложения которые на .НЕТ вобще не напишешь... ну ни как он в требования тз не вписывается... толстый больно.
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 29.05.04 17:13
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


J>>Хочется верить, что работающих. Хотя к чему ты клонишь я понял

WH>К тому что приложение-приложению рознь. И если все сводится например к рисованию форм то тут ВинФормс по сравнению с МФЦ рулит однозначно.
WH>Однако есть приложения где С++ со своими автоматическими деструкторами и шаблонами начинает рулить. А есть приложения которые на .НЕТ вобще не напишешь... ну ни как он в требования тз не вписывается... толстый больно.

Тут идет обсуждение программы с генетическим алгоритмом. Примерно представляю суть и объем. Сравнил с аналогичным по трудоемкости приложением.
Re[5]: .NET и генетические алгоритмы
От: lextasy Украина www.mira-tech.com.ua
Дата: 30.05.04 09:27
Оценка:
Здравствуйте, henson, Вы писали:

H>>>Но разработка будет быстрей.

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

А вот посмотрим на C++:

1) Мощнейшая объектная модель + STL = C# отдыхает.
2) Грамотное использование класса памяти auto = сборщик мусора .Net тоже отдыхает .
3) Огромное количество великолепных инструментов отладки и профилирования (взять хотя бы продукты компании NuMega) + полностью детерминированная логика выполнения программы (никаких отложенных на неопределенный срок вызовов деструкторов и т.п.) — .Net снова может расслабиться .

По-моему, на C++ эта задача быстрее решается, причем результат будет более качественным. В самом Микрософте такую задачу вряд ли бы под .Net стали решать.
Re[6]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 30.05.04 09:43
Оценка:
Здравствуйте, lextasy, Вы писали:

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


H>>>>Но разработка будет быстрей.

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

L>А вот посмотрим на C++:


L>1) Мощнейшая объектная модель + STL = C# отдыхает.

Почему? Если брать сам язык, то там все относительно нормально. Но когда дело касается взаимодействия с системой, то например С++ <-> WinAPI вообще не лезет никуда, одни преобразования туда-обратно, типов целая куча, брррр

L>2) Грамотное использование класса памяти auto = сборщик мусора .Net тоже отдыхает .

Net работает, а программист отдыхает, потому-что там этого вообще не нужно

L>3) Огромное количество великолепных инструментов отладки и профилирования (взять хотя бы продукты компании NuMega) + полностью

детерминированная логика выполнения программы (никаких отложенных на неопределенный срок вызовов деструкторов и т.п.) — .Net снова может расслабиться .
Если говорить о вычислительных задачах, то основные проблемы с памятью, а в Net их практически нет

L>По-моему, на C++ эта задача быстрее решается, причем результат будет более качественным. В самом Микрософте такую задачу вряд ли бы под .Net стали решать.

Если Вы лет 5 программировали под C++ и лучше его знаете, чем другие языки, то для Вас проще использовать C++. Если начинать с нуля, то по-моему IMHO лучше C#
Re[7]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 30.05.04 11:33
Оценка:
Здравствуйте, henson, Вы писали:

L>>3) Огромное количество великолепных инструментов отладки и профилирования (взять хотя бы продукты компании NuMega) + полностью

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

Кстати, а в C# можно как-нибудь работать с типом double на уровне битов?

L>>По-моему, на C++ эта задача быстрее решается, причем результат будет более качественным. В самом Микрософте такую задачу вряд ли бы под .Net стали решать.

H>Если Вы лет 5 программировали под C++ и лучше его знаете, чем другие языки, то для Вас проще использовать C++. Если начинать с нуля, то по-моему IMHO лучше C#

Я все всемя на плюсах писал, но вот интересно и на C# попробовать. На нем ничего крупного не делал.
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[8]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 30.05.04 14:06
Оценка:
J>Кстати, а в C# можно как-нибудь работать с типом double на уровне битов?

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

J>>Кстати, а в C# можно как-нибудь работать с типом double на уровне битов?


J>Оказывается нельзя.

Это почему??? Да и вариантные структуры никто не отменял (FieldOffset)
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[10]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 30.05.04 16:42
Оценка:
Здравствуйте, Serginio1, Вы писали:

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


J>>>Кстати, а в C# можно как-нибудь работать с типом double на уровне битов?


J>>Оказывается нельзя.

S> Это почему???

Потому что в книге Inside .NET IL Assembler.chm (если кому, нужна могу выслать. Она 1,5 мега весит) написано, что

Bitwise Operations
Bitwise operations have no parameters and are defined for integer types only; floating-point, pointer, and object reference operands are not allowed. As a result, the related operand type compatibility list, shown in Table 10-4, is pretty simple.

Table 10-4 Acceptable Operand Types and Their Result Types in Bitwise Operations Operand Type
Operand Type
Result Type

int32
int32
int32

int32
native int
native int

int64
int64
int64


Three of the bitwise operations are binary, taking two operands from the stack and placing one result on the stack; and one is unary, taking one operand from the stack and placing one result on the stack:

and (0x5F) Bitwise AND (binary).

or (0x60) Bitwise OR (binary).

xor (0x61) Bitwise exclusive OR (binary).

not (0x66) Bitwise inversion (unary). This operation, rather than neg, is recommended for integer sign inversion because neg has a problem with the maximum negative numbers:


Shift Operations
Shift operations have no parameters and are defined for integer operands only. The shift operations are binary: they take from the stack the shift count and the value being shifted, in that order, and put the shifted value on the stack. The result always has the same type as the operand being shifted, which can be of any integer type. The type of the shift count cannot be int64 and is limited to int32 or native int.

shl (0x62) Shift left.

shr (0x63) Shift right.

shr.un (0x64) Shift right, treating the shifted value as unsigned.


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


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

Впринципе, мне это надо для скрещивания хромосом. Хотел просто чтобы у ребенка было бы часть бит (допустим первая) от 1-го родителя, а часть от 2-го. Нв С++ я бы сделал ассемблерными вставками. Может есть лучшее решение? Не хотелось бы использовать числа с фиксированной точкой. Есть еще идея отдельно скрещивать отдельно целые части (таким образом) как целые числа и дробные, умноженные перед этим на большое число (35000), чтобы тоже получилось целое число. Хотя таким образом до double не дотянуть, а до float можно.
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[3]: .NET и генетические алгоритмы
От: ilnar Россия  
Дата: 31.05.04 06:05
Оценка:
Здравствуйте, Jenyay, Вы писали:

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


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


J>Алгоритм будет тот же, а вот реализация другая, т.к. там юзал чужую dll-ку (GeneHunter), а хочется более объектно-ориентированно. Можно было бы сделать классовую (класную ) оболочку, но интересно все самому. Вообще у меня идея (фикс ) сделать общие классы (правда пока идеи на C++ с шаблонами), чтобы потом было бы легко подстраивать под любые объекты.


тут ты не первый и не последний. уже много всяких таких классов, для которых остается написать операции ген.алгоритма и фитнес функцию
Re[11]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 31.05.04 06:14
Оценка:
Здравствуйте, Jenyay, Вы писали:

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


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


J>>>>Кстати, а в C# можно как-нибудь работать с типом double на уровне битов?


J>>>Оказывается нельзя.

S>> Это почему???

J>Потому что в книге Inside .NET IL Assembler.chm (если кому, нужна могу выслать. Она 1,5 мега весит) написано, что

J>

J>Bitwise Operations
J>Bitwise operations have no parameters and are defined for integer types only; floating-point, pointer, and object reference operands are not allowed. As a result, the related operand type compatibility list, shown in Table 10-4, is pretty simple.

J>Table 10-4 Acceptable Operand Types and Their Result Types in Bitwise Operations Operand Type
J> Operand Type
J> Result Type

J>int32
J> int32
J> int32

J>int32
J> native int
J> native int

J>int64
J> int64
J> int64


J>Three of the bitwise operations are binary, taking two operands from the stack and placing one result on the stack; and one is unary, taking one operand from the stack and placing one result on the stack:

J>and (0x5F) Bitwise AND (binary).

J>or (0x60) Bitwise OR (binary).

J>xor (0x61) Bitwise exclusive OR (binary).

J>not (0x66) Bitwise inversion (unary). This operation, rather than neg, is recommended for integer sign inversion because neg has a problem with the maximum negative numbers:


J>Shift Operations
J>Shift operations have no parameters and are defined for integer operands only. The shift operations are binary: they take from the stack the shift count and the value being shifted, in that order, and put the shifted value on the stack. The result always has the same type as the operand being shifted, which can be of any integer type. The type of the shift count cannot be int64 and is limited to int32 or native int.

J>shl (0x62) Shift left.

J>shr (0x63) Shift right.

J>shr.un (0x64) Shift right, treating the shifted value as unsigned.


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


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


J>Впринципе, мне это надо для скрещивания хромосом. Хотел просто чтобы у ребенка было бы часть бит (допустим первая) от 1-го родителя, а часть от 2-го. Нв С++ я бы сделал ассемблерными вставками. Может есть лучшее решение? Не хотелось бы использовать числа с фиксированной точкой. Есть еще идея отдельно скрещивать отдельно целые части (таким образом) как целые числа и дробные, умноженные перед этим на большое число (35000), чтобы тоже получилось целое число. Хотя таким образом до double не дотянуть, а до float можно.



А почему целые не хотите использовать? Геном этот может иметь произвольную и довольно большую длину, зачем себя ограничивать?
Re[4]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 31.05.04 06:15
Оценка:
Здравствуйте, ilnar, Вы писали:

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


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


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


J>>Алгоритм будет тот же, а вот реализация другая, т.к. там юзал чужую dll-ку (GeneHunter), а хочется более объектно-ориентированно. Можно было бы сделать классовую (класную ) оболочку, но интересно все самому. Вообще у меня идея (фикс ) сделать общие классы (правда пока идеи на C++ с шаблонами), чтобы потом было бы легко подстраивать под любые объекты.


I>тут ты не первый и не последний. уже много всяких таких классов, для которых остается написать операции ген.алгоритма и фитнес функцию


Ну а Framework кто-нибудь может написать, чтобы целевую функцию только добавлять
Re[5]: .NET и генетические алгоритмы
От: ilnar Россия  
Дата: 31.05.04 06:34
Оценка:
Здравствуйте, henson, Вы писали:

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


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


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


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


J>>>Алгоритм будет тот же, а вот реализация другая, т.к. там юзал чужую dll-ку (GeneHunter), а хочется более объектно-ориентированно. Можно было бы сделать классовую (класную ) оболочку, но интересно все самому. Вообще у меня идея (фикс ) сделать общие классы (правда пока идеи на C++ с шаблонами), чтобы потом было бы легко подстраивать под любые объекты.


I>>тут ты не первый и не последний. уже много всяких таких классов, для которых остается написать операции ген.алгоритма и фитнес функцию


H>Ну а Framework кто-нибудь может написать, чтобы целевую функцию только добавлять


целевая функция не всегда одно единственное, что надо задавать.
удобно бывает задать выид хранения особи (не просто 0 1, как обычно предлагат) и специфические операции скрещивания и мутации для них.
я, например, для задачи развозки сделал специфическое представление особи в виде отдельных маршрутов и сделал для них скрещивание и мутацию
Re[6]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 31.05.04 06:45
Оценка:
Здравствуйте, ilnar, Вы писали:

I>целевая функция не всегда одно единственное, что надо задавать.

I>удобно бывает задать выид хранения особи (не просто 0 1, как обычно предлагат) и специфические операции скрещивания и мутации для них.
I>я, например, для задачи развозки сделал специфическое представление особи в виде отдельных маршрутов и сделал для них скрещивание и мутацию

Хотелось бы следать так, чтобы юзер не только задавал функцию, но и сами виды, которые отвечают за скрещивание (но стандартное скрещивание все-таки надо сделать, чтобы потом не писать). А готовое только популяция, в которую добавляют виды. Впринципе, я себе на бумаге набросал, как хочу сделать, могу сюда написать.
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[4]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 31.05.04 06:45
Оценка:
Здравствуйте, ilnar, Вы писали:

I>тут ты не первый и не последний. уже много всяких таких классов, для которых остается написать операции ген.алгоритма и фитнес функцию


Да я не спорю. Сам видел. Просто интересно самому.
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[12]: .NET и генетические алгоритмы
От: Jenyay http://jenyay.net
Дата: 31.05.04 06:45
Оценка:
Здравствуйте, henson, Вы писали:

H>А почему целые не хотите использовать? Геном этот может иметь произвольную и довольно большую длину, зачем себя ограничивать?


То есть? Каким способом? Просто число, которое считается само по себе должно быть не целым.
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re[13]: .NET и генетические алгоритмы
От: henson Россия http://www.njt-rails.com
Дата: 31.05.04 08:14
Оценка:
Здравствуйте, Jenyay, Вы писали:

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


H>>А почему целые не хотите использовать? Геном этот может иметь произвольную и довольно большую длину, зачем себя ограничивать?


J>То есть? Каким способом? Просто число, которое считается само по себе должно быть не целым.


Если Вы говорите о битовых операциях, то я предположил, что речь о геноме, который по определенным правилом скрещивается с другим(и). Перед этим каждый геном прогоняется на оценочной функции. Могут быть и более сложные модели. Но в любом случае геном — это либо 1/0, либо коэффициент (целый или вещественный). Какую модель Вы хотите заложить? Для вещественных коэффициент возможно нет смысла делать операции с битами, а лучше перейти к какой то функции, x(1)i+1=(x(1)i+x(2)i)/2 в конце концов
Re[11]: .NET и генетические алгоритмы
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 31.05.04 10:47
Оценка: 10 (1)
Здравствуйте, Jenyay, Вы писали:


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


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

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

public struct DoubleOrUInt64
{
[FieldOffset(0)]
UInt64 IntValue;

[FieldOffset(0)]
double DoubleValue;

}

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

Правда жалко, что Extended забыли.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.