Skip to content

Módulo Generador de Problemas Binivel

Especificación Técnica de Funciones

1. GeneratorModel

function GeneratorModel(alpha::Vector{Number} = [])

Inicializa un modelo binivel con parámetros de regularización.

Descripción: - Construye una estructura de optimización jerárquica. - Prepara almacenamiento para restricciones y multiplicadores. - Si alpha != [], activa modo de perturbación para condiciones degeneradas.

Uso típico:

model = GeneratorModel()

2. SetObjectiveFunction

function SetObjectiveFunction(problem::Problem, expr::Symbolics.Num)

Define funciones objetivo para líder/seguidor manteniendo trazabilidad de variables.

Relación con teoría: - Preserva la estructura no lineal original para análisis de convexidad. - Permite verificación automática de dominios factibles.

Parámetros: - problem::Problem: Problema (Upper(model) o Lower(model)). - expr::Symbolics.Num: Expresión simbólica de la función objetivo.


3. SetLeaderRestriction

function SetLeaderRestriction(
    model::OptimizationModel,
    expr::Symbolics.Num,
    restriction_type::RestrictionSetType,
    miu::Number
)

Gestiona restricciones del nivel superior con multiplicadores asociados.

Tipos de restricción:

RestrictionSetType Condición Uso típico
J_0_g Restricción activa (g_i = 0) Puntos fuertemente estacionarios
Normal Restricción inactiva Regiones factibles generales

Parámetros: - model::OptimizationModel: Modelo a modificar. - expr::Symbolics.Num: Expresión de la restricción. - restriction_set_type::RestrictionSetType: Tipo de restricción. - miu::Number: Parámetro de perturbación.


4. SetFollowerRestriction

function SetFollowerRestriction(
    model::OptimizationModel,
    expr::Symbolics.Num,
    restriction_type::RestrictionSetType,
    beta::Number,
    lambda::Number,
    gamma::Number = 0
)

Configura restricciones del seguidor con control de multiplicadores duales.

Parámetros: - model::OptimizationModel: Modelo a modificar. - expr::Symbolics.Num: Expresión de la restricción. - restriction_set_type::RestrictionSetType: Tipo de restricción. - beta::Number: Parámetro de regularización. - lambda::Number: Parámetro dual. - gamma::Number: Parámetro de perturbación (opcional).


5. SetPoint

function SetPoint(model::OptimizationModel, point::Dict)

Establece punto inicial para las variables.

Parámetros: - model::OptimizationModel: Modelo a modificar. - point::Dict: Diccionario con asignaciones variable-valor.


Tipos de Restricciones (Implementación Interna)

@enum RestrictionSetType begin
    Normal     # Restricción no activa
    J_0_g      # Restricción líder en punto activo
    J_0_LP_v   # Restricción seguidor con multiplicador positivo
    J_0_L0_v   # Restricción seguidor activa con λ=0 
    J_Ne_L0_v  # Restricción seguidor inactiva con λ=0
end

Relación con condiciones KKT: - J_0_LP_v: Corresponde a \lambda_j > 0 en condiciones de complementariedad. - J_Ne_L0_v: Usado para perturbaciones que mantienen factibilidad. - J_0_g: Fundamental para garantizar calificaciones de restricciones.