I just finished writing a system for distributing the fitness evaluation of a genetic programming system using the idle time (PM-DGP). The biggest bottleneck is the bandwidth required to send the programs to the clients, for the engineering problems we use it for, this is not a problem. They all have a sufficiently high evaluation time/program size ratio.
Distributing the breeding process (using the deme or island approach) requires computers of comparable and constand speed. It is difficult (I didn't succeed) to find a way to effectively use idle time while evolving and evaluating local populations occasionally exchanging genetic material. When slower machines fall behind they are no longer able to effectively contibute to the effort.
Error handling sucks because it is a pain to program and test. To do it proper in most API's requires heaps of boilerplate code that will increase executable size and also needs to be tested. All those return values that need to be checked. If I know smothing went wrong in the layer bolow me, I often have no proper error message to present to the user. I'm not talking about responding to wrong user input here, if there is an error in a config file any program should and could give a proper error. It is when, as a programmer, you are not in charge of the interface when things get hard.
Error handling is one of those areas where many programmers have to reinvent the wheel, but hey, we are open source, we can share and can do better! I would be great to have a standard error handling framework that converts from return -1 and use GetLastError to raise an exception. Set standards for error reporting to include, description, probable cause, recommended action, severity etc.
I just finished writing a system for distributing the fitness evaluation of a genetic programming system using the idle time (PM-DGP). The biggest bottleneck is the bandwidth required to send the programs to the clients, for the engineering problems we use it for, this is not a problem. They all have a sufficiently high evaluation time/program size ratio.
Distributing the breeding process (using the deme or island approach) requires computers of comparable and constand speed. It is difficult (I didn't succeed) to find a way to effectively use idle time while evolving and evaluating local populations occasionally exchanging genetic material. When slower machines fall behind they are no longer able to effectively contibute to the effort.
Error handling sucks because it is a pain to program and test. To do it proper in most API's requires heaps of boilerplate code that will increase executable size and also needs to be tested. All those return values that need to be checked. If I know smothing went wrong in the layer bolow me, I often have no proper error message to present to the user. I'm not talking about responding to wrong user input here, if there is an error in a config file any program should and could give a proper error. It is when, as a programmer, you are not in charge of the interface when things get hard.
Error handling is one of those areas where many programmers have to reinvent the wheel, but hey, we are open source, we can share and can do better! I would be great to have a standard error handling framework that converts from return -1 and use GetLastError to raise an exception. Set standards for error reporting to include, description, probable cause, recommended action, severity etc.
Did anyone find a reference to this vurnability on the MS site?