Чемпионат Алгоритмов Оптимизации. - страница 60

 
Yuri Evseenkov:
Т.е можно передать нулевой массив и узнать значение ФФ при равенстве всех параметров нулю.

0.0 попадает в диапазон [-10.0;10.0]? - да, попадает. Значит можно узнать значение ФФ с параметрами из массива заполненного значениями 0.0.

Вообще, никто не запрещает Вам подавать абсолютно любые числа в ФФ, но адекватный ответ получите только в диапазоне [-10.0;10.0], а за диапазоном числа обрежутся до этих границ. Если не учитывать это, то Ваш алгоритм может подумать, что попал на ровную гризонталную поверхность, ведь значения ФФ будут выдаваться всегда минимальные (любые, но не изменяющиеся) для ФФ, и бесконечно блуждать на необъятных просторах вещественных чисел (пока его процесс не остановит проверяющий). 

 
Andrey Dik:

0.0 попадает в диапазон [-10.0;10.0]? - да, попадает. Значит можно узнать значение ФФ с параметрами из массива заполненного значениями 0.0.

Вообще, никто не запрещает Вам подавать абсолютно любые числа в ФФ, но адекватный ответ получите только в диапазоне [-10.0;10.0], а за диапазоном числа обрежутся до этих границ. Если не учитывать это, то Ваш алгоритм может подумать, что попал на ровную гризонталную поверхность, ведь значения ФФ будут выдаваться всегда минимальные (любые, но не изменяющиеся) для ФФ, и бесконечно блуждать на необъятных просторах вещественных чисел (пока его процесс не остановит проверяющий). 

Понял. Спасибо. Первые 4 вызова планирую с массивами заполненными -10.0, 0.0, 10.0 и 2.7 каждый . Хотелось бы 2.718 для своих тараканов но шаг 0.1 . Ну нельзя так нельзя.
 
Dmitry Fedoseev:

Лано, я пошел, оставайтесь до-ми, в своем тихом до-ом мирочке. Из участников вычеркните.  

Объясню конечно, всем кто тут с бронебойными шарами. В скрипте по второму варианту ненужно импортировать FF(), потому-что там же импортируется функция участника и при таком импорте функция FF() не будет видна в функции участника. Функцию FF() надо импортировать в библиотеке участника. Даже пример такой банальной фигни представлен неправильно. Знаю, знаю, скажете, Что и так понятно. Но если так все понятно, что же не предоставлен правильны пример. Еще с таким видом, что типа я тут идиот.

бай бай

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

Исполняющая среда MT вообще работает по-другому чем ты думаешь. В адресное пространство проверяющего скрипта загружается только один экземпляр библиотеки с только одним экземпляром переменных, т.е. все будут использовать только одну конкретную фф с ее конкретными параметрами. Если не веришь - скачай мой пример, да проверь.

 
Vasiliy Sokolov:

Дмитрий просто не увидел что вариантов библиотеки алгоритмов для участника приведено тоже два. И во втором есть импорт FF функции (как он и говорит). А в первом нет.

 
Vasiliy Sokolov:

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

Исполняющая среда MT вообще работает по-другому чем ты думаешь. В адресное пространство проверяющего скрипта загружается только один экземпляр библиотеки с только одним экземпляром переменных, т.е. все будут использовать только одну конкретную фф с ее конкретными параметрами. Если не веришь - скачай мой пример, да проверь.

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

...

Хотя, наверное можно обойтись и одним единственным импортом в алгоритме, я думаю нет возможности запуска *.ex5, выгрузки, и снова запуска, для сброса счетчика (хитрый план участника), но тогда нужно что бы участник сам вызывал всю стату и прочие возможности пришлось бы учитывать участникам для вывода результатов, а это дополнительные сложности для участников. Проще на стороне скрипта запросить всю необходимую информацию о том, в рамках дозволенного ли юзали ФФ.

Но всё же, при любом раскладе, двойной импорт в нашем случае нельзя считать ошибкой. 

 

Andrey Dik:

Вам не нужно это знать. Не выходите за диапазон [-10.0;10.0] и не будет проблем. 


0.0 попадает в диапазон [-10.0;10.0]? - да, попадает. Значит можно узнать значение ФФ с параметрами из массива заполненного значениями 0.0.

Вообще, никто не запрещает Вам подавать абсолютно любые числа в ФФ, но адекватный ответ получите только в диапазоне [-10.0;10.0], а за диапазоном числа обрежутся до этих границ. Если не учитывать это, то Ваш алгоритм может подумать, что попал на ровную гризонталную поверхность, ведь значения ФФ будут выдаваться всегда минимальные (любые, но не изменяющиеся) для ФФ, и бесконечно блуждать на необъятных просторах вещественных чисел (пока его процесс не остановит проверяющий). 

 Чтобы не заморачиваться с обрезанием границ и не ограничивать алгоритм, можно добавить в ФФ одну строчку:

if(array[ArrayMaximum(array)]>10.0 || array[ArrayMinimum(array)]<-10.0) return(0.0);
 
Sergey Chalyshev:

 Чтобы не заморачиваться с обрезанием границ и не ограничивать алгоритм, можно добавить в ФФ одну строчку:

почему return(0.0);?

а точнее - почему 0.0?

 
Andrey Dik:

почему return(0.0);?

а точнее - почему 0.0?

Если ищем только максимум, тогда правильнее будет 

return(-DBL_MAX);
 
Sergey Chalyshev:

Если ищем только максимум, тогда правильнее будет 

дело в том, что на этапе проектирования ФФ можно получить "поверхности" с разрывами, с пиками в бесконечность (вниз или вверх) но ФФ должна возвращать корректное значение на выходе, поэтому все граничные условия уже учтены в ФФ, что бы не получилось креша по вине ФФ.

Поэтому я считаю что лучше обрезать параметры до допустимых границ параметров и посчитать ФФ с такими параметрами и выдать то что получится, чем заведомо выдавать -DBL_MAX при некорректном каком то одном параметре.

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

 

зы. ....теперь завалят вопросами "как так на этапе проектирования?!! ты же говорил что никто не будет знать о ФФ!!!"....  для тех, кто соберётся задать такой вопрос - читайте ветку сначала. 

 
Почему числа диапазона дробные? Вместо от -10.0 до 10 с шагом 0.1, можно от -100 до 100, с шагом 1.