PenaltySequence

The penalty-sequence rule for a memoryful penalty (Park and Kim 2015). Given the penalty value carried from a solution's previous visit and the solution's accumulated standardized measure of violation, it produces the penalty value for the current visit. Any implementation should satisfy Park and Kim's Condition 1 (the sequence converges to 0 for a feasible constraint and diverges to infinity for an infeasible constraint) so the penalized objective converges.

This is the seam that keeps alternative sequences — Park and Kim's fuller PS1/PS2 and the Han, Kim, and Park (2021) improved sequence PS2+ — from being locked out: a new sequence is a new implementation of this interface and requires no change to the penalty engine.

Inheritors

Properties

Link copied to clipboard
abstract val initialLambda: Double

The initial penalty value used on a solution's first visit; must be positive.

Functions

Link copied to clipboard
abstract fun update(priorLambda: Double, standardizedMeasure: Double, visitCount: Int, iteration: Int): Double

The penalty value for the current visit.