У меня проблема с оптимизацией, когда я пытаюсь минимизировать стоимость проекта, которая обычно оценивается в 100–5 млрд долларов. Я использую доступную часть COBYLA пакета Scipy в Python 2.7.
newsol = minimize(ObjectiveFunction,X0,bounds=Bounds,constraints = Constraints,method='COBYLA')
Я сформулировал 5 уравнений несвязанности в рамках COBYLA. Если они нарушаются, я добавляю штраф в размере 1 триллиона долларов к стоимости проекта.
# check constraints - for each constraint violated add a large penalty ####
for constraint in Constraints:
constraintValue = constraint["fun"](newsol.x)
numViolations = np.sum(constraintValue < 0 )
if(numViolations):
penaltyCost = 1e12
penaltyMult = 1.0
if("penaltyMultiplier" in constraint):
penaltyMult = constraint["penaltyMultiplier"](newsol.x)
OptimizedProjectCost += penaltyMult*numViolations*penaltyCost
Мой вопрос: является ли это значение штрафа вне допустимого диапазона с учетом порядка предоставленных затрат по проекту. Есть ли влияние этого значения на оптимизацию конвергенции?