беру помощь зала) - страница 7

 

К сожалению, я не математик, не совсем понял то, что вы написали в начале этой страницы. Если говорить о моей задаче, то есть набор из семи векторов, нужно найти все возможные комбинации элементов этих векторов, дающих в сумме число 256.

 
А хоть кто-нибудь задумался, зачем топикстартеру и Виталию решение этой задачи - причем именно со всеми вариантами?
 
Зачем оно ТС я не знаю. Мне оно затем, что попросили условие задачи сформулировать, плюс мне интересно как при помощи ГА можно решить такую сложную задачу.
 
Mathemat:
А хоть кто-нибудь задумался, зачем топикстартеру и Виталию решение этой задачи - причем именно со всеми вариантами?

Я задумался. И высказывался - что практического смысла не вижу.

vitali_yv:

Зачем оно ТС не знаю. Мне оно надо потому, что попросили условия задачи сформулировать и мне интересно как при помощи ГА можно решить такую сложную задачу.

Ой. А я, грешным делом, подумал что Вы топикстартер. :[

Тогда всё отменяется. Ждем таинственного создателя загадочно-ненужной задачи.

 
Ну зачем отменяется? Давайте я специально для вас тему создам со своим условием, если вы хотите решать её только если я ТС )
 
vitali_yv:
Ну зачем отменяется? Давайте я специально для вас тему создам со своим условием, если вы хотите решать её только если я ТС )

Не стоит новую ветку заводить. Для этого уже есть ветка Алексея. Все перечисленные здесь варианты задачи решаются с помощью ГА.

Всё же, хочется услышать начальника транспортного цеха.

 
Ну вот, а обещали золотые горы.
 
vitali_yv:
Ну вот, а обещали золотые горы.
Вечером будет представлено решение.
 
vitali_yv:
A =  11    12    16    19    23    25    26    27    29    34    37    38    43    46    48    58    59    62    64    73
B =   2     3     7     9    11    16    18    31    32    33    41    42    43    47    53    54    60    61    64    81
C =   7     9    15    22    24    25    27    28    29    34    42    44    46    52    53    64    66    67    68    70
D =   1     5     4    15    18    19    24    32    34    39    42    46    47    48    49    60    61    68    72    77
E =   9    12    19    21    24    27    29    35    43    45    46    55    58    61    64    65    66    68    71    82
F =   6    11    12    22    26    32    42    48    52    54    58    61    64    65    72    83    84    87    94    97
G =   4     9    14    15    19    26    35    37    39    40    45    48    52    53    59    63    67    70    74    76

A + B + C + D + E + F + G = 256

Ну давайте я вам сделаю задание. Неизвестно, повторяются ли значения в переменных, допустим что да. Надо найти все варианты.Задача упрощена - 7 переменных, 20 вариантов.

Ну что ж, задача решена. Один из вариантов решения такой:

64+11+9+24+24+72+52=256


Обещанные исходники для решения этой задачи и ей подобных прилагаю.

Есть только один нюанс. Алгоритм разрабатывался для задач, в которых переменные строго уникальны и перестановка их в выражении не допустима, например для такой функции:

f(x,y)=x*x+y.

Совершенно понятно, что значения x и y поменять местами нельзя, иначе изменится значение функции. Поэтому, в алгоритме признаются совершенно одинаковыми только хромосомы типа

3,9,8,7,4,5,3 и 3,9,8,7,4,5,3. Если сравниваются хромосомы вида 3,9,8,7,4,5,3 и 3,8,9,7,4,5,3 то считается, что это совершенно разные хромосомы.

Поэтому мой алгоритм не пригоден для поиска всех решений вышеозвученных типов задач, в которых "от перестановки мест слагаемых сумма не меняется".

По этой причине после однократного запуска алгоритма возможно получить только один вариант решения, а не все. Одно из решений я привел выше.

Для того, что бы сделать алгоритм пригодным для таких типов задач необходимо ввести опционально включаемое правило "от перестановки мест слагаемых сумма не меняется" и хромосомы вида 3,9,8,7,4,5,3 и 3,8,9,7,4,5,3 считать дубликатами.


Исходники написаны на MQL5.


PS Про какие там тысячелетия говорили, необходимые для решения задачи? :)

Файлы:
 
Очень интересно, жаль, что не все варианты. Сложно сравнивать. Респект.
Причина обращения: