В некоторых алгоритмах оптимизации выбор между double
и float
равен , а не , что больше зависит от места, чем от скорости.Например, с методами штрафа или барьера, которые используются для методов внутренней точки в нелинейной оптимизации, a float
имеет недостаточную точность по сравнению с double
, а использование float
s в алгоритме приведет к мусору.По этой причине методы штрафов и барьеров не использовались в 1960-х годах, но были открыты позже с появлением типа данных двойной точности.(Подробнее об этих методах см. Нелинейное программирование: методы последовательной неограниченной минимизации (Классика в прикладной математике) , автор Fiacco и McCormick.)
Еще одним соображением является обусловленность лежащих в основе линейных систем, решаемыхво многих алгоритмах оптимизации.Если линейные системы, которые вы решаете в чем-то вроде итерации Ньютона, достаточно плохо обусловлены, вы не сможете получить точное решение для этих систем.
Только если потеря точности не поставит под угрозу вашуцифры, если вы подумаете о замене double
s на float
s;даже если из-за нехватки места вам это нужно, вы должны убедиться, что точность ваших числовых результатов не пострадает.После того, как будет обеспечена достаточная точность для задач, над которыми вы работаете, вы можете приступить к оптимизации пространства и производительности.Вы можете использовать набор тестов CUTEr для проверки ваших процедур оптимизации.