Download - Oilfield Production Planning
UNIVERSIDAD NACIONAL DEL SUR
OILFIELD PRODUCTION PLANNING
Mixed-Integer Multiperiod Model for the Planning
of Oilfield Production
Modelo matemático de optimización MINLP implementado en GAMS
a través de interfaces con MS Excel
Ing. Federico Alberto Gorrini - Dr. José Alberto Bandoni
DEPARTAMENTO DE INGENIERÍA QUÍMICA
DOCUMENTO DE TRABAJO | Septiembre 2014
UNIVERSIDAD NACIONAL DEL SUR
OILFIELD PRODUCTION PLANNING
Mixed-Integer Multiperiod Model for the Planning of Oilfield Production
Departamento de Ingeniería Química. Septiembre 2014
Autor __Ing. Federico Alberto Gorrini Director __Dr. José Alberto Bandoni Datos de Contacto [email protected] [email protected] Universidad Nacional del Sur (8000) Bahía Blanca. Buenos Aires, Argentina.
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
Ing. GORRINI, Federico Alberto - Dr. BANDONI, J. Alberto
ABSTRACT
Durante el desarrollo del presente trabajo, se implementó un modelo de optimización multiperíodo mixto-entero para la planificación de la producción petrolera en los pozos de un mismo reservorio. El problema considera las variaciones topológicas e involucra los perfiles de producción y los tiempos de operación/parada de los pozos en cada período de tiempo. Se asume comportamiento no-lineal de la presión de flujo (respecto al tiempo) mientras se calcula la producción de petróleo y se consideran períodos de tiempo de duración uniforme.
Finalmente, el modelo es implementado a través del sistema de modelamiento GAMS (General Algebraic Modeling System), mostrando un ejemplo numérico de resolución. Se generan interfaces a través de MS Excel que permite la importación de datos y exportación de resultados involucrados en GAMS. Además, esto posibilita el procesamiento de los resultados y su graficado para un mejor análisis de los mismos.
El resultado del proceso es la determinación de
los caudales y tiempos de operación óptimos para los pozos de un mismo reservorio petrolero.
Los archivos correspondientes a la programación se encuentran en la carpeta del siguiente enlace. Seguir las instrucciones para una correcta descarga:
https://onedrive.live.com/redir?resid=57D9ABABD9D55D8B%21107 1. Ingresar el link y acceder a los archives en Outlook. 2. Seleccionar la carpeta Optimization Oilfield Planning y clickear el botón Descargar. 3. Una vez descargada la carpeta, abrir el archivo Optimization_10_wells.gpr. 4. Seleccionar File -> Project -> Open Project. Una vez allí, abrir el archivo Oil_Explotation_10_wells.gms ubicado en la misma carpeta. 5. Por otra parte, abrir el archivo DS - Pressure_Curve_Analysis.xlsx situado en la carpeta Curve Analysis. 6. Seleccionar Datos -> Editar Vínculos. Seleccionar Data.xlsx de la lista de orígenes y clickear el botón Cambiar origen... Seleccionar el
archivo Data.xlsx. 7. Ahora hacer lo propio con el origen Results.xlsx. Seleccionar el archivo Results.xlsx. 8. Guardar todos los archivos y cerrarlos.
De esta manera se logra que los archivos descargados se encuentren vinculados entre sí y las interfaces sean activas. En la carpeta Curve Analysis también podrá encontrar al informe Shale Gas & Shale Oil - Gas y Petróleo Convencional y no-Convencional en Argentina.
Oilfield Production Planning Mixed-Integer Multiperiod Model for the Planning of Oilfield Production
Modelo matemático de optimización MINLP implementado
en GAMS a través de interfaces con MS Excel
Gorrini, Federico Alberto_____________________________________________________________________________________1
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
BACKGROUND
Recientemente la optimización multiperíodo en la industria química ha recibido considerable atención. Este tipo de problemas involucran instalaciones donde los costos y demandas varían de período en período debido al comportamiento del mercado o a cambios estacionales.
En un modelo de planificación multiperíodo, el
problema considera la topología e involucra a las decisiones de puesta en marcha/paro de la operación de los procesos en cada período de tiempo. La operación de un campo de petróleo es un problema multiperíodo debido a que los costos y las demandas de la producción de petróleo cambian de un período a otro a lo largo del horizonte de tiempo considerado.
La infraestructura petrolera consiste en plataformas de producción con un número de reservorios incluyendo los pozos de petróleo. En los modelos de campos petroleros multiperíodo, las decisiones de diseño involucran las capacidades de producción de las plataformas así como también decisiones sobre cuáles plataformas de producción y pozos serán instalados a lo largo del horizonte de tiempo en cuestión. Las decisiones de planificación involucran la producción de petróleo en cada período de tiempo.
En el pasado, las decisiones acerca de las capacidades de las plataformas, la programación de perforación y los perfiles de producción han sido realizados a menudo de manera separada bajo ciertas asunciones para disminuir la carga computacional.
Las instalaciones de los campos petroleros se encuentran frecuentemente en operación durante varias décadas. Por tanto, a pesar de que los cambios en la presión del reservorio con respecto al tiempo no son significativos en el corto plazo, éstos no pueden ser ignorados para la simulación que involucre planificación futura y decisiones de inversión. Es sabido que el comportamiento de un reservorio representa una restricción no-lineal, pero muchas veces el comportamiento del reservorio ha sido aproximado por restricciones lineales como una función de la producción acumulada de petróleo. Por tanto, el índice de productividad, , es asumido como constante para
un dado período de tiempo. El coeficiente de productividad depende de la conductividad del pozo y permite el cálculo del flujo de petróleo como una función de la pérdida de presión entre el reservorio y el pozo.
donde es el caudal de flujo de petróleo en el período
j, es la presión del reservorio y la presión del pozo. El análisis del pozo revela, de cualquier forma, que la presión de flujo del pozo presenta una dependencia temporal no-lineal y, como consecuencia, la suposición de condiciones operativas constantes no aplica. La Figura 1 ilustra la extracción de petróleo desde un reservorio.
Figura 1. Diagrama conceptual de un pozo de petróleo en un reservorio
Tal como indica la Ecuación 1, la fuerza impulsora
para la producción de petróleo desde el pozo es la diferencia de presión manifestada entre el reservorio y las paredes del pozo. También, nótese que cuando el pozo acaba de ser perforado -o cuando ha sido cerrado durante un período de tiempo significativo-, es posible asumir que la presión del pozo es la misma que la del reservorio. Por tanto, al comienzo de la operación, cuando el pozo es abierto al flujo, el petróleo puede ser extraído debido a la diferencia de presión entre el fondo del pozo y el tope del mismo -en el caso de extracción
ecuación 1
reservoir
well head
well bore
oil flow
well bore storage
Gorrini, Federico Alberto_____________________________________________________________________________________2
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
ecuación 3
Pup
Plow
tshut in
t
Oil F
low
Ra
te [b
bl/d]
0
We
ll B
ore
Pre
ss
ure
[p
si]
ttshut in
natural-. Según el tiempo de operación se incremente, la presión en las paredes del pozo decrece y esto causa el flujo de petróleo desde el reservorio hacia el pozo.
De todos modos, el caudal del flujo de petróleo desde el reservorio hacia el pozo depende también de las propiedades geológicas de los alrededores del mismo; como son la permeabilidad, el espesor, la porosidad, etc., las cuales determinan la capacidad de producción del pozo. Así, debido a la resistencia al flujo de petróleo entre el reservorio y las paredes del pozo, la producción de petróleo causa que la presión en la expresión que ha sido utilizada frecuentemente (Horne, 1998) para representar dicho comportamiento es:
donde , , , , y son propiedades geológicas determinadas experimentalmente que caracterizan al
pozo. es la presión en las paredes del pozo al inicio
de la operación (presión del reservorio) y es la presión (final) en las paredes del pozo en el tiempo de operación . En este trabajo se asume que el valor de las propiedades geológicas es conocido. Es así como la ecuación puede ser reformulada como:
donde y son constantes que resultan de la combinación de las propiedades geológicas. Por otra parte, si el pozo se encuentra cerrado, su presión se incrementará debido al efecto del flujo de petróleo desde el reservorio hacia el pozo. La Figura 2 muestra el comportamiento de la presión del pozo cuando el petróleo se encuentra fluyendo y más tarde cuando el pozo se encuentra cerrado.
Figura 2.Perfil típico del la performance de la presión del pozo de petróleo y su caudal de flujo
Este trabajo maneja planificación a corto plazo
para la producción de petróleo en los pozos de un reservorio petrolero, siempre atendiendo a la reducción de costos de explotación. Las decisiones de planificación consisten en determinar el caudal de los flujos de petróleo y los tiempos de operación/cierre para cada pozo del reservorio en cada período. Tales decisiones son basadas en consideraciones prácticas, las cuales evitan que la presión del pozo decaiga más allá de un mínimo valor admisible. También, debe recordarse que el caudal de producción de petróleo debe satisfacer la demanda de petróleo para cada período de tiempo. Como se está focalizado en las decisiones a corto plazo,
se considera que la presión del reservorio -no del pozo- permanece constante sobre el horizonte de tiempo en cuestión.
Por otro lado, se asume comportamiento no-lineal
de la presión del pozo para el cálculo de la producción de petróleo tal como lo describe la Ecuación 3, y también es asumido que el valor de las constantes geológicas del pozo es conocido.
El modelo matemático implementado en este trabajo para representar y optimizar al problema es de tipo MINLP (Mixed-Integer Non-Linear Programming).
ecuación 2
Gorrini, Federico Alberto_____________________________________________________________________________________3
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
INTRODUCCIÓN TEÓRICA
El trabajo considera la planificación a corto plazo de la producción petrolera de los pozos de un reservorio sobre un horizonte temporal H dividido en NP períodos de duración T.
Así es como, dada la demanda de petróleo para un
dado período de tiempo, las decisiones de planificación involucran conocer el caudal de flujo de petróleo y los tiempos de operación/cierre de los pozos. La principal restricción impuesta al problema es evitar que la presión del pozo decaiga más allá de una presión mínima admisible, debajo de la cual la producción se considera económica y/o técnicamente inviable; además de lograr satisfacer la demanda de petróleo existente.
Las suposiciones realizadas en este documento para realizar el modelamiento incluyen:
1. Pozos múltiples de un reservorio común
producen de manera completamente independiente unos de otros.
2. Comportamiento no-lineal de la presión del pozo como función del caudal de petróleo y del tiempo.
3. La función objetivo es calculada en términos de coeficientes de costos, los cuales cambian para cada período de tiempo debido a cambios estacionales.
MODELO MATEMÁTICO
El modelo considera la operación cíclica de cada pozo i en cada período de tiempo j. Se asume, para todos los pozos, que la presión del pozo al comienzo y al final de cada período de tiempo -y, en consecuencia, al final y al principio de cada ciclo- será la misma e igual a la máxima presión admisible por el pozo. En cada período de tiempo, habrá un máximo de ciclos para cada pozo pero en este modelo no existen variables asociadas para todos los ciclos posibles, debido a que los caudales de flujo y los tiempos de operación serán los mismos para cada ciclo de un dado período de
tiempo. El número real de ciclos para cada pozo dentro de un período de tiempo ( ) será determinado por el
esquema de optimización. Finalmente, en lugar de utilizar la Ecuación 3, la expresión en el pozo será aproximada por una expresión no-lineal que involucra un término el cual contiene una potencia constante positiva del tiempo de operación. Esta expresión constituye el núcleo del modelo matemático ya que es la representación de su comportamiento durante los ciclos de operación/cierre de los pozos.
Sets & Índices Set de períodos de tiempo (1 ... NP) Set de pozos (1 ... NW) Set de valores admisibles para el número de ciclos en un período de tiempo (1 ... NC) Índices correspondientes al pozo, el período de tiempo y el ciclo, respectivamente ( , , )
Gorrini, Federico Alberto_____________________________________________________________________________________4
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
Variables Continuas Producción total de petróleo del pozo i en el período j
Caudal de flujo de petróleo en el pozo i en el período j
Tiempo de operación para cada ciclo del pozo i en el período j
Tiempo de cierre para cada ciclo del pozo i en el período j
Tiempo de operación total del pozo i en el período j
Tiempo de cierre total del pozo i en el período j
Presión del pozo i en el período j al final de un ciclo de operación
Variables Binarias 1 si existen k ciclos en la operación del pozo i en el período j
Variables Enteras Número de ciclos en la operación del pozo i en el período j
Parámetros Parámetros para calcular el decaimiento de la presión en el pozo i cuando se encuentra produciendo
Parámetros para calcular el incremento de la presión en el pozo i cuando se encuentra cerrado
El modelo resultante es un Mixed Integer Non-
Linear Problem (MINLP). La función objetivo que se plantea para minimizar los costos en la explotación del campo petrolero es:
ecuación 1
ecuación 5
ecuación 6
ecuación 4
ecuación 3
ecuación 2
Gorrini, Federico Alberto_____________________________________________________________________________________5
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
La producción de petróleo de cada pozo -el caudal de flujo de petróleo multiplicado por el tiempo total de operación del pozo en el período j- es calculada a través de la Ecuación 2. La Ecuación 3 atiende a satisfacer la demanda de petróleo en cada período de tiempo j.
El número de ciclos para cada período de tiempo
es dado por la Ecuación 4 y la Ecuación 5. Nótese que si el número de ciclos en un dado período de tiempo es k´, ; mientras que .
El tiempo total de operación/cierre para un pozo i
en un período j es dado por el producto entre el número de ciclos y los tiempos de operación/cierre de cada pozo, tal como lo indica la Ecuación 6 y la Ecuación 7. Nótese que si un pozo permanece cerrado durante un dado período de tiempo, el número de ciclos ( ) es
cero y el tiempo de operación para el pozo dentro de
este período es nulo. En tal caso, el lado derecho de la Ecuación 6 consiste en un término bilineal que incluye dos variables, las cuáles son ambas iguales a cero. Para evitar esta dificultad cuando el número de ciclos es igual
a cero, en la práctica se asigna a el valor de en
lugar del número 0 ( ). Para el caso de la Ecuación 7, el problema es resuelto utilizando la variable . Nótese que mientras el pozo i permanece
cerrado en un período j, , y si se encuentra
abierto al flujo mientras que alguno de los
otros será igual a 1.
La Ecuación 8 establece que la suma de tiempos
que el pozo i permanece en operación/cerrado dentro de un período j es igual a la extensión del período de tiempo. El tiempo de operación de cada ciclo del pozo i, , debe ser menor al tiempo que permite la caída de
presión del pozo por debajo del valor de la mínima presión admisible, condición dictada por la Ecuación 9. Tal máximo de tiempo de operación es dado por la Ecuación 10.
El tiempo de cierre para cada pozo i, debe ser al
menos igual al tiempo mínimo que permita a la presión del pozo incrementarse hasta el valor máximo
ecuación 10
ecuación 11
ecuación 9
ecuación 8
ecuación 7
ecuación 12
ecuación 13
ecuación 14
ecuación 15
ecuación 16
ecuación 17
Gorrini, Federico Alberto_____________________________________________________________________________________6
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
admisible, según lo expresa la Ecuación 11. Tal tiempo mínimo es dado por la Ecuación 12. La Ecuación 13 permite el cálculo de la presión de flujo del pozo después de la operación del mismo y justo antes de cerrarlo durante un ciclo de operación.
Finalmente, las restricciones de la Ecuación 14 y la
Ecuación 15 representan el comportamiento de las principales variables del problema en términos de la
variable binaria . Estas dictaminan que el tiempo
total de operación de un pozo i no puede superar al tiempo total del período T; y que el caudal de operación no puede ser superior al caudal máximo impuesto, con excepción de los casos donde el pozo permanece cerrado durante todo el período de tiempo, donde se exige a éste que sea nulo. De esta forma, la producción del reservorio queda modelada matemáticamente y, las condiciones para optimizarla se encuentran declaradas.
EJEMPLOS NUMÉRICOS Y RESULTADOS El modelo propuesto es resuelto a través del
sistema de modelamiento GAMS. Se implementó el solver DICOPT (CPLEX + CONOPT), el cual utiliza por defecto las subrutinas CPLEX y CONOPT para la resolución de los subproblemas MIP y NLP, respectivamente. En todas las ejecuciones realizadas, las propiedades geológicas (comportamiento de la presión de flujo del pozo) son diferentes para cada pozo del reservorio. Más aún, los coeficientes de costos varían no sólo para cada pozo, sino que también lo hacen en cada período de tiempo.
En el ejemplo en estudio se trabaja con un reservorio explotado a través de un número total de 10 pozos petroleros. El Anexo 1 (GAMS Oilfield Production Optimization Programming) contiene la programación ejecutada en el software GAMS. Allí se detalla el propósito de los distintos segmentos de la programación.
Para facilitar el ingreso de datos a GAMS así como también su egreso y posterior visualización se recurre a un software con una interface más interactiva y asequible a cualquier tipo de usuario tal como lo es MS Excel. Este software permite cargar los datos de ingreso en cómodas tablas. Una vez ejecutada la programación en GAMS también posibilita el acceso a los resultados a través de tablas, así como también la construcción de gráficos para su interpretación. El procedimiento para generar la interfaz MS Excel - GAMS para la carga de datos es descripto en el Anexo 2 (MS Excel - GAMS interfaz), mientras que la construcción de la interfaz GAMS - MS Excel para la extracción de resultados y su visualización en este último se describe en el Anexo 3 (GAMS - MS Excel interfaz). Cabe recordar que en ambos casos es el software GAMS el que se encuentra “a cargo” de la ejecución y que MS Excel sólo atiende a las órdenes de éste.
CONCLUSIÓN
Es posible resolver el modelo satisfactoriamente
utilizando el solver DICOPT. Para el caso particular mostrado, éste halla el punto óptimo de operación en tan sólo 4 iteraciones y 0.015 s de tiempo de resolución. Sin embargo, si bien el modelo pudo ser resuelto bajo los valores de prueba propuestos, éste es altamente no-lineal, por lo que la modificación de estos valores ha llevado en la mayoría de los casos a la incapacidad del solver DICOPT para dar con la solución. Es por ello que
en el futuro, deberán implementarse métodos capaces de lidiar con estas no-linealidades, lo cual seguramente mejorará mucho el desempeño de la programación.
Además, la aplicación del solver BARON ha
resultado inútil dado los extensos tiempos de resolución. A continuación se presenta las gráficas obtenidas de los resultados del ejemplo numérico propuesto.
Gorrini, Federico Alberto_____________________________________________________________________________________7
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
RESULTADOS. PERFORMANCE DE LA PRESIÓN EN CADA POZO
Estos gráficos contienen la evolución de la presión de cada pozo del reservorio en el tiempo. En todos los casos ésta ha prevalecido por encima de la mínima presión admisible, además de haberse recuperado al final de cada ciclo hasta alcanzar la misma presión del reservorio. En el caso del pozo 5 en el período 1 se
observa que la presión del pozo logra recuperarse antes de la culminación de cada ciclo.
En los casos en que el pozo permaneció cerrado y
fuera de operación durante todo un período, su presión ha sido constante e igual a la presión del reservorio.
Figura 1. Evolución de la presión del pozo 1 en función del tiempo
Figura 3. Evolución de la presión del pozo 3 en función del tiempo
Figura 2. Evolución de la presión del pozo 2 en función del tiempo
Figura 4. Evolución de la presión del pozo 4 en función del tiempo
Gorrini, Federico Alberto_____________________________________________________________________________________8
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [p
si]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [p
si]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
5,860
5,880
5,900
5,920
5,940
5,960
5,980
6,000
6,020
0 15 30 45 60 75 90 105 120
We
ll B
ore
Pre
ssu
re [
psi
]
Figura 5. Evolución de la presión del pozo 5 en función del tiempo
Figura 7. Evolución de la presión del pozo 7 en función del tiempo
Figura 9. Evolución de la presión del pozo 9 en función del tiempo
Figura 6. Evolución de la presión del pozo 6 en función del tiempo
Figura 8. Evolución de la presión del pozo 8 en función del tiempo
Figura 10. Evolución de la presión del pozo 10 en función del tiempo
Gorrini, Federico Alberto_____________________________________________________________________________________9
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
0
5,000
10,000
15,000
20,000
25,000
30,000
35,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
2,000
4,000
6,000
8,000
10,000
12,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
5,000
10,000
15,000
20,000
25,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
200
400
600
800
1,000
1,200
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
RESULTADOS. PRODUCCIÓN ACUMULADA DE CADA POZO EN FUNCIÓN DEL TIEMPO
La evolución de la producción acumulada de cada pozo se encuentra en éstos gráficos. Aquí puede verse que la producción de cada pozo aumenta de manera lineal mientras éste se mantiene en operación, producto de que su caudal de flujo sea constante; mientras que se estanca cuando el pozo permanece cerrado y recuperando presión.
Sin embargo, que el caudal de producción de cada pozo sea constante no implica que este comportamiento se replique para la completitud del reservorio, de hecho, el caudal de petróleo brindado por el reservorio completo es variable en el tiempo y hasta llega a ser nulo hacia el final de cada período de tiempo -todos los pozos se encuentran en recuperación-.
Figura 1. Evolución de la presión del pozo 1 en función del tiempo
Figura 3. Evolución de la presión del pozo 3 en función del tiempo
Figura 2. Evolución de la presión del pozo 2 en función del tiempo
Figura 4. Evolución de la presión del pozo 4 en función del tiempo
Gorrini, Federico Alberto____________________________________________________________________________________10
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
0
5,000
10,000
15,000
20,000
25,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
2,000
4,000
6,000
8,000
10,000
12,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
500
1,000
1,500
2,000
2,500
3,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
2,000
4,000
6,000
8,000
10,000
12,000
14,000
16,000
18,000
20,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
0
100
200
300
400
500
600
700
800
900
1,000
0 15 30 45 60 75 90 105 120
Pro
du
ctio
n [
bb
l]
Figura 5. Evolución de la presión del pozo 5 en función del tiempo
Figura 7. Evolución de la presión del pozo 7 en función del tiempo
Figura 9. Evolución de la presión del pozo 9 en función del tiempo
Figura 6. Evolución de la presión del pozo 6 en función del tiempo
Figura 8. Evolución de la presión del pozo 8 en función del tiempo
Figura 10. Evolución de la presión del pozo 10 en función del tiempo
Gorrini, Federico Alberto____________________________________________________________________________________11
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
ANEXO 1. GAMS OILFIELD PRODUCTION OPTIMIZATION PROGRAMMING
La programación realizada en GAMS para ejecutar el modelo matemático y poder obtener el punto óptimo consta de nueve partes, en cada una de las cuales se definen:
- Sets - Parámetros (MS Excel - GAMS interfaz) - Variables - Ecuaciones - Función Objetivo - Rango válido de las variables - Valores iniciales - Condiciones de resolución y métodos a utilizar - Resultados (GAMS - MS Excel interfaz)
Sets, Parámetros (MS Excel - GAMS interfaz) y Variables
Tanto los Sets, Parámetros así como las Variables son cargadas en MS Excel y más tarde tomadas por GAMS. Sin embargo, las mismas deben primero definirse en GAMS. En este caso, tal como puede verse más adelante, dicha definición se produce entre las líneas de programación 3 a 14.
Una vez definidos en GAMS, debe programarse la
conexión GAMS - MS Excel. Dicha conexión puede realizarse a través de un archivo .gdx. La estructura básica de comandos para ejecutar la conexión es:
$ gdxin my_file.gdx
$ load item_name
$ gdxin
Al especificar item_name puede incluirse a varios items. Al hacerlo, deben nombrarse dejando un espacio entre ellos. Entre las líneas de programación 17 a 25 es donde se produce esta serie de comandos. Allí se especifican los sets (i, j, k), el tiempo de cada período j ( ), los coeficientes que determinan el
comportamiento de la presión del pozo en producción así como también cuando se encuentra cerrado (
), la demanda correspondiente a
cada período j ( ( )), los coeficientes de ganancias/costos para cada pozo i sea que éste se
encuentre operativo como cuando se encuentra cerrado ( ), así como también las presiones límite
definidas para la operación ( ).
Por último se define al parámetro ( ),
aunque éste -por conveniencia- es definido directamente en GAMS (líneas 28 a 32). Este parámetro representa el número de subciclos k existentes dentro de un dado período j.
Las variables también deben definirse dentro de la estructura de GAMS. Entre las líneas 37 a 47 se definen las variables que sólo pueden adquirir valores positivos ( ( ), ( ), ( ), ( ), ( ), ( ), ( ),
( ), ( ), ( )). También debe definirse a la variable , la cual en este caso será el resultado de la función objetivo a minimizar y, como tal, se define como una variable libre (línea 35).
En la línea 50 se define a la variable binaria
( ), la cual es una herramienta que permite indicar dentro del modelo cuál es el número de subciclos presentes dentro de un dado período k. La variable ( ) no es más que un recurso al que se alude para definir el valor que adquiere la variable binaria ( ). Cuando el pozo prevalece cerrado a lo largo de un período, ( ) = 1, mientras que si presenta al menos un subciclo ( ) .
Ecuaciones y Función Objetivo Primero debe declararse la existencia de las ecuaciones, tal como se lista entre las líneas 53 y 69. Luego, es posible desarrollar cada una de ellas tal como se encuentra en las líneas 72 a 105. Finalizado esto, se declara a todas estas bajo el nombre del modelo matemático “oilfield” (línea 107).
Rango válido de las variables y valores iniciales
Una vez definidas las ecuaciones, inecuaciones y variables del modelo matemático, es necesario determinar en qué rango podrán encontrarse los valores
Gorrini, Federico Alberto____________________________________________________________________________________12
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
de las variables. Esto reduce el tiempo de cómputo y aumenta las probabilidades de que un solver logre hallar el punto óptimo. Más aún, si es posible debe definirse valores iniciales para cada una de las variables en torno al valor en que se infiere puede ésta hallarse; cuanto más cerca se halle el valor inicial del valor óptimo menor será el tiempo de cómputo.
Condiciones de resolución y métodos a utilizar
Además de desarrollar la descripción matemática del modelo, es necesario especificar el solver de resolución a emplear así como también los métodos de resolución disponibles dentro del mismo para resolver los subproblemas. Tal como ya se ha mencionado, en este caso se utiliza el solver DICOPT (DIscrete and COntinuous OPTimizer). DICOPT es un programa para la resolución de problemas MINLP (Mixed Integer Non-Linear Programming) que involucran variables lineales binarias o variables enteras y variables continuas no-lineales y lineales. El programa se basa en extensiones del algoritmo de aproximación externa para la estrategia de igualdad relajada. El algoritmo MINLP dentro de DICOPT resuelve una serie de subproblemas NLP y MIP. Estos subproblemas pueden ser resueltos utilizando cualquier solver NLP (Non-Linear Programming) o MIP (Mixed-Integer Programming) que corra bajo GAMS. Este programa es capaz de resolver sólo problemas MINLP, y es asignado por defecto en GAMS. También son asignados por defecto CONOPT como solver de los subproblemas NLP, y CPLEX como solver de los subproblemas MIP. Los NLP solvers
posibles son: MINOS5, MINOS, CONOPT, CONOPT3 y SNOPT. Los MIP solvers disponibles son: CPLEX, GUROBI, XPRESS y XA.
Las líneas 217 a 221 expresan en forma explícita
los solvers y programas utilizados para la resolver el problema de optimización. DICOPT es un programa basado en aproximación externa (Outer Approximation), por lo que aproxima las funciones convexas por líneas tangentes internas. Esto no garantiza que la solución obtenida sea necesariamente el óptimo global, sino que puede tratarse de un óptimo local. Para garantizar el hallazgo de un óptimo global debe recurrirse al empleo de BARON, el cual sí es un algoritmo de optimización global. Sin embargo, esta subrutina puede requerir un tiempo computacional notablemente mayor en problemas altamente no lineales como el presente.
Antes de resolver un modelo utilizando DICOPT, es
altamente recomendado experimentar con el modelo relajado donde las restricciones de enteros son ignoradas -las variables enteras se tornan en continuas-. Esto constituye un modelo rMINLP (Relaxed Mix Integer Non-Linear Programming). Así DICOPT puede comenzar resolviendo el problema relajado -menos restringido y de más fácil solución- para luego utilizar la solución óptima relajada existente como punto de inicio.
Entre las líneas 206 y 234 se encuentran
declarados todos los comandos de resolución. Los marcados con * se encuentran inactivos aunque pueden ser activados para resolver el modelo rMINLP o bien acudir a la subrutina del solver BARON.
Gorrini, Federico Alberto____________________________________________________________________________________13
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
1 $TITLE Oilfield Explotation Process Optimization
2 3 SETS
4 * 10 wells - 2 periods of time - 4 subcycle
5 6 i wells
7 j periods
8 k subcycles;
9 10 PARAMETERS C1(i),C2(i),C1rec(i),C2rec(i);
11 PARAMETER Demand(j);
12 PARAMETERS gamma(i,j),delta(i,j),alfa(i,j);
13 PARAMETERS Pup(i),Plow(i);
14 SCALAR Tperiod
15 16 17 $CALL GDXXRW.EXE Data.xlsx Index=Index!A1
18 $gdxin Data.gdx
19 $load i j k
20 $load Tperiod
21 $load C1 C2 C1rec C2rec
22 $load Demand
23 $load gamma delta alfa
24 $load Pup Plow
25 $gdxin
26 27 28 PARAMETER Kcycle(k)
29 /1 0.0001
30 2 1
31 3 2
32 4 3/;
33 34 35 FREE VARIABLE z minimize production cost;
36 37 POSITIVE VARIABLE
38 y0(i,j)
39 Q(i,j)
40 P(i,j)
41 Tauo(i,j)
42 Tauc(i,j)
43 tto(i,j)
44 ttc(i,j)
45 N(i,j)
Gorrini, Federico Alberto____________________________________________________________________________________14
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
46 ttmin(i,j)
47 ttmax(i,j);
48 49 BINARY VARIABLE
50 y(i,j,k);
51 52 53 EQUATIONS
54 55 EQ1(j)
56 EQ4(i,j)
57 EQ5(i,j)
58 EQ6(i,j)
59 EQ6a(i,j)
60 EQ6b(i,j)
61 EQ7(i,j)
62 EQ8(i,j)
63 EQ9(i,j)
64 EQ8a(i,j)
65 EQ9a(i,j)
66 EQ10(i,j)
67 EQ11(i,j)
68 EQ12(i,j)
69 obj;
70 71 72 EQ1(j).. SUM(i, Q(i,j)*Tauo(i,j)) =G= Demand(j);
73 74 EQ4(i,j).. N(i,t) =E= SUM (k,y(i,j,k)*Kcycle(k));
75 76 EQ5(i,j).. SUM(k,Y(i,j,k)) =E= 1;
77 78 EQ6(i,j).. Tauo(i,j) =E= N(i,j)*tto(i,j);
79 80 EQ6a(i,j).. Tauc(i,j) =E= (N(i,j)+y0(i,j))*ttc(i,j);
81 82 EQ6b(i,j).. y0(i,j) =E= y(i,j,"1");
83 84 EQ7(i,j).. Tauo(i,j)+Tauc(i,j) =E= Tperiod;
85 86 * EQ8(i,j).. tto(i,j) =L= ((P(i,j)-Plow(i))/C1(i)*Q(i,j))**(1/C2(i));
87 EQ8(i,j).. ttmax(i,j)**C2(i) =E= ((P(i,j)-Plow(i)))/(C1(i)*Q(i,j));
88 EQ8a(i,j).. tto(i,j) =L= ttmax(i,j);
89 90 * EQ9(i,j).. ttc(i,j) =L= ((Pup(i)-P(i,j))/C3(i))**(1/C4(i));
Gorrini, Federico Alberto____________________________________________________________________________________15
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
91 EQ9(i,j).. (ttmin(i,j)**C2rec(i))*(C1rec(i)) =E= (Pup(i)-P(i,j));
92 EQ9a(i,j).. ttc(i,j) =G= ttmin(i,j);
93 94 EQ10(i,j).. P(i,j) =E= Pup(i)-C1(i)*Q(i,j)*tto(i,j)**C2(i);
95 96 EQ11(i,j).. Tauo(i,j)-Tperiod*(1-y(i,j,"1")) =L= 0;
97 98 EQ12(i,j).. Q(i,j)-Q.up(i,j)*(1-y(i,j,"1")) =L= 0;
99 100 *option reslim = 100000;
101 *option sysout = ON;
102 *option domlim = 1000000;
103 104 obj.. z =E= sum((i,j),gamma(i,j)*Q(i,j)*Tauo(i,j)+
105 delta(i,j)*Tauo(i,j)+alfa(i,j)*Tauc(i,j));
106 107 MODEL oilfield /ALL/;
108 109 110 N.up (i,j) = 3;
111 N.l (i,j) = 1;
112 N.lo (i,j) = 0.0001;
113 114 Tauo.up (i,j) = 42.5 ;
114 Tauo.lo (i,j) = 0.00001;
115 116 Tauc.up (i,j) = 60;
117 Tauc.lo (i,j) = 0.00001;
118 119 tto.up (i,j) = 30;
120 tto.l (i,j) = 10;
121 tto.lo (i,j) = 0.001;
122 123 ttc.up (i,j) = 60;
124 ttc.l (i,j) = 20;
125 ttc.lo (i,j) = 0.0001;
126 127 ttmin.up (i,j) = 60;
128 ttmin.lo (i,j) = 2;
129 130 ttmax.up (i,j) = 60;
131 ttmax.lo (i,j) = 0.001;
132 133 Q.lo (i,j) = 0.0001;
134 Q.l (i,j) = 500;
Gorrini, Federico Alberto____________________________________________________________________________________16
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
135 Q.up (i,j) = 900;
136 137 P.lo (i,j) = 5880;
138 P.up (i,j) = 6009;
139 140 141 * OPTION Statements
142 143 * option domlim = n
144 * This option sets a limit on the total accumulated number of non-linear
145 * funtion evaluation errors that are allowed while solving the NLP subproblems
146 * or inside DICOPT.
147 * option domlim = 1000000;
148 149 * option reslim = x
150 * This option sets a limit on the total accumulated time [s] spent inside
151 * DICOPT and the subsolvers. The default is 1000.
152 * option reslim = 1000;
153 154 * m.iterlim = n
155 * Sets the total accumulated (minor) iteration limit. This option overrides the
156 * global iteration limit set by an option statement.
157 * oilfield.iterlim = 1000;
158 159 * option iterlim = n
160 * This option sets a limit on the total accumulated (minor) iterations
161 * performed in the MIP and NLO subproblems. The default is 1000.
162 * option iterlim = 2000;
163 164 * option sysout = on
165 * This option will print extra information to the listing file.
166 * option sysout = on;
167 168 169 170 * DICOPT Options
171 172 * m.optfile = n
173 * This option instructs DICOPT to read an option file dicopt.opn. This file
174 * should be located in the current directory.
175 * In the oilfield.optfile could be more than one DICOPT Options.
176 177 * maxcycles n
178 * This option specify the maximum number of cycles or major iterations
179 * performed. The default value is n = 20.
180
Gorrini, Federico Alberto____________________________________________________________________________________17
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
181 * epsx x
182 * This tolerance is used to distinguish integer variables that are set to an
183 * integer value by the user, or integer variables that are fractional.
184 * The default value is x = 1.0e-3.
185 186 * Infeasder n
187 * This option is to determine whether linearizations of infeasible NLP
188 * subproblems are added or not to the MIP master problem.
189 * The default option is N = 0, in which no linearizations are added in the
190 * infeasible NLP subproblems.
191 * When n = 1, linearizations derived from infeasible NLP subproblems are added
192 * to the master problem. This option is recommended to speed up convergence
193 * when the MINLP is known to be convex. If used for nonconvex MINLP possibility
194 * of cutting-off the global optimum is increased.
195 196 *$ontext
197 $onecho > dicopt.op2
198 maxcycles = 100
199 epsx = 1.0e-3
200 infeasder 0
201 $offecho
202 203 oilfield.optfile = 2;
204 *$offtext
205 206 207 * DICOPT MODELING METHODS
208 209 * Before solving a model with DICOPT, it is strongly advised to experiment with
210 * the relaxed model where the integer restrictions are ignored.
211 * This is the RMINLP model.
212 * In the following fragment, the second SOLVE statement will only be executed if
213 * the first SOLVE was successful.
214 215 * In some cases the relaxed problem is the most difficult model. If you have
216 * more than one NLP solver available, you may want to try a sequence of them.
217 218 option NLP = conopt;
219 option MIP = cplex;
220 option rMINLP = conopt;
221 option MINLP = dicopt;
222 *option MINLP = BARON;
223 224 *SOLVE oilfield USING rMINLP MINIMIZING z;
225
Gorrini, Federico Alberto____________________________________________________________________________________18
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
226 *if (oilfield.modelstat > 2.5, option rMINLP=MINOS;
227 *SOLVE oilfield USING rMINLP MINIMIZING z;)
228 *if (oilfield.modelstat > 2.5, option rMINLP=SNOPT;
229 *SOLVE oilfield USING rMINLP MINIMIZING z;)
230 231 * When the next statement is activated, it allows GAMS to solve the model with
232 * discrete variables after try to do it with relaxed ones.
233 234 *abort$(oilfield.modelstat > 2.5) "Relaxed model could not be solved";
235 SOLVE oilfield using MINLP MINIMIZING z;
236 237 238 239 Execute_unload "Results.gdx" Q.L P.L tto ttc N
240 241 $onecho > taskoutput.txt
242 var=Q.L rng=Results!C3:E13 rdim=1 cdim=1
243 var=P.L rng=Results!H3:J13 rdim=1 cdim=1
244 var=tto rng=Results!C17:E27 rdim=1 cdim=1
245 var=ttc rng=Results!H17:J27 rdim=1 cdim=1
246 var=N rng=Results!M17:O27 rdim=1
247 $offecho
248 249 $CALL GDXXRW.EXE Results.gdx Index=Index!A1
250
Gorrini, Federico Alberto____________________________________________________________________________________19
U
NIV
ERSI
DA
D N
AC
ION
AL
DEL
SU
R
O
ilfie
ld P
rod
uct
ion
Pla
nn
ing
.
Tab
la A
.2.3
. Esp
ecif
ica
ció
n d
e d
ato
s en
el a
rch
ivo
Da
ta.x
lsx
de
MS
Exce
l, so
lap
a “
Da
ta”.
gamma
alfa
Pup
[p
si]
Dem
and
C1
C1
rec
12
12
w1
6,00
91
75,0
00w
10.
0545
7w
127
.285
w1
2.91
63.
500
w1
50.0
522
.75
w2
6,00
92
50,0
00w
20.
1107
9w
233
.237
w2
5.83
36.
708
w2
75.8
385
.93
w3
6,00
9w
30.
0651
2w
326
.056
w3
3.21
54.
256
w3
60.2
620
.32
w4
6,00
9w
40.
8312
5w
425
.265
w4
5.21
94.
566
w4
42.2
330
.86
w5
6,00
9w
50.
1065
8w
536
.215
w5
6.22
63.
265
w5
96.2
650
.64
w6
6,00
9w
60.
1256
9w
642
.259
w6
5.23
27.
626
w6
21.2
645
.26
w7
6,00
9w
70.
7265
2w
726
.266
w7
9.26
58.
265
w7
35.4
752
.14
w8
6,00
9w
80.
2352
3w
821
.265
w8
4.22
65.
265
w8
65.2
650
.82
w9
6,00
9w
90.
1583
2w
918
.265
w9
1.26
12.
265
w9
82.2
670
.46
w10
6,00
9w
100.
0953
5w
1029
.215
w10
2.26
53.
266
w10
24.1
554
.87
delta
Plo
w [
psi
]T
cycl
e [d
ays
]60
C2
C2
rec
12
w1
5,88
0w
10.
2874
2w
10.
2874
2w
171
.75
76.5
3
w2
5,88
0w
20.
2378
6w
20.
2378
6w
295
.66
102.
84
w3
5,88
0w
30.
2503
5w
30.
2503
5w
384
.64
70.2
5
w4
5,88
0w
40.
3326
5w
40.
3326
5w
424
.26
45.2
6
w5
5,88
0w
50.
2835
1w
50.
2835
1w
542
.32
42.2
4
w6
5,88
0w
60.
2486
2w
60.
2486
2w
615
.73
34.8
9
w7
5,88
0w
70.
3554
2w
70.
3554
2w
756
.25
46.6
5
w8
5,88
0w
80.
3515
6w
80.
3515
6w
851
.25
75.2
5
w9
5,88
0w
90.
2955
6w
90.
2955
6w
965
.82
61.2
5
w10
5,88
0w
100.
2151
8w
100.
2151
8w
1049
.25
27.1
3
Go
rrin
i, Fe
der
ico
Alb
erto
____
____
___
___
___
____
____
____
___
____
____
___
____
____
____
___
____
____
___
____
____
___
____
____
____
___
____
____
____
___
____
____
___
____
____
___
____
__2
0
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
.xlsx.gdxGAMS.xlsx .gdx
ANEXO 2. MS EXCEL - GAMS INTERFAZ
MS Excel ofrece una interfaz para la carga y procesamiento de datos más cómoda y con mayor potencialidad que GAMS, sobre todo cuando deben cargarse gran cantidad de datos o procesarse demasiados resultados -o incluso graficarlos-. Además, ofrece una interfaz mucho más familiar e interactiva al usuario.
MS Excel permite la carga de sets y parámetros, los
cuales serán tomados más tarde por GAMS. Sin embargo, éstos deben primero definirse en GAMS. Una vez definidos en GAMS, debe programarse la conexión GAMS-MS Excel. Dicha conexión puede realizarse a través de un archivo .gdx. La estructura básica de comandos para ejecutar la importación de datos desde un archivo .gdx es la siguiente:
$ gdxin my_file.gdx
$ load item_name
$ gdxin
Al especificar item_name puede incluirse a varios items. Al hacerlo, deben nombrarse dejando un espacio
entre ellos. Por otro lado, para exportar los resultados hacia un archivo .gdx, se utiliza el siguiente comando:
execute_unload file_name.gdx items_list
En items_list se deben especificar la lista de items de salida en el archivo .gdx. Si se quiere obtener los valores iniciales de las variables, este comando se debe ejecutar antes del comando SOLVE; por el contrario, si lo que se desean son los valores en el punto óptimo, entonces debe insertarse luego de la resolución.
Cuando GAMS intercambia datos con otros programas, se puede utilizar dos esquemas de operación.
a. GAMS al mando: donde GAMS utiliza al otro programa como repositorio de datos y resultados.
b. Otro software al mando: aquí GAMS es utilizado como una subrutina.
Figura A.2.1. Diagrama de flujo de datos/resultados a través de las interfaces GAMS - MS Excel
En este caso se dispone a GAMS como software de mando. Para ello, en GAMS debe utilizar al comando GDXXRW.EXE, el cual es una herramienta de GAMS que permite crear archivos .gdx a partir de archivos de MS Excel y viceversa, es decir, tomar datos desde archivos .gdx y forzarlos dentro de hojas de cálculo de MS Excel. Para generar un archivo .gdx a partir de un archivo de MS Excel se debe emplear al comando de la siguiente forma:
$ CALL GDXXRW.EXE Data_file.xlsx Index = Index! A1
En cambio, para impulsar a los resultados desde un
archivo .gdx hacia un archivo de MS Excel se debe emplear de la siguiente manera:
$ CALL GDXXRW.EXE Results_file.xlsx Index = Index! A1 Así, la estructura total de la conexión finalmente
será:
$ CALL GDXXRW.EXE Data_file.xlsx Index = Index! A1 $ gdxin Data_file.gdx $ load Sets $ load Parameters $ gdxin
MODEL + SOLVE command
Execute_unload `Results_file.gdx` itemslist; $ CALL GDXXRW.EXE Results_file.xlsx Index = Index! A1
Gorrini, Federico Alberto____________________________________________________________________________________21
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
En itemslist debe especificarse las variables de las cuales se pretende exportar sus valores finales.
Todo esto es la programación que se realiza en el
archivo de GAMS. Por su parte, debe también existir un archivo para la carga de datos de MS Excel. Este archivo, al que llamaremos Data.xlsx, debe constar de tres solapas: “Index”, “Sets” y “Data”. - Sets: en esta hoja de cálculo debe declararse los sets
involucrados y sus respectivos elementos en forma de columnas.
- Data: aquí se incorporan los datos en forma de tablas. Pueden también incluirse parámetros.
- Index: es la última de las hojas de cálculo a construir. Proporciona la programación que ejecuta la conexión final para la interfaz MS Excel - GAMS. En esta hoja de cálculo se nombran los sets y parámetros, declarando su ubicación y el rango que ocupan en la tabla correspondiente.
set set_name Sets!N#:N# par par_name Sets!N#:N#
También, dentro de esta misma solapa se indica la disposición de las dimensiones de las variables.
- rdim: los datos se expresan verticalmente en
columnas. si existe una columna con datos del parámetro, si no se expresan los datos del parámetro en disposición de columna.
- cdim: los datos se expresan horizontalmente en filas. si existe una fila con datos del parámetro, si no se expresan los datos del parámetro en disposición de fila.
- dim: número de dimensiones en las que se expresa un parámetro; es igual al resultado de la suma .
Un detalle importante para que GAMS tome los
datos cargados en Data.xlsx es que el archivo haya sido guardado. GAMS importa los datos de la última versión del archivo de MS Excel, sin importar si éste se encuentra abierto o no.
Tabla A.2.1. Especificación de Sets y Parámetros en el archivo Data.xlsx, solapa “Index” de MS Excel
Tabla A.2.2. Especificación de Sets en la solapa “Sets” del archivo Data.xlsx en MS Excel
rdim cdim dim
wells periods subcycles
set i Sets!A2:A11 1 1
w1 1 1
set j Sets!B2:B3 1 1
w2 2 2
set k Sets!C2:C5 1 1
w3 3
par Tperiod Data!F16 0
w4 4
par C1 Data!H4:I13 1 1
w5
par C2 Data!H17:I26 1 1
w6
par C1rec Data!K4:L13 1 1
w7
par C2rec Data!K17:L26 1 1
w8
par Demand Data!E4:F5 1 1
w9
par Data!N3:P13 1 1 2
w10
par Data!N16:P26 1 1 2 par Data!R3:T13 1 1 2 par Pup Data!B4:C13 1 1 par Plow Data!B17:C26 1 1
Gorrini, Federico Alberto____________________________________________________________________________________22
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
.xlsx.gdxGAMS.xlsx .gdx
ANEXO 3. GAMS - MS EXCEL INTERFAZ
Así como se realizó para la carga de datos, para la exportación de resultados desde GAMS debe generarse del mismo modo un archivo de MS Excel para tal fin. Nuevamente, MS Excel ofrece una mejora cualitativa frente a GAMS tanto para visualizar los resultados en tablas como por la facilidad que ofrece para graficar y analizar los resultados obtenidos. Sin embargo, los parámetros resultantes deben primero definirse en GAMS. Una vez definidos en GAMS, debe programarse la conexión GAMS-MS Excel. Dicha conexión puede realizarse a través de un archivo .gdx. Para exportar los
resultados hacia un archivo .gdx, se utiliza el siguiente comando:
execute_unload file_name.gdx items_list
En items_list se debe especificar la lista de items de salida en el archivo .gdx. Si se quiere obtener los valores iniciales de las variables, este comando se debe ejecutar antes del comando SOLVE; por el contrario, si lo que se desean son los valores en el punto óptimo, entonces debe insertarse luego de la resolución.
Figura A.3.1. Diagrama de flujo de datos/resultados a través de las interfaces GAMS - MS Excel
En este caso vuelve a utilizarse GAMS como software de mando. Para ello GAMS debe utilizar al comando GDXXRW.EXE, el cual es una herramienta de GAMS que permite crear archivos .gdx a partir de archivos de MS Excel y viceversa. En este caso se utiliza para tomar datos desde archivos .gdx y forzarlos dentro de hojas de cálculo de MS Excel. Para generar un archivo de MS Excel a partir de un archivo .gdx se debe emplear al comando de la siguiente forma:
$ CALL GDXXRW.EXE Data_file.xlsx Index = Index! A1
La estructura total de la conexión finalmente será:
$ CALL GDXXRW.EXE Data_file.xlsx Index = Index! A1 $ gdxin Data_file.gdx $ load Sets $ load Parameters $ gdxin MODEL + SOLVE command Execute_unload `Results_file.gdx` itemslist; $ CALL GDXXRW.EXE Results_file.xlsx Index = Index! A1
En itemslist debe especificarse las variables de las
cuales se pretende exportar sus valores finales. Todo esto es la programación que se realiza en el archivo de
GAMS. Por su parte, debe también existir un archivo para la descarga de datos hacia MS Excel. Este archivo, al que llamaremos Results.xlsx, debe constar de tres solapas: “Index” y ”Results”. - Results: aquí se incorporan los datos en forma de
tablas. Pueden también incluirse parámetros. - Index: Proporciona la programación que ejecuta la
conexión final para la interfaz GAMS - MS Excel. En esta hoja de cálculo se nombran los variables a importar, declarando su ubicación y el rango que ocupan en la tabla correspondiente.
var set_name Sets!N#:N#
También, dentro de esta misma solapa se indica la
disposición de las dimensiones de las variables. - rdim: los datos se expresan verticalmente en
columnas. si existe una columna con datos del parámetro, si no se expresan los datos del parámetro en disposición de columna.
- cdim: los datos se expresan horizontalmente en filas. si existe una fila con datos del parámetro, si no se expresan los datos del parámetro en disposición de fila.
- dim: número de dimensiones en las que se expresa un parámetro; igual a la suma .
Gorrini, Federico Alberto____________________________________________________________________________________23
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
Tabla A.3.1. Especificación de Variables en el archivo Results.xlsx, solapa “Index” de MS Excel
rdim cdim dim
var Q.L Results!C3:E13 1 1 2
var P.L Results!H3:J13 1 1 2
var tto Results!C17:E27 1 1 2
var ttc Results!H17:J27 1 1 2
var N Results!M17:O27 1 1 2
Una vez realizada esta programación las variables
resultantes aparecerán actualizadas luego de cada ejecución de GAMS. Después, la manipulación de estos resultados para su análisis es muy sencillo. En este caso, resulta de interés el análisis de las curvas de declinación/recuperación de la presión en cada pozo, así como la evolución de la producción acumulada en el
tiempo. Para ello, se creó el archivo Analysis_Curves.xlsx, en el que los datos de performance de las curvas de cada pozo se encuentran ya vinculados a los datos importados por Results.xlsx, logrando que todos los datos se actualicen automáticamente luego de cada ejecución de GAMS.
Tabla A.3.2. Valor resultado del punto óptimo de las variables requeridas en la solapa “Results” del archivo Results.xlsx en MS Excel
Q.L
P.L [psi]
1 2
1 2
w1 w1 423.4 423.4
w1 w1 5,955 5,955 w2 w2 247.4 409.8
w2 w2 5,953 6,000
w3 w3 400.1 448.2
w3 w3 5,948 5,955 w4 w4 23.4 38.8
w4 w4 5,956 6,006
w5 w5 219.6 264.2
w5 w5 5,953 5,949 w6 w6 265.5 348.3
w6 w6 5,945 6,001
w7 w7 40.6 40.6
w7 w7 6,006 6,006 w8 w8 78.6 127.3
w8 w8 5,958 6,006
w9 w9 140.8 140.8
w9 w9 5,955 5,955 w10 w10 306.4 306.4
w10 w10 5,948 5,948
tto [days]
ttc [days]
N
1 2
1 2
1 2
w1 w1 19.22 19.22
w1 w1 10.78 10.78
w1 w1 2.00 2.00
w2 w2 20.76 0.00
w2 w2 9.24 60.00
w2 w2 2.00 1.00
w3 w3 30.00 11.66
w3 w3 30.00 18.34
w3 w3 1.00 2.00
w4 w4 20.64 0.00
w4 w4 9.36 60.00
w4 w4 2.00 1.00
w5 w5 21.25 14.17
w5 w5 8.75 5.83
w5 w5 2.00 3.00
w6 w6 14.17 0.00
w6 w6 5.83 60.00
w6 w6 3.00 1.00
w7 w7 0.00 0.00
w7 w7 60.00 60.00
w7 w7 1.00 1.00
w8 w8 17.95 0.00
w8 w8 12.05 60.00
w8 w8 2.00 1.00
w9 w9 20.26 20.26
w9 w9 39.74 39.74
w9 w9 1.00 1.00
w10 w10 30.00 30.00
w10 w10 30.00 30.00
w10 w10 1.00 1.00
Gorrini, Federico Alberto____________________________________________________________________________________24
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
ANEXO 4. PROGRAMACIÓN GRÁFICA MS EXCEL
Una vez conseguidos los resultados arrojados por GAMS, estos son exportados hacia el documento Results.xlsx, el cual a su vez los exportará hacia el archivo Pressure_Curve_Analysis.xlsx. En este último archivo se pretende graficar y analizar las curvas de performance de cada pozo sobre cada período de tiempo.
Tabla A.4.1. Resumen de resultados y parámetros de cada pozo
Results
Q.L 423.4 423.4
P.L [psi] 5,955 5,955
tto [days] 19.2 19.2
ttc [days] 10.8 10.8
N 2 2
Tcycle [days] 60 60
data well 1 C1 0.05457 C2 0.28742 C1
rec 27.285
C2rec 0.28742
pressure boundaries 0
Pup [psi] 6,009 6,009
Plow [psi] 5,880 5,880
Para lograr esto, se importan los datos hacia hojas de cálculo individuales donde se expresan mediante las siguientes tablas como la Tabla A.4.1.
Es importante que el archivo Results.xlsx
permanezca cerrado mientras se ejecuta GAMS, de lo contrario, los datos no serán importados por MS Excel.
Como un pozo puede tener 1, 2 o 3 subciclos en cada período, esto supone una dificultad a la hora de intentar que MS Excel grafique en forma automática a partir de los resultados provistos. Para lograr graficar en MS Excel a partir de los resultados obtenidos, se debe calcular al valor de las funciones de la presión en diversos puntos en el tiempo para luego graficarlos y obtener las curvas. Sin embargo, es difícil que MS Excel sepa si debe usar la ecuación de decrecimiento o recuperación de la presión en el pozo o cuántos subciclos se presentan. Por tanto, se recurre al cálculo de un número NP de puntos dentro del período de tiempo T -en este caso particular, se toman 120 puntos de cálculo por período-. Para lograr esto se recurre a la función condicional de MS Excel:
SI (prueba_lógica, [valor_si_verdadero], [valor_si_falso])
A continuación se expresan las fórmulas a
aplicar en cada segmento de tiempo en función del número de subciclos.
Con las consideraciones expresadas a
continuación, es posible programar las respectivas fórmulas en MS Excel a fin de representar el comportamiento de la presión y producción de cada pozo en función del tiempo y obtener los gráficos correspondientes.
Tómese en consideración las siguientes ecuaciones aplicadas para representar cada segmento de las curvas según el número de subciclos que se presenten. En los casos en que , para el tiempo basta con dividir el tiempo del período en NP partes y multiplicarlo por el contador respectivo al punto en cuestión, mientras que para la presión sólo se debe imponer el valor .
Gorrini, Federico Alberto____________________________________________________________________________________25
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Planning.
0 t o 60
1 2
0 30 6030 + t ot o
1 2 3 4
0 t o 20 20 + t o 40 6040 + t o
21 3 4 5 6
Time [days]
Gorrini, Federico Alberto____________________________________________________________________________________26
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Optimization
0 t o 60
1 2
0 30 6030 + t ot o
1 2 3 4
0 t o 20 20 + t o 40 6040 + t o
21 3 4 5 6
Pressure [psi]
En ocasiones puede que la recuperación de la presión del último subciclo correspondiente a un dado período se concrete antes que el período termine. Es términos matemáticos esto puede expresarse como . En estos casos es necesario realizar
una corrección sobre las fórmulas introducidas para calcular la presión del pozo en tales instancias; de lo
contrario, la presión graficada superará a , lo cual es técnicamente imposible. En los subciclos que se presente ésta situación deberá insertarse un condicional adicional en la fórmula de cálculo de la presión que indique que cuándo la presión calculada sea superior a , a ésta se le deberá imponer el valor
Gorrini, Federico Alberto____________________________________________________________________________________27
UNIVERSIDAD NACIONAL DEL SUR
OILFIELD PRODUCTION PLANNING
Mixed-Integer Multiperiod Model for the Planning of Oilfield Production
Documento de Trabajo. Septiembre 2014
Bahía Blanca - Argentina
UNIVERSIDAD NACIONAL DEL SUR Oilfield Production Optimization
0 t o 60
1 2
0 30 6030 + t ot o
1 2 3 4
0 t o 20 20 + t o 40 6040 + t o
21 3 4 5 6
Production [bbl]
Gorrini, Federico Alberto____________________________________________________________________________________28