BoundControl

State의 Bound와 관련된 기능을 담당하는 컨트롤

IsUsePrimalBound

public override bool IsUsePrimalBound()

정의

State에서 Primal Bound를 구하는 로직의 적용 여부를 설정합니다.

반환

TypeDescriptionDefault

Boolean

True: Primal Bound를 구하는 로직을 적용합니다. False: Primal Bound를 구하는 로직을 적용하지 않습니다.

True

예제 (Default Logic)

public override bool IsUsePrimalBound()
{
    return true;
}

IsUseDualBound

public override bool IsUseDualBound()

정의

State에서 Dual Bound를 구하는 로직의 적용 여부를 설정합니다.

반환

TypeDescriptionDefault

Boolean

True: Dual Bound를 구하는 로직을 적용합니다. False: Dual Bound를 구하는 로직을 적용하지 않습니다.

True

예제 (Default Logic)

public override bool IsUseDualBound()
{
    return true;
}

GetPruneTolerance

public override double GetPruneTolerance()

정의

State를 최적성을 잃지 않고 Prune할 수 있는지 여부를 판단할 때 사용되는 Tolerance 입니다.

반환

TypeDescriptionDefault

Double

Prune Tolerance 입니다.

0.0001

예제 (Default Logic)

public override double GetPruneTolerance()
{
    return Math.Pow(10, -4);
}

GetPrimalBoundStopStageIndex

public override int GetPrimalBoundStopStageIndex()

정의

Primal Bound 구하는 로직 적용을 중단하는 Stage의 Index를 설정합니다. 즉, 해당 Stage 부터는 Primal Bound를 구하지 않습니다.

반환

TypeDescriptionDefault

Int

기준 Stage의 Index 입니다.

2147483647

예제 (Default Logic)

public override int GetPrimalBoundStopStageIndex()
{
    return Int32.MaxValue;
}

GetPrimalBoundStopRelativeGap

public override double GetPrimalBoundStopRelativeGap()

정의

Primal Bound 구하는 로직 적용을 중단하는 기준이 되는 Relative Duality Gap을 설정합니다. 즉, 해당 Relative Duality Gap을 만족하는 Stage 부터는 Primal Bound를 구하지 않습니다.

Relative Duality Gap = |Best Dual Bound - Best Primal Bound| / Best Dual Bound

반환

TypeDescriptionDefault

Double

기준 Relative Duality Gap 값 입니다.

0

예제 (Default Logic)

public override double GetPrimalBoundStopRelativeGap() 
{
    return 0;
}

GetDualBoundStopStageIndex

public override int GetDualBoundStopStageIndex()

정의

Dual Bound 구하는 로직 적용을 중단하는 Stage의 Index를 설정합니다. 즉, 해당 Stage 부터는 Dual Bound를 구하지 않습니다.

반환

TypeDescriptionDefault

Int

기준 Stage의 Index 입니다.

2147483647

예제 (Default Logic)

public override int GetPrimalBoundStopStageIndex()
{
    return Int32.MaxValue;
}

GetDualBoundStopRelativeGap

public override double GetDualBoundStopRelativeGap()

정의

Dual Bound 구하는 로직 적용을 중단하는 기준이 되는 Relative Duality Gap을 설정합니다. 즉, 해당 Relative Duality Gap을 만족하는 Stage 부터는 Dual Bound를 구하지 않습니다.

반환

TypeDescriptionDefault

Double

기준 Relative Duality Gap 값 입니다.

0

예제 (Default Logic)

public override double GetDualBoundStopRelativeGap()
{
    return 0;
}

GetInitialPrimalBound

 public override double GetInitialPrimalBound(ObjectiveFunctionType objectiveFunctionType)

정의

Initial Primal Bound 값을 반환합니다.

매개 변수

TypeDescription

ObjectiveFunctionType

문제의 목적함수 타입입니다.

반환

TypeDescriptionDefault

Double

Initial Primal Bound 값 입니다.

예제 (Default Logic)

public override double GetInitialPrimalBound(ObjectiveFunctionType objectiveFunctionType)
{
    double primalBound = 0;

    if (objectiveFunctionType == ObjectiveFunctionType.Maximize)
    {
        primalBound = Double.NegativeInfinity;
    }
    else if (objectiveFunctionType == ObjectiveFunctionType.Minimize)
    {
        primalBound = Double.PositiveInfinity;
    }

    return primalBound;
}

GetInitialDualBound

public override double GetInitialDualBound(ObjectiveFunctionType objectiveFunctionType)

정의

Initial Dual Bound 값을 반환합니다.

매개 변수

TypeDescription

ObjectiveFunctionType

문제의 목적함수 타입입니다.

반환

TypeDescriptionDefault

Double

Initial Dual Bound 값 입니다.

예제 (Default Logic)

public virtual double GetInitialDualBound(ObjectiveFunctionType objectiveFunctionType)
{
    double dualBound = 0;

    if (objectiveFunctionType == ObjectiveFunctionType.Maximize)
    {
        dualBound = Double.PositiveInfinity;
    }
    else if (objectiveFunctionType == ObjectiveFunctionType.Minimize)
    {
        dualBound = Double.NegativeInfinity;
    }

    return dualBound;
}

UseAbsoluteOptimalityGap

public virtual bool UseAbsoluteOptimalityGap()

정의

Absolute Duality Gap (Primal Bound와 Dual Bound의 절댓값 차이)를 기준으로 탐색을 종료할지 여부입니다. 즉, Absolute Duality Gap이 설정값 이하일 경우 탐색을 종료합니다.

Absolute Duality Gap = |Best Dual Bound - Best Primal Bound|

반환

TypeDescriptionDefault

Boolean

True: 적용 False: 미적용 (RelativeOptimalityGap 적용)

False

반환값이 False일 경우, 탐색 종료 조건으로 Relative Duality Gap이 적용됩니다. (해당 컨트롤 참조)

예제 (Default Logic)

public virtual bool UseAbsoluteOptimalityGap()
{
    return false;
}

GetRelativeOptimalityGap

public virtual double GetRelativeOptimalityGap()

정의

탐색을 중단하는 기준이 되는 Relative Duality Gap을 설정합니다. 즉, Relative Duality Gap 값이 설정값 이하일 경우 탐색을 종료합니다.

Relative Duality Gap = |Best Dual Bound - Best Primal Bound| / Best Dual Bound

반환

TypeDescriptionDefault

Double

탐색 종료 조건이 되는 Relative Duality Gap 입니다.

0

예제 (Default Logic)

public virtual double GetRelativeOptimalityGap()
{
    return 0;
}

GetAbsoluteOptimalityGap

public virtual double GetAbsoluteOptimalityGap()

정의

탐색을 중단하는 기준이 되는 Absolute Duality Gap을 설정합니다. 즉, Absolute Duality Gap 값이 설정값 이하일 경우 탐색을 종료합니다.

반환

TypeDescriptionDefault

Double

탐색 종료 조건이 되는 Absolute Duality Gap 입니다.

0

예제 (Default Logic)

public virtual double GetAbsoluteOptimalityGap()
{
    return 0;
}

GetDualBound

public virtual double GetDualBound(State state)

정의

주어진 State의 Dual Bound를 반환합니다.

매개 변수

TypeDescription

State

Dual Bound를 구할 대상 State 입니다.

반환

TypeDescriptionDefault

Double

State의 Dual Bound 입니다.

0

예제

public override double GetDualBound(State state)
{
    double bound = 0;
    CRPState crpState = state as CRPState;

    bound = crpState.GetTotalColorCount() - 1;

    return bound;
}

GetPrimalBound

public override double GetPrimalBound(Solution solution)

정의

주어진 Feasible solution에 해당하는 Primal Bound를 반환합니다.

매개 변수

TypeDescription

Solution

Primal Bound를 구할 때 기준이 되는 Solution 입니다.

반환

TypeDescriptionDefault

Double

Primal Bound 값 입니다.

Default Logic 참

예제 (Default Logic)

public override double GetPrimalBound(Solution solution)
{
    return solution.Value;
}

GetPrimalSolutionUpdatePeriod

public override int GetPrimalSolutionUpdatePeriod()

정의

State에서 Primal Solution을 구하는 로직을 적용할 State 개수 주기를 반환합니다. 예를 들어, 주기를 1000으로 설정하였을 경우, 1000개의 State마다 한번씩 Primal Solution을 구하는 로직이 적용됩니다.

반환

TypeDescriptionDefault

Int

Primal Solution을 구하는 로직을 적용할 주기 입니다.

1000

예제 (Default Logic)

public override int GetPrimalSolutionUpdatePeriod()
{
    return 1000;
}

GetDualBoundUpdatePeriod

public override int GetDualBoundUpdatePeriod()

정의

State에서 Dual Bound를 구하는 로직을 적용할 State 개수 주기를 반환합니다. 예를 들어, 주기를 1000으로 설정하였을 경우, 1000개의 State마다 한번씩 Dual Bound를 구하는 로직이 적용됩니다.

반환

TypeDescriptionDefault

Int

Primal Solution을 구하는 로직을 적용할 주기 입니다.

1

예제 (Default Logic)

public virtual int GetDualBoundUpdatePeriod()
{
    return 1;
}

Last updated