Algorithm Optimisation Championship. - page 60

 
Yuri Evseenkov:
I.e. it is possible to pass a null array and find out the value of FF if all parameters are equal to zero.

Does 0.0 fall within the range[-10.0;10.0]? - Yes, it does. So you can find out FF value with parameters from array filled with values 0.0.

Actually, nobody forbids you to feed absolutely any numbers into FF, but you'll get an adequate answer only in the range[-10.0;10.0], while beyond the range the numbers will be cut off to these limits. If you do not take this into account, then your algorithm can think that he got on a smooth green surface, because the value of FF will always be given the minimum (any, but not changing) for FF, and infinitely wander in a vast expanse of real numbers (until his process will not stop the checker).

 
Andrey Dik:

Does 0.0 fall within the range[-10.0;10.0]? - Yes, it does. So you can find out FF value with parameters from array filled with values 0.0.

In general, no one forbids you to feed absolutely any numbers into FF, but you will get an adequate answer only in the range[-10.0;10.0], while beyond the range the numbers will be cut off to these bounds. If you do not take this into account, then your algorithm can think that got on a smooth grizontalnuyu surface, because the value of FF will always be issued a minimum (any, but do not change) for FF, and infinitely wander in the vast expanses of real numbers (until his process will not stop the checker).

Got it. Thanks. I plan to make the first 4 calls with arrays filled with -10.0, 0.0, 10.0 and 2.7 each. I would like to 2.718 for my roaches but step 0.1. You can't do that.
 
Dmitry Fedoseev:

OK, I'm off, stay do-mi, in your quiet do-mi world. Cross me off the panel.

I'll explain, of course, to everyone here with armour balls. In the second version of the script, you do not need to import FF(), because the participantfunction is alsoimported there, so FF() will not be visible in the participant function. The FF() function must be imported in the member library. Even an example of such trivial bullshit is presented incorrectly. I know, I know, you'll say it's clear. But if it's so clear, why isn't the correct example provided? With a look like I'm an idiot here.

Bye-bye.

Dim, you should at least have checked the operation of export functions before competing from the podium. I, for example, before publishing my prototype, naturally checked its capability to work. And of course it works, i.e. no custom library loads its own instance of a function.

The MT runtime environment generally works differently than you think. Only one library instance with only one instance of variables is loaded into the address space of the checking script, i.e. everyone will use only one specific ff with its specific parameters. If you don't believe me, download my example and check it out.

 
Vasiliy Sokolov:

Dimitri just didn't see that there are two algorithm library options given for the member too. And the second one has FF function import (as he says). And the first one doesn't.

 
Vasiliy Sokolov:

Dim, at least you should have checked the work of the export functions before you make a big pronouncement from the podium. Otherwise it turns out from a series of "I have not watched, but I judge" I, for example, before publishing the prototype, of course, checked its performance. And of course it works, i.e. no custom library loads its own instance of a function.

The MT runtime environment generally works differently than you think. Only one library instance with only one instance of variables is loaded into the address space of the checking script, i.e. everyone will use only one specific ff with its specific parameters. If you don't believe me, download my example and check it out.

I've already said about one instance for double import (couldn't find my post, there are a lot of them here). Yes, that's why it's possible to control FF calls by member algorithm. If the script and the algorithm called every single instance of the FF then the championship wouldn't happen, because it would be impossible to check whether the algorithm actually calls the FF as many times as it says it does.

...

Although, you could probably get by with one single import in the algorithm, I don't think it's possible to run *.ex5, unload, and run again, to reset the counter (clever contestant plan), but then you would need to have the contestant call the entire stat himself and other features would have to be considered by contestants to output results, and that is an additional complexity for contestants. It is easier on the side of the script to request all necessary information on whether or not they are using the FF.

But still, in any case, double importing in our case cannot be considered a mistake.

 

Andrey Dik:

You don't need to know this. Stay within the range [-10.0;10.0] and you won't have a problem.


Does 0.0 fall within the range[-10.0;10.0]? - Yes, it does. So you can get the value of FF with parameters from the array filled with 0.0 values.

Actually, nobody forbids you to feed absolutely any numbers into FF, but you'll get an adequate answer only in the range[-10.0;10.0], while beyond the range the numbers will be cut off to these limits. If you do not take this into account, then your algorithm can think that he got on a smooth green surface, because the value of FF will always be given the minimum (any, but do not change) for FF, and endlessly wander in immense dimensions of real numbers (until his process will not stop the checker).

In order not to bother with clipping the bounds and not to limit the algorithm, we can add one line to the FF:

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

In order not to bother with clipping bounds and not to limit the algorithm, you can add a single line to the FF:

whyreturn(0.0);?

or more precisely, why 0.0?

 
Andrey Dik:

whyreturn(0.0);?

or more precisely, why 0.0?

If we are only looking for the maximum, then the correct answer is

return(-DBL_MAX);
 
Sergey Chalyshev:

If we are only looking for the maximum, then the correct

The point is that at design stage it is possible to get "surfaces" with discontinuities, with peaks to infinity (down or up), but FF should return correct value at output, so all boundary conditions are already taken into account in FF, what would not cause a crash through FF's fault.

That's why I think it's better to cut parameters to acceptable limits and calculate FF with such parameters and output what you get than to knowingly output -DBL_MAX at incorrect one parameter.

Participants know limitations of parameters and must observe them, otherwise there are a lot of questions which are difficult to answer in each particular case of algorithms. As it is, we put all algorithms on a level playing field.

hmm. .... will be bombarded with questions "how so at the design stage?!! you said that nobody will know about FF!!!".... for those who are going to ask such a question - read the thread first.

 
Why are the range numbers fractional? Instead of -10.0 to 10 in increments of 0.1, you can go from -100 to 100, in increments of 1.