Good day. I”m trying to solve this problem but it gives an error on AMPl

# ========================
# Modelo de Otimização - Técnica dos Pontos de Referência
# ========================

# 1. Conjuntos
set I := i1, i2, i3, i4;      # Conjunto de Plantas
set J := j1, j2, j3;          # Conjunto de Produtos
set K := k1, k2, k3, k4, k5;   # Conjunto de Mercados
set L := l1, l2, l3, l4;       # Conjunto de Centros de Coleta

# 2. Parâmetros
param A{J}, B{J}, C{J}, D{J}, O{J}, G{J}, H{J};  # Custos variáveis (produção, transporte, recuperação, descarte)
param E{I}, F{L};                                # Custos fixos de abertura
param P{I,J}, Q{L,J};                            # Capacidades das plantas e centros de coleta
param d{K,J}, r{K,J};                            # Demanda e retorno
param alpha{J};                                  # Fração mínima de descarte
param M{I,J}, N{L,J};                            # Parâmetros ambientais (sustentabilidade)
param t_ik{I,K}, t_kl{K,L}, t_li{L,I}, t_l{L};     # Distâncias

# 3. Parâmetros de Referência
param Z1_ref;  # Valor de referência para o custo total
param Z2_ref;  # Valor de referência para a sustentabilidade

# 4. Variáveis de Decisão
var X{I, K, J} >= 0;   # Quantidade de produto j enviado da planta i para o mercado k
var Y{K, L, J} >= 0;   # Quantidade de produto j retornado do mercado k para o centro de coleta l
var S{L, I, J} >= 0;   # Quantidade de produto j enviado do centro de coleta l para a planta i (para reciclagem)
var T{L, J}    >= 0;   # Quantidade de produto j descartada no centro de coleta l
var Z{I} binary;       # 1 se a planta i estiver aberta; 0 caso contrário
var W{L} binary;       # 1 se o centro de coleta l estiver aberto; 0 caso contrário

# 5. Variável Auxiliar para o Desvio Máximo
var T_var >= 0;

# 6. Função Objetivo: Minimizar o Desvio Máximo em Relação aos Pontos de Referência
minimize Objective:
    T_var;

# 7. Restrições de Aproximação aos Pontos de Referência

subject to Ref1:
    T_var >= abs(
      ( sum {i in I} E[i]*Z[i] + sum {l in L} F[l]*W[l]
      + sum {i in I, k in K, j in J} (A[j] + B[j]*t_ik[i,k]) * X[i,k,j]
      + sum {k in K, l in L, j in J} C[j]*t_kl[k,l]*Y[k,l,j]
      + sum {l in L, i in I, j in J} (-G[j] + D[j]*t_li[l,i]) * S[l,i,j]
      + sum {l in L, j in J} (H[j] + O[j]*t_l[l])*T[l,j] ) - Z1_ref );

subject to Ref2:
    T_var >= abs(
      ( sum {i in I, j in J} M[i,j]*( sum {k in K} X[i,k,j] + sum {l in L} S[l,i,j] )
      + sum {l in L, j in J} N[l,j]*( sum {k in K} Y[k,l,j] + sum {i in I} S[l,i,j] + T[l,j] ) ) - Z2_ref );

# 8. Outras Restrições do Modelo

# 8.1 Atendimento da Demanda: A produção enviada das plantas deve atender à demanda dos mercados
subject to Atendimento_Demanda {k in K, j in J}:
    sum {i in I} X[i,k,j] >= d[k,j];

# 8.2 Capacidade das Plantas: O total de produtos processados em uma planta não pode exceder sua capacidade
subject to Capacidade_Plantas {i in I, j in J}:
    sum {l in L} S[l,i,j] + sum {k in K} X[i,k,j] <= Z[i] * P[i,j];

# 8.3 Fluxo de Produtos Retornados: Os produtos retornados não podem ser maiores que os enviados inicialmente
subject to Fluxo_Produtos_Retornados {k in K,

To get help, provide a complete example that someone else can run to reproduce and analyze the error:

  • Be sure to include the complete model. It seems that part of constraint Fluxo_Produtos_Retornados is missing.
  • Show all of the statements that you tried to execute in AMPL, including the statements for reading the data.
  • Use the up-arrow icon (above the editor window) to upload the spreadsheet file as an attachment to your reply.

Also, copy all lines of the error message into your reply


![IMG_6458|242x500]

Show how to formulaste it