首页 > 解决方案 > 惩罚成本值在优化问题中的影响

问题描述

我有一个优化问题,我试图最小化项目成本,通常价值 1 亿到 50 亿美元。我正在使用 Python 2.7 中 Scipy 包的 COBYLA 可用部分。

      newsol = minimize(ObjectiveFunction,X0,bounds=Bounds,constraints = Constraints,method='COBYLA') 

我在 COBYLA 中制定了 5 个无约束方程。如果违反了,我会在项目成本中增加 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

我的问题:考虑到所提供的项目成本的数量级,这个惩罚值是否超出范围。这个值对优化收敛有影响吗?

标签: scipymathematical-optimizationlinear-programmingconstraint-programmingcheck-constraints

解决方案


推荐阅读