1. На сервере WinServer2003 x64, соответственно и TSLab x64.
2. На сервере 32 ядра, согласно вашему-же коду
public Optimization(IOptimizationCallback callback, int threads, IDictionary<string, OptPropertyParam> optParams, long iterations, long optCounter, long optStep)
{
this.m_callback = callback;
this.m_optParams = optParams;
this.m_optCounter = optCounter;
this.m_optStep = optStep;
this.m_realCounter = this.m_iterations = iterations;
[b]if (threads <= 0)
{
int processorCount = Environment.ProcessorCount;
s_log.Info(string.Format("Found {0} processors.", processorCount));
threads = processorCount + 1;
}[/b]
this.m_semaphore = new Semaphore(threads, threads);
}
Что я поставлю 33, что 0 результат будет одинаковый, программа сама способна определять сколько у меня ядер.
В настройках программы под скрипты выделено 10 Гб из существующих 64, я проверял, что 5Гб, что 10Гб погоды сильно не делают.
3. До этого все время разделял оптимизацию на группы, но столкнулся с такой ситуацией, когда в процессе оптимизации первой группы и статически заданными параметрами второй группы, результаты оптимизации (именно значения параметров первой группы) сильно отличаются, если начать оптимизацию первой группы с другими параметрами второй. Запутано, но если коротко, они сильно взаимосвязаны, поэтому решил прогнать один раз все, чтобы хоть примерно знать оптимальные параметры.
4. Если будет хоть пример, как запустить хоть один проход оптимизации скажем в другом консольном приложении, я уже сам докурю, как написать распределенную оптимизацию на куче клиентских машин и сливом результатов, скажем в базу для последующей работы с ними.