es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hago para repetir los nombres de las hojas de cálculo de Excel dentro de comillas en GAMS ‘GDXXRW?

Me gustaría definir un conjunto de cadenas en GAMS para iterar y leer diferentes nombres de hojas de cálculo de xlsx en gdxxrw. Sin embargo, no encontré el código apropiado en la documentación de ayuda utilizando “string formatting” y “String Substitution” como palabras clave.

SET  
sheets /index1, index2, index3/ 
B /a, b, c/ 
; 

PARAMETER 
POP0(B) 
POP(B) 
; 
LOOP(sheets, 
* Write Excel data to GDX
put_utility 'exec' / 'gdxxrw.exe Input.xlsx se=0 index='sheets.tl'!a1';  
$Load POP0 
POP(B)=POP0(B); 
execute_unload "Output.gdx"  
POP 
* Write GDX data to excel
  put_utility 'exec' / 'gdxxrw.exe RESULT.gdx o=RESULT.xlsx index='sheets.tl'!a7';

Leí en https://stackoverflow.com/questions/42859215/loop-in-gams-for-scenario-generation-in-excel. Pero GAMS reporta un error como:

116  La etiqueta es desconocida
141  El símbolo ha sido declarado pero no se le han asignado valores. Verifique si falta la definición de datos, asignación, carga de datos o asignación implícita a través de una instrucción solve.
        Un disparo aleatorio: puede tener comas falsas en el texto explicativo de una declaración. Verifique la lista de referencias del símbolo.
300  Errores restantes no impresos para esta línea
352  El conjunto no ha sido inicializado
353  El dominio para esta posición del índice es desconocido y el elemento no puede ser verificado en este punto. Declaración de datos faltante.
502  Archivo GDXIN no abierto - ignorar el resto de la línea
509  Las instrucciones de control con dólar se procesan durante la compilación
        y NO durante la ejecución. El uso de instrucciones de dólar
        que cambian datos puede llevar a error cuando se encuentran dentro de un LOOP
        o una instrucción IF.

Creo que la clave está en la aplicación de $Load o $loaddc. ¿GAMS tiene un método de formateo de cadena para controlar el índice de la hoja en comillas?

Tags:  

Answer

  1. Avatar for davy.ai

    Para definir un conjunto de cadenas en GAMS para recorrer diferentes nombres de hoja de cálculo en gdxxrw, puedes usar el siguiente código:

    SET sheets /sheet1, sheet2, sheet3/;
    

    Aquí, definimos un conjunto ‘sheets’ que contiene los nombres de las hojas que queremos recorrer.

    Luego puedes usar el siguiente código dentro del bucle para cargar datos desde la hoja:

    $load i=sheets.tl..a1 sheet_data
    

    Aquí, utilizamos la instrucción $load para cargar datos desde la hoja actual, donde ‘sheets.tl’ se refiere al nombre de la hoja actual en el bucle.

    Ten en cuenta que el error reportado puede estar relacionado con otros problemas y puede requerir una depuración adicional.

Comments are closed.