93
ALGORITMOS DE OPTIMIZACIÓN APLICADOS A LA ADQUISICIÓN DE IMÁGENES EN SATÉLITES DE OBSERVACIÓN DE LA TIERRA PROYECTO FIN DE CARRERA INGENIERÍA AERONÁUTICA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (UNIVERSIDAD DE SEVILLA) DEPARTAMENTO DE INGENIERÍA AEROESPACIAL Y MECÁNICA DE FLUIDOS AUTOR: Vera Flores, Carlos Iván TUTORES: Vázquez Valenzuela, Rafael Perea Rojas-Marcos, Federico

Proyecto Fin de Carrerabibing.us.es/proyectos/abreproy/60110/fichero/pfc_carlos...ALGORITMOS DE OPTIMIZACIÓN APLICADOS A LA ADQUISICIÓN DE IMÁGENES EN SATÉLITES DE OBSERVACIÓN

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

ALGORITMOS DE OPTIMIZACIÓN APLICADOS A LA ADQUISICIÓN DE

IMÁGENES EN SATÉLITES DE OBSERVACIÓN DE LA TIERRA

PROYECTO FIN DE CARRERA INGENIERÍA AERONÁUTICA

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

(UNIVERSIDAD DE SEVILLA)

DEPARTAMENTO DE INGENIERÍA AEROESPACIAL Y MECÁNICA DE FLUIDOS

AUTOR: Vera Flores, Carlos Iván TUTORES: Vázquez Valenzuela, Rafael Perea Rojas-Marcos, Federico

ii

Tabla de Contenidos

1 Introducción.............................................................................................................. 1 1.1 Marco Global.................................................................................................... 1 1.2 Estructura General del Proyecto....................................................................... 5

2 Formulación de SAP como un problema de programación lineal............................ 7 2.1 Metodología de Resolución.............................................................................. 7 2.2 Simplificaciones y Alcance del proyecto ....................................................... 11 2.3 Formulación del Problema de Planificación EOSs......................................... 12

2.3.1 Enunciado del Problema y Notación ...................................................... 13 2.3.2 Formulación de Modelos........................................................................ 16

2.3.2.1 Modelo Simplificado I: q-satélites y sensor fijo................................. 16 2.3.2.2 Modelo Simplificado II: q-satélites y sensor variable........................ 21 2.3.2.3 Modelo con Restricciones I: q-satélites, sensor fijo y restricciones de duty cycle............................................................................................................ 25

2.4 Herramienta de Geometría Computacional .................................................... 26 3 Algoritmos Heurísticos para la resolución del problema SAP............................... 33

3.1 Algoritmo GRASP para resolución del problema de planificación EOSs ..... 34 4 Análisis y Resultados ............................................................................................. 36

4.1 Estudios Estadísticos sobre el tiempo de cálculo de la matriz Q.................... 36 4.1.1 Modelo I (Matriz Q 2-D): q-satélites con sensor fijo ............................. 36 4.1.2 Modelo II (Matriz Q 3-D): q- satélites con sensor variable ................... 38

4.2 Comparativa entre resultados heurísticos y exactos....................................... 40 4.2.1 Análisis de Resultados............................................................................ 43 4.2.2 Ejemplo................................................................................................... 45

5 Conclusiones........................................................................................................... 53 6 Bibliografía............................................................................................................. 56 7 Apéndice: Descripción del Código Empleado........................................................ 58

7.1 Estructura general de cálculo de matriz Q...................................................... 58 7.1.1 Código SATVAR..................................................................................... 65 7.1.2 Código CALC......................................................................................... 72 7.1.3 Código INTVAR...................................................................................... 78

7.2 Algoritmo heurístico de optimización: Código q-GRASP............................. 80

iii

Lista de Figuras

FIGURA 1.1 EJEMPLO DE SOLUCIÓN NO ÓPTIMA GENERADA POR SAVOIR .....................................................3 FIGURA 1.2 EJEMPLO DE SOLUCIÓN ÓPTIMA USANDO UNA APROXIMACIÓN HEURÍSTICA DE DOS PASOS CON

SAVOIR ...............................................................................................................................................4 FIGURA 2.1 METODOLOGÍA DE RESOLUCIÓN DE SAP .................................................................................11 FIGURA 2.2 EJEMPLO SIMPLIFICADO DE SAP ..............................................................................................17 FIGURA 2.3 SUBREGIONES GENERADAS EN ℜ POR LA INTERSECCIÓN DE LAS ADQUISICIONES...................19 FIGURA 2.4 EJEMPLO ADQUISICIONES GENERADAS POR 10 SATÉLITES Y 5 POSICIONES DE SENSOR.............23 FIGURA 2.5 EJEMPLO SUBREGIONES GENERADAS POR 10 SATÉLITES Y 5 POSICIONES DE SENSOR................24 FIGURA 2.6 POLÍGONOS SOBRES LOS QUE SE APLICAN LAS OPERACIONES GEOMÉTRICAS............................28 FIGURA 2.7 OPERACIÓN DE DIFERENCIA EN POLYGONCLIP.....................................................................29 FIGURA 2.8 OPERACIÓN DE INTERSECCIÓN EN POLYGONCLIP.................................................................30 FIGURA 2.9 OPERACIÓN XOR EN POLYGONCLIP.....................................................................................31 FIGURA 2.10 OPERACIÓN DE UNIÓN EN POLYGONCLIP............................................................................32 FIGURA 4.1 TENDENCIAS COSTE COMPUTACIONAL VERSUS Nº DE SATÉLITES (MATRIZ Q); SENSOR FIJO.....38 FIGURA 4.2 TENDENCIAS COSTE COMPUTACIONAL VERSUS Nº DE ADQUISICIONES (MATRIZ Q); SENSOR

VARIABLE ..........................................................................................................................................40 FIGURA 4.3 SUBREGIONES GENERADAS EN LA INSTANCIA 10 (30 SATÉLITES / 10 MODOS DE SENSOR) ........45 FIGURA 4.4 TOTAL DE ADQUISICIONES A CONSIDERAR SOBRE LA INSTANCIA 10.........................................46 FIGURA 4.5 REGIÓN DE INTERÉS A CUBRIR (INSTANCIA 10) ........................................................................47 FIGURA 4.6 1ª ADQUISICIÓN DE LA SOLUCIÓN ÓPTIMA (INSTANCIA 10) .......................................................47 FIGURA 4.7 2ª ADQUISICIÓN DE LA SOLUCIÓN ÓPTIMA (INSTANCIA 10) .......................................................48 FIGURA 4.8 3ª ADQUISICIÓN DE LA SOLUCIÓN ÓPTIMA (INSTANCIA 10) .......................................................48 FIGURA 4.9 4ª ADQUISICIÓN DE LA SOLUCIÓN ÓPTIMA (INSTANCIA 10) .......................................................49 FIGURA 4.10 5ª ADQUISICIÓN DE LA SOLUCIÓN ÓPTIMA (INSTANCIA 10) .....................................................49 FIGURA 4.11 1ª ADQUISICIÓN DE UNA SOLUCIÓN CASI-ÓPTIMA (INSTANCIA 10) ..........................................50 FIGURA 4.12 2ª ADQUISICIÓN DE UNA SOLUCIÓN CASI-ÓPTIMA (INSTANCIA 10) ..........................................50 FIGURA 4.13 3ª ADQUISICIÓN DE UNA SOLUCIÓN CASI-ÓPTIMA (INSTANCIA 10) ..........................................51 FIGURA 4.14 4ª ADQUISICIÓN DE UNA SOLUCIÓN CASI-ÓPTIMA (INSTANCIA 10) ..........................................51 FIGURA 4.15 5ª ADQUISICIÓN DE UNA SOLUCIÓN CASI-ÓPTIMA (INSTANCIA 10) ..........................................52 FIGURA 4.16 6ª ADQUISICIÓN DE UNA SOLUCIÓN CASI-ÓPTIMA (INSTANCIA 10) ..........................................52 FIGURA 7.1 ESTRUCTURA DE CÓDIGOS PARA EL CÁLCULO DE LA MATRIZ Q (3D) .......................................58 FIGURA 7.2 PSEUDOCÓDIGO EMPLEADO EN MATRIZQVAR........................................................................61 FIGURA 7.3 ADQUISICIONES DE UN SATÉLITE USANDO UN PASO DE VALOR 1..............................................66 FIGURA 7.4 ADQUISICIONES DE UN SATÉLITE USANDO UN PASO DE VALOR 0.1 ...........................................67 FIGURA 7.5 SUBREGIONES GENERADAS POR 3 SATÉLITES, CON 5 POSICIONES DE SENSOR Y PASO DE 1........68 FIGURA 7.6 ADQUISICIONES CORRESPONDIENTES A 3 SATÉLITES, CON 5 POSICIONES DE SENSOR Y PASO DE 1

..........................................................................................................................................................68 FIGURA 7.7 PSEUDOCÓDIGO EMPLEADO EN SATVAR..................................................................................69 FIGURA 7.8 SUBREGIONES GENERADAS TRAS EL CÓMPUTO DE 2 ADQUISICIONES........................................75 FIGURA 7.9 2 ADQUISICIONES DE SATÉLITE.................................................................................................75 FIGURA 7.10 SUBREGIONES GENERADAS TRAS EL CÓMPUTO DE 4 ADQUISICIONES......................................75 FIGURA 7.11 4 ADQUISICIONES DE SATÉLITES.............................................................................................75 FIGURA 7.12 SUBREGIONES GENERADAS TRAS EL CÓMPUTO DE 6 ADQUISICIONES......................................75 FIGURA 7.13 6 ADQUISICIONES DE SATÉLITES.............................................................................................75 FIGURA 7.14 PSEUDOCÓDIGO EMPLEADO EN CALC....................................................................................76 FIGURA 7.15 PSEUDOCÓDIGO EMPLEADO EN Q_GRASP................................................................................83

iv

Lista de Tablas

TABLA 4.1 TIEMPOS DE CÁLCULO DE LA MATRIZ Q PARA MODELO I (SENSOR FIJO) ....................................37 TABLA 4.2 ESTUDIO ESTADÍSTICO DE LA EVOLUCIÓN DEL COSTE COMPUTACIONAL DE Q (MODELO I)........37 TABLA 4.3 TIEMPOS DE CÁLCULO DE LA MATRIZ Q PARA MODELO II (SENSOR VARIABLE) .........................39 TABLA 4.4 ESTUDIO ESTADÍSTICO DE LA EVOLUCIÓN DEL COSTE COMPUTACIONAL DE Q (MODELO II) ......39 TABLA 4.5 TABLA DE EXPERIMENTOS.........................................................................................................41 TABLA 4.6 RESULTADOS HEURÍSTICOS I .....................................................................................................43 TABLA 4.7 RESULTADOS HEURÍSTICOS II ....................................................................................................43 TABLA 4.8 ANÁLISIS DE EXPERIMENTOS.....................................................................................................44

v

Lista de Abreviaturas y Acrónimos

• Adquisición:

Región fotografiada por un satélite en un determinado modo de sensor durante un

intervalo de tiempo ],[ 10 TT . Esta región no tiene que estar contenida de manera íntegra

en la región objetivo.

• CPLEX:

Optimizador o solver, en este trabajo programado con GAMS, para resolver problemas

de programación matemática.

• Duty Cycle:

Período de tiempo durante el cual, el satélite puede llevar a cabo la toma de

adquisiciones. Procesos tales como descarga de datos con estaciones terrestres, eclipses,

recarga de baterías, etc., hacen que sea imposible la adquisición de datos en todo el

período de tiempo considerado.

• EOSs: "Earth Observation Satellites"

Tipo de satélites geocéntricos cuya función es la recopilación de datos sobre la

superficie terrestre para diversos fines, usando tecnología de detección avanzada.

• GAMS: "General Algebraic Modelling System"

Software desarrollado por A. Brooke, D. Kendrick y A. Meeraus que permite resolver

problemas de optimización. Plantea un lenguaje de modelización que permite escribir en

un editor la formulación matemática del problema y posteriormente aplicarle una serie

de "solvers" o programas de resolución. En el contexto de este proyecto, se usa para

corroborar la fiabilidad de los resultados obtenidos mediante algoritmos heurísticos en

la resolución del SAP.

• GRASP: "Greedy Randomized Adaptive Search Procedures"

Procedimiento iterativo que consiste en una fase de construcción y una fase de búsqueda

local. Se obtiene una solución factible durante la fase de construcción aplicando un

vi

procedimiento GREEDY aleatorizado de la fase de construcción. En cada iteración se

agrega un nuevo elemento a la solución de la iteración anterior de acuerdo al valor de

una función GREEDY. En lugar de escoger siempre el elemento que mejora más la

función objetivo, se construye una lista con los k mejores candidatos y se selecciona uno

de ellos al azar. Mayor fiabilidad (para k>1) que el método GREEDY (que no es más

que un GRASP con k=1) para obtener la solución óptima.

• GREEDY ("Algoritmo Codicioso o Voraz"):

Algoritmo de optimización metaheurística que elige en cada paso una solución local

óptima. Son algoritmos sencillos de programar y rápidos, pero poco fiables.

• ILP: "Integer Linear Programming"

• MPP: "Mathematical Programing Problem"

• SAP: "Swath Acquisition Problem"

• SaVoir: "Swath Acquisition Viewer"

Herramienta visual de planificación y optimización usada para la gestión de EOSs.

Desarrollada por Taitus Software.

1

1 Introducción

1.1 Marco Global "Earth Observation Satellites" (EOSs) forman una clase de satélites geocéntricos cuya

función es recopilar datos terrestres para diversos fines, usando tecnología de detección

avanzada. Estos datos se usan en una gran variedad de disciplinas tales como cartografía,

meteorología, oceanografía, geodesia o ciencias atmosféricas, entre otras. El uso de esta

clase de satélites está evolucionando rápidamente y están surgiendo nuevas aplicaciones:

detección de incendios, gestión de crisis o identificación de zonas pesqueras. Por estas

razones, los EOSs se están convirtiendo en una importante herramienta de estudio e

inspección global del planeta Tierra. Hoy en día muchos países y compañías de todo el

mundo se encuentran implicadas de manera activa en el desarrollo de esta clase de

satélites y sus aplicaciones. Sin embargo, a pesar del crecimiento de la flota de satélites

tipo EOSs, su número no es suficientemente grande para satisfacer la cada vez más

creciente necesidad a nivel mundial de recopilación de datos terrestres. En consecuencia,

las misiones de los EOSs deben ser planificadas de forma eficiente para maximizar su

rendimiento.

Actualmente, la mayoría de las actividades de detección remota requieren una

coordinación manual de la flota de satélites y planificadores de misión o algoritmos de

programación (Bibliografía [2], [6] y [8]). Sin embargo, el número existente de EOSs y

la demanda de mejora en los tiempos de observación, está provocando que la

coordinación manual de las actividades de los EOSs esté llegando a ser inviable. Los

datos de observación deben ser procesados mediante algoritmos automáticos de

planificación, los cuales seleccionan y planifican el rendimiento de aquellos conjuntos

de subsatélites que proporcionan el máximo beneficio (éste dependerá del criterio

seleccionado en cada misión concreta) bajo restricciones operativas, tales como la

disponibilidad del satélite, restricciones térmicas o de potencia, capacidad de datos,

nubes, restricciones de duty cycle y el tiempo limitado que permanece cada satélite

sobre la región de interés.

2

Este problema tradicionalmente ha sido estudiado para el caso de un sólo satélite. No

obstante, hoy en día las operaciones relacionadas con la observación terrestre se están

enfocando hacia una planificación multisatélite, buscando tiempos más cortos de

observación. Planteando el problema de esta manera conjunta, en donde una serie de

requisitos deberán ser satisfechos por todos aquellos satélites pertenecientes a una

misma constelación o incluso a diferentes misiones en cada una de sus revoluciones

alrededor de la superficie terrestre, no es posible desacoplar el problema por órbita o

satélite. La planificación y optimización deberá ser realizada simultáneamente para

todos los satélites y órbitas consideradas.

Se debe tener en cuenta que muchas misiones requieren una rápida decisión y gestión

(por ejemplo, asistencia humanitaria o evaluación de daños) o bien existe un flujo de

datos que se modifica rápidamente (debido a nubes, por ejemplo). De esta manera, los

algoritmos de planificación deberán encontrar (idealmente) la solución óptima en

tiempo real (o casi real). Teniendo en cuenta el número de satélites operativos, el

número total de observaciones que son capaces de ejecutar, así como el número de

restricciones y opciones existentes para cada observación, los problemas de

planificación en aplicaciones derivadas del uso de satélites tipo EOSs podrían llegar a

convertirse en problemas largos y costosos (tanto económica como

computacionalmente). Los algoritmos que proporcionan soluciones exactas son "lentos"

y los heurísticos (algoritmos que proporcionan una solución óptima o casi óptima en

tiempos de ejecución cortos) "más rápidos". Haciendo uso de las nuevas técnicas

matemáticas para el manejo de datos y cálculos en paralelo, estos algoritmos son

capaces de encontrar una solución casi-óptima de manera rápida.

La Figura 1.1 y la Figura 1.2 son ejemplos generados con SaVoir ("Swath Acquisition

Viewer"; herramienta visual de planificación y optimización usada para la gestión de

EOSs, desarrollada por Taitus Software).

En estos ejemplos , la región de interés a cubrir es Italia y se puede observar como las

adquisiciones provenientes de diferentes satélites (franjas naranjas) se solapan entre sí

(franjas naranja oscuro), generando imágenes redundantes. La Figura 1.1 corresponde al

caso de una solución no óptima, formada por adquisiciones generadas automáticamente

usando un algoritmo simple de "máxima cobertura" y sin memoria. Esto implica que en

cada iteración se escoge aquella adquisición que aporta la mayor cobertura sobre la

3

región de interés, sin tener en cuenta las subregiones cubiertas por las adquisiciones

anteriores. Esta falta de memoria hace que cada adquisición se plantee

independientemente de las demás, lo cual genera solapamientos entre adquisiciones lo

que implica información (adquisiciones) redundantes. SaVoir selecciona la mejor

posición de sensor en cada pasada de cada satélite sobre la región de interés para

maximizar la cobertura. El problema de no existir memoria, aparte de obtener

información redundante proveniente de los solapamientos, es que no siempre se

consigue una cobertura completa de la región de interés.

Figura 1.1 Ejemplo de solución no óptima generada por SaVoir

4

Figura 1.2 Ejemplo de solución optimizada usando una aproximación heurística de dos pasos con

SaVoir

Por contra, la Figura 1.2 muestra una estrategia de cobertura usando el mismo

procedimiento que el llevado a cabo en la Figura 1.1 pero esta vez usando memoria; es

decir, en cada iteración, se escoge aquella adquisición que mayor cobertura tiene sobre

aquellas subregiones pertenecientes a la región de interés que aún no han sido cubiertas

por adquisiciones anteriores. Esto produce una solución con menores adquisiciones pero

no necesariamente será la mejor elección (en tiempo, cobertura, coste o combinación de

estos criterios). Resaltar que los ejemplos mostrados en la Figura 1.1 y la Figura 1.2

representan casos extremos y artificiales para mostrar la amplitud del problema

considerado, dado que SaVoir realiza un tratamiento más optimizado del problema de

planificación EOSs.

Esta formulación del Swath Acquisition Problem (SAP) observada en la Figura 1.2

implica una gestión de multisatélites y constelaciones como un problema de

programación matemática y propone el uso de algoritmos heurísticos como

procedimiento para obtener una solución factible. Los procesos actuales de resolución

del SAP están basados en simples enumeraciones de las soluciones posibles, los cuales

5

consumen demasiado tiempo de computación, principalmente cuando se consideran

diferentes criterios o prioridades sobre los satélites. Por otra parte, las restricciones

generadas por duty cycle (período de tiempo durante el cual, el satélite puede llevar a

cabo la toma de adquisiciones) y por otras de naturaleza dinámica (tales como baterías o

capacidad de descarga de datos) no se suelen incorporar dentro del proceso o modelo de

optimización. En consecuencia, los resultados obtenidos en los procesos existentes de

optimización pueden estar lejos del óptimo real. Sin embargo, si estas restricciones

dinámicas no son relevantes, el desarrollo adecuado de métodos matemáticos robustos

de optimización pueden generar estrategias de resolución factibles para abordar el

problema SAP.

1.2 Estructura General del Proyecto

En este proyecto se presenta un estudio preliminar del problema de planificación EOSs.

Se darán formulaciones de los modelos matemáticos que describen este problema en

tres situaciones de complejidad creciente. Así mismo, se desarrollarán algoritmos

heurísticos para resolver el problema y se llevarán a cabo una serie de experimentos

para comparar los resultados de los heurísticos con las soluciones óptimas. El objetivo

final de este proyecto será fijar las bases para el diseño e implementación de una

herramienta en tiempo real para la planificación de EOSs, la cual deberá incluir

algoritmos de optimización para misiones y constelaciones múltiples, capaces de

trabajar con restricciones operacionales realistas. Dicha herramienta será integrada en el

futuro en la herramienta de simulación orbital SaVoir (Taitus 2011), aunque dicha

integración queda fuera del alcance del presente proyecto.

Una de las ventajas de usar SaVoir es que su motor visual implementa algoritmos de

geometría computacional que puede calcular (como se vio en la Figura 1.1 y Figura 1.2)

las subregiones en las cuales es dividida la región de interés a causa de las diferentes

adquisiciones tomadas por el conjunto de satélites usados, así como conocer qué

subregiones cubre una adquisición concreta. Estos cálculos se realizan a través de la

integración de las capacidades GIS y el uso de una geometría 3-D. Los algoritmos

geométricos trabajan directamente en 3-D para evitar las singularidades inherentes en

6

las proyecciones bidimensionales, de tal manera que se podría llevar a cabo el estudio

de cualquier región sobre la superficie terrestre sin restricciones.

Finalmente, en la Sección 7 se describen todos los códigos generados, los cuales han

sido implementados íntegramente en MATLAB.

7

2 Formulación de SAP como un problema de programación lineal

2.1 Metodología de Resolución

La aproximación hacia un algoritmo eficiente y óptimo para resolver el problema de

planificación EOSs puede ser resumido en 4 pasos:

1. Formulación del problema mediante un conjunto de restricciones matemáticas

adecuadas, lo cual nos permitirá el uso de algoritmos de optimización estándar.

Se desarrollaron varios modelos de complejidad creciente:

• q-satélites con sensor fijo: los satélites sólo pueden tomar

adquisiciones del área de interés usando un único modo (ángulo) de

sensor; por simplicidad, se toma como ángulo fijo aquél que forma

90º con el vector tangente a la órbita del satélite y en dirección a la

superficie terrestre. La formulación de este modelo se llevará a cabo

en la Sección 2.3.2.1.

• q-satélites con sensor variable: el sensor de cada satélite puede variar

dentro de un cierto rango para tomar adquisiciones desde diferentes

ángulos; sin embargo, no podrán variar dicho ángulo durante una

pasada dada, pero sí en la siguiente. Este modelo es más realista que

el modelo I debido a que los satélites EOSs poseen la capacidad de

captar imágenes desde diferentes direcciones a través de la variación

de sus sensores. La formulación de este modelo se llevará a cabo en

la Sección 2.3.2.2.

• q-satélites con sensor fijo y duty cycle: en este modelo se introducen

las restricciones operativas provocadas por el duty cycle. La

resolución de este modelo se escapa del alcance de este proyecto,

debido a su complejidad matemática. No obstante, se mostrará un

8

posible planteamiento matemático para abordarlo. Dicha formulación

se describe en la Sección 2.3.2.3.

Se dejará como trabajo futuro la formulación de un cuarto modelo "realista", en

el cual se considerarían flotas de EOSs con sensor variable y se tendrían en

cuenta restricciones de duty cycle así como otras de naturaleza dinámica (tales

como baterías o capacidad de descarga de datos).

2. Resolución del problema de geometría computacional, lo cual implica computar

las intersecciones entre las adquisiciones de los satélites y la región de interés

(es decir, las subregiones en que queda dividida la región en estudio). Estas

intersecciones no son difíciles de calcular para los modelos más simplificados,

pero su complejidad aumenta considerablemente conforme aumentamos la

complejidad del modelo. En estos casos, se propondrán algoritmos rápidos y

eficientes, capaces de manejar regiones complejas, posiblemente no convexas y

con agujeros.

El problema de geometría computacional puede ser resumido en el cálculo de

todas las subregiones generadas por las intersecciones de las adquisiciones de los

satélites con la región de interés. Basándonos en estas intersecciones, se creará

una matriz Q en dos pasos, aumentando su complejidad a la vez que su utilidad

dentro de los algoritmos de optimización:

• Matriz Q-2D, cuyas entradas (i, j) tomarán el valor "1" cuando la

subregión i es cubierta por la adquisición j y "0" en caso contrario. El

problema de usar esta matriz es que en el caso de variar la posición del

sensor (modelo II, ver Sección 2.3.2.2), no tendremos información

directa (aunque sí de manera indirecta) de cuál es la posición del sensor

en un determinado satélite que cubre una determinada subregión.

• Matriz Q-3D, cuyas entradas (i, j ,k) tomarán el valor "1" cuando la

subregión i sea cubierta por el satélite j usando una posición de sensor k,

y "0" en caso contrario. Esta matriz Q será la que se usará en los

algoritmos heurísticos de optimización descritos en la Sección 3.

9

3. Implementación de algoritmos de optimización heurísticos y exactos a partir de

la matriz Q obtenida en el paso 2. Ya que dichos algoritmos de optimización

trabajarán con esta matriz, se deduce que una correcta resolución del problema

de planificación dependerá de la exactitud y eficacia en el cálculo de la matriz Q.

Dada la complejidad del problema y la necesidad de obtener soluciones en

tiempo real, el uso de algoritmos exactos (que utilizan optimizadores como

CPLEX, por ejemplo) no es, en general, factible. Descartado el uso de

algoritmos exactos para la resolución del SAP, se desarrollarán los siguientes

algoritmos heurísticos:

• GREEDY: también denominado algoritmo voraz, es un algoritmo

heurístico que consistente en elegir en cada paso el elemento que

mejora más una cierta función objetivo con la esperanza de llegar a

una solución general óptima. El desarrollo del GREEDY será el paso

previo para obtener un algoritmo GRASP.

• GRASP: por sus siglas en inglés "Greedy Randomized Adaptive

Search Procedures" (Bibliografía [4]). Amplía el concepto del

método GREEDY, de tal manera que en lugar de elegir en cada

paso el elemento que mejora más una cierta función objetivo,

forma un conjunto con los mejores k elementos candidatos para

después elegir uno de ellos aleatoriamente y ser parte de la

solución. Este método será el algoritmo heurístico a implementar

para obtener una solución óptima al problema de planificación

EOSs. Notar que si k=1, el GRASP resultante es un GREEDY.

Estos algoritmos nos permitirán obtener una solución factible en períodos de

tiempo reducidos. No obstante, la calidad de los resultados obtenidos mediante

estos algoritmos heurísticos debe ser corroborada con algoritmos que

proporcionen una solución exacta. Con esta finalidad, se computarán soluciones

óptimas encontradas a través de CPLEX. Finalmente, a través de la comparación

entre las soluciones heurísticas y exactas podremos extraer una idea de cuál es la

pérdida (en términos de costes) cuando se usan los métodos heurísticos

10

4. Integración de los algoritmos de planificación en la herramienta SaVoir: una vez

que el problema ha sido modelado y resuelto, el desarrollo de los algoritmos

debe ser integrado en una herramienta de simulación visual, fácilmente

manejable por el usuario. Dicha herramienta deberá permitir seleccionar un

conjunto de satélites reales, una región de interés a estudiar, un índice de costes

y un conjunto de restricciones, y devolver una solución óptima o casi óptima del

conjunto de adquisiciones en tiempo real. La herramienta usará propagadores de

órbitas en los satélites a partir de elementos orbitales, resolviendo los problemas

de geometría computacional involucrados y aplicando los algoritmos heurísticos

previamente desarrollados en el paso 3 para encontrar una buena solución.

La herramienta más indicada para llevar a cabo la implementación de estos

algoritmos es SaVoir, debido a que reúne una serie de requisitos que no poseen

otras herramientas desarrolladas con propósitos similares:

• Fácil de usar

• Coste reducido en comparación con otras soluciones del mercado

• Tiene implementado un motor de geometría computacional que

se puede usar para calcular la matriz Q explicada en el paso 2.

Para aclarar la metodología a seguir, la Figura 2.1 que se muestra a continuación

esquematiza el proceso de resolución.

11

Figura 2.1 Metodología de Resolución de SAP

2.2 Simplificaciones y Alcance del proyecto

En este proyecto se pretende desarrollar los dos primeros modelos mostrados en la

Sección 2.1, considerando que las restricciones de duty cycle que lleva implícita la

resolución del tercer modelo (q-satélites con sensor fijo y duty cycle) escapan del

alcance de dicho proyecto por su complejidad matemática a la hora de implementarlo en

lenguaje de programación. Los cálculos de geometría computacional se llevarán a cabo

usando un toolbox de MATLAB (Polygon Clipper, a través de la función PolygonClip)

el cuál será desarrollado en la siguiente Sección 2.4. Este toolbox hace un tratamiento

simplificado en la forma de las adquisiciones tomadas por los satélites, considerándolas

como polígonos sobre la superficie terrestre. Esta simplificación está justificada porque

Formulación Matemática Problema

de Planificación de EOSs

Resolución Problema de Geometría

Computacional

Implementación Algoritmos Heurísticos

Integración en Herramienta Visual

SaVoir

12

la órbita que describen los EOSs son órbitas heliosíncronas casi polares, cuyas huellas

se pueden aproximar como polígonos sobre la superficie terrestre; por tanto, se ignora la

mecánica orbital y se evita el uso de propagadores de órbitas que aumentarían la

complejidad del problema. La elección de usar Polygon Clipper en vez de SaVoir se

hizo por varias razones:

• Polygon Clipper es una herramienta intuitiva y fácil de usar.

• En este proyecto, la resolución del problema de planificación EOSs se ha

realizado íntegramente a través de la programación en MATLAB. Utilizar

SaVoir implica programar en código C++.

• La implementación de un algoritmo de resolución al problema de planificación

EOSs en SaVoir está planteado como paso final en la metodología de resolución

(ver Sección 2.1). Este algoritmo deberá resolver un modelo realista, no

formulado en este proyecto, en el cuál se trate un problema con restricciones y

se consideren satélites con sensor variable.

Finalmente se desarrollarán algoritmos heurísticos (GRASP) para la resolución del

problema, comparando sus resultados con soluciones exactas. Esta comparativa nos dará

una idea de cómo de fiable es nuestra resolución del problema de planificación a través

de dichos algoritmos heurísticos (Sección 4.2).

2.3 Formulación del Problema de Planificación EOSs En esta sección se introducen los conceptos matemáticos usados en los modelos de

planificación EOSs, que ayudarán a describir el problema introducido en las secciones 1

y 2.1. Se comenzará definiendo aquellos conceptos que juegan un papel importante en

nuestro modelo.

Seguidamente se formularán los modelos matemáticos que describen el problema de

planificación, para lo cual se plantearán 3 modelos de complejidad creciente,

introducidos brevemente en el paso 1 de la Sección 2.1:

13

• Modelo I: modelo más simplificado del problema. Se usarán satélites con sensor

fijo. Este modelo trata de clarificar el problema de formulación de programación

lineal.

• Modelo II: extensión del modelo I en el cual se usan satélites cuyo sensor es

variable.

• Modelo III: se consideran las restricciones de duty cycle (por lo cual, los

sensores sólo pueden ser usados durante un período limitado de tiempo) así

como satélites con sensores fijos.

Este último modelo no será resuelto; sólo se planteará su formulación como un

problema de programación matemática, debido a que por su complejidad, escapa del

alcance y objetivos de este proyecto.

2.3.1 Enunciado del Problema y Notación

Para formular el problema de planificación de EOSs, se definen los siguientes conceptos:

• ℜ es la región de interés, es decir, la superficie terrestre que queremos cubrir.

No se hace ninguna hipótesis sobre la forma de ℜ , es decir, esta formulación es

válida para cualquier tipo de región de interés que se desee estudiar.

• T es la franja de tiempo en la que se plantea el problema de planificación. T es

un intervalo [ FTT ,0 ], siendo 0T el tiempo inicial y FT el final.

• S es el conjunto de satélites considerados en el problema de planificación. Para

evitar hacer uso de propagadores de órbitas, se asume que la posición de cada

satélite de S es conocida y que puede ser calculada con suficiente precisión para

cada instante de tiempo en T.

14

• Para cada satélite Ss∈ , SP es el conjunto de posibles posiciones de ángulo del

sensor de cada satélite s.

• Dado un satélite Ss∈ , una posición de sensor SPp∈ y un intervalo de tiempo

[ 10,tt ], una adquisición ( )10,,, ttpsa es definida como la superficie terrestre

cubierta por la traza del satélite s durante el período de tiempo [ 10,tt ] en su

posición de sensor p. Se define también el coste de la adquisición a como 0>ac .

• A es el conjunto de todas las adquisiciones posibles dadas por el conjunto de

satélites, sus posibles posiciones de sensor y dentro de la franja temporal T,

( ) [ ]{ }TttPpSsttpsaA S ⊂∈∈:= 10,10 ,,,,, .

• Subregiones SR: la intersección del conjunto de adquisiciones A con la región de

interés ℜ define un conjunto de subregiones cuya unión es igual a la región de

interés ℜ . Así mismo, iSR es la subregión i contenida en la región ℜ .

Basándonos en estos conceptos, definiremos la admisibilidad de las adquisiciones para

el problema de planificación de EOSs. Diremos que una selección de n adquisiciones

( ){ } Anittpsa iiiii ⊂= ,...,1,,,, 10 es admisible si:

1. Cada satélite s en la selección no se usa más de una vez en un mismo instante de

tiempo, es decir:

[ ] [ ] φ=∩⇒==∀ jjiiji ttttssnji 1010 ,,,,...,1, .

2. Si escogemos un satélite s de la selección más de una vez con diferentes

posiciones de sensor, se necesitará un período de tiempo Stp∆ para cambiar su

posición de sensor, es decir:

[ ] [ ] φ=∆+∩∆+⇒≠==∀ jjj

iii

jiji tptttpttppssnji 1010 ,,,,,...,1, .

3. Profundidad de la cobertura, jd : si una subregión de ℜ , jSR , es especialmente

relevante, es aconsejable llevar a cabo más de una adquisición. El parámetro jd

15

es un número entero no-negativo, que permite tomar más de una adquisición de

regiones "especialmente interesantes". Permite también incluir regiones con un

valor de 0=jd , lo cual significaría que se trata de regiones "sin interés" y por

tanto no sería necesario realizar adquisiciones de las mismas.

4. Restricciones de duty cycle: para cada satélite s existe un conjunto de Sn

subintervalos, Sn

SS

sTTT ,...,, 21 , tal que TT S

jnjS =∪ =1 , y un número

[ ]100,0∈SSLOT tal que s puede ser usado en cada SiT solamente durante un

porcentaje SLOT de tiempo, es decir:

[ ]( ) )(,,,...,1 10Sjs

SS

Sj

iis TlengthSLOTTttlengthnjs

i

≤∩=∀∀ ∑=

,

donde ( )100

sSLOTlength = .

Con esta notación, nos encontramos en posición de formular el problema de

planificación EOSs como sigue:

"Encontrar una selección óptima de adquisiciones admisibles

},...,1,]),[,,({ 10 niAttpsa iiiii =∈ , tal que i

ni a1=⊂ℜ U . Si alguna de las subregiones

jSR se encuentran marcadas como "no relevante" a través del parámetro de

profundidad de cobertura 0=jd , la última condición debería ser cambiada por

inijdj aSR

j 10: =≠ ⊂ UU ".

En este trabajo la selección se considerará óptima si minimiza una cierta función

objetivo }),...,({ 1 naaF . F puede tener diferentes definiciones en función del

objetivo perseguido, por ejemplo:

• nF = (minimiza el número total de adquisiciones posibles)

• ∑ == n

i aicF

1 (minimiza el coste de las adquisiciones)

• ini tF 1,...,1max== (minimiza el instante en que se cubre toda la región ℜ )

16

• Una combinación de las anteriores

Alternativamente, el objetivo podría ser maximizar la superficie cubierta, imponiendo

requerimientos de tiempo, costes, etc.

2.3.2 Formulación de Modelos

2.3.2.1 Modelo Simplificado I: q-satélites y sensor fijo

El primer modelo a estudiar implica el uso de q-satélites con sensor fijo, sin

restricciones de duty cycle; ello implica que pueden ser usadas las adquisiciones

completas de los satélites, siendo el conjunto de adquisiciones un conjunto finito cuyas

intersecciones con la región de interés ℜ generará un cierto número de subregiones

sobre dicha región. En este caso, dado un tiempo máximo de operación maxT , se

considerará una franja de tiempo ],0[ maxT . El objetivo será seleccionar el conjunto de

adquisiciones que durante el intervalo de tiempo permitido cubran la región ℜ con el

mínimo coste posible.

Sean naa ,...,1 el conjunto de posibles adquisiciones, obtenidas en este orden conforme

aumenta el tiempo de operación. Entonces, na será la última adquisición en poder ser

usada, lo que significa que 1+na ocurriría después de maxT . El tiempo en el cual la

adquisición ia comienza a escanear la región ℜ y el tiempo en el cual termina de

escanear dicha región, 0it y 1

it respectivamente, son conocidos y por tanto serán datos de

entrada. Notar que para que el modelo tenga coherencia, necesitamos asumir que

ittttt iiiii ∀≥≤≤ + 0,, 001

010 , así como max1 Ttn ≤ .

Como ejemplo simplificado de esta situación, consideremos el caso mostrado en la

Figura 2.2.

17

Figura 2.2 Ejemplo simplificado de SAP

La región de interés ℜ aparece como el rectángulo rojo y las cuatro posibles

adquisiciones },,,{ 4321 aaaa son los demás rectángulos de color mostrados en dicha

figura.

Se podría pensar en un algoritmo simple, el cual escogería primero la adquisición 1a

para cubrir una cierta área de la región ℜ . Iterativamente, se irían escogiendo las

adquisiciones 2a , 3a y 4a progresivamente, para ir cubriendo nuevas áreas de la región

ℜ que aún no han sido cubiertas por las adquisiciones anteriores. Con este proceso, las

cuatro adquisiciones son necesarias para cubrir toda la región de interés ℜ . Se puede

observar como la adquisición 1a es redundante y no debería aparecer en la solución

óptima, es decir, con las adquisiciones 2a , 3a y 4a se cubre toda la región de interés.

Notar que este ejemplo ha sido introducido sólo para mostrar que algunas

aproximaciones o soluciones aportarían una solución factible (si existen suficientes

adquisiciones disponibles), pero la mejor u óptima solución no sería obtenida.

18

Con la finalidad de resolver el problema óptimamente, se formulará como un problema

de programación matemática (MPP, por sus siglas en inglés). Para una completa y

exhaustiva introducción a este tipo de problemas, consultar Bibliografía [1] y [11].

Sea ix una variable binaria (sólo puede tomar valor "0" ó "1") que expresa si la

adquisición ia es usada ( 1=ix ) o no ( 0=ix ) y sea ic el coste de usar dicha adquisición

ia ( 0>ic ). Entonces, el problema de planificación EOSs puede ser formulado como:

nix

aas

xc

i

ixi

i

n

ii

i

,...,2,1},1,0{

..

min

1:

1

=∀∈

ℜ⊃=

=∑

U(1)

Notar que este problema puede ser no factible. Si existiese una subregión de ℜ no

cubierta por ninguna adquisición disponible, entonces la restricción de (1) nunca podría

ser satisfecha. Para poder obtener una solución al problema (1), se modelará como un

problema de programación lineal entera (ILP, Integer Linear Programming; consultar

Bibliografía [1] y [11]). De este tipo de problemas se extrae que las restricciones de (1)

deben ser expresadas como restricciones lineales. A continuación, se mostrará como se

llevará a cabo.

Sean },...,{ mi SRSR las subregiones en las cuales ℜ es dividida considerando todas las

intersecciones de las adquisiciones ia con ℜ y entre ellas mismas. A partir de este

conjunto de subregiones, obtendremos una matriz Q, cuyas entradas ijq tomarán el valor

"1" si la subregión jSR es cubierta por la adquisición ia , y "0" en caso contrario. Con

esta nueva matriz, el problema (1) puede ser formulado como:

19

nix

mjdqxas

xc

i

j

n

iiji

i

n

ii

,...,2,1},1,0{

,...,1..

min

,1

1

=∀∈

=∀≥∑

=

=

(2)

Observando esta formulación del problema, vemos como en las restricciones de (2) se

han incluido las restricciones de profundidad de cobertura, forzando a cada subregión

jSR a ser cubierta por al menos jd adquisiciones diferentes )( +Ζ∈jd .

Aplicando nuestro modelo ILP (2) al ejemplo mostrado en la Figura 2.2, comprobamos

que algunas de las adquisiciones no son necesarias para cubrir ℜ . Consideraremos que

todos los costes son iguales, y por lo tanto, por la linealidad del problema, podemos fijar

el valor a 1=ic para todo 4,...,1=i . En este ejemplo, la región de interés ℜ es

subdividida en 16 subregiones como se ve en la Figura 2.3.

Figura 2.3 Subregiones generadas en ℜ por la intersección de las adquisiciones

20

La matriz Q resultante es:

=

0010

0100

0110

0110

0111

1000

1000

1001

0010

1010

1100

1100

1101

1110

1110

1111

Q

Aclaremos el significado de las filas y columnas de la matriz Q. La primera fila indica

que la subregión 1SR es cubierta por todas las adquisiciones },,,{ 4321 aaaa mientras

que por ejemplo, la fila 16 indica que la subregión 16SR es solamente cubierta por la

adquisición 2a .

Por otro lado, la primera columna, por ejemplo, indica que la adquisición 1a cubre las

subregiones 1SR , 4SR , 9SR y 12SR .

Destacar que la matriz Q puede ser simplificada expresando todas las filas que son

iguales a través de una única fila (lo cual implica unir las correspondientes subregiones).

De la misma forma, este proceso puede realizarse con las columnas. Observando las

filas de la matriz, observamos como las filas 2/3, 5/6, 8/16 10/11 y 13/14 son iguales

entre sí, lo que significaría, por ejemplo, que las subregiones 13SR y 14SR son cubiertas

por los mismos satélites, y por lo tanto, podrían ser tratadas como una única subregión.

De esta manera, el tamaño del problema (2) se podría llegar a reducir de manera

considerable. No obstante, se lleve a cabo o no esta reducción del problema, existe aún

una cuestión abierta, relativa a si se puede calcular siempre la matriz Q.

21

La complejidad computacional de la matriz Q podría llegar a convertirse en un cuello de

botella del algoritmo, siendo mayor que incluso el propio problema ILP; por lo tanto, se

deduce que es necesaria una implementación eficiente de las operaciones de geometría

computacional (unión, intersección y substracción). Además, debería introducirse un

sistema de valoración de las subregiones a cubrir, es decir, un sistema que sea capaz de

despreciar aquellas subregiones cuya área sea menor que un cierto valor. Este sistema

de valoración de las subregiones ha sido implementado en los códigos desarrollados

(ver Sección 7.1).

Fijando jd j ∀= 1 , la solución al problema (2) con los datos del ejemplo es

1,0 4321 ==== xxxx , lo cual significa que, como se anticipó, la adquisición 1a no es

necesaria para cubrir el área de interés ℜ .

2.3.2.2 Modelo Simplificado II: q-satélites y sensor variable

Suponemos que los satélites poseen un sensor variable, es decir, el ángulo del sensor

puede cambiar respecto a la perpendicular a la superficie terrestre en un cierto rango,

con la finalidad de obtener mejores adquisiciones de la región de interés. En este

modelo, suponemos que el modo (ángulo) del sensor del satélite puede ser variado en

cada revolución, pero debe mantenerse en dicho modo durante el período de tiempo en

el cual se encuentra escaneando la región de interés. También se asume que el sensor

posee K posibles modos discretos (típicamente )256≤K , llevando a cabo una

simplificación del modelo en el cuál se establece que todos los satélites posean el

mismo número de posiciones de sensor. El anterior modelo simplificado (2) puede ser

fácilmente adaptado a este caso añadiéndole a cada variable un superíndice k (que

especifica el modo) y el conjunto de restricciones que evitan cambiar dicho modo a lo

largo de una misma adquisición. Por lo tanto, sea kix una variable binaria, que toma el

valor "1" si la adquisición i es tomada con el sensor en posición k y "0" en caso

contrario. Ahora se deberán construir las subregiones de ℜ teniendo en cuenta que a lo

largo de todas las revoluciones de los satélites, se generarán K adquisiciones por satélite.

La matriz Q ahora se convertirá en tridimensional, cuyas entradas kijq tendrán valor "1"

22

si la subregión jSR puede ser fotografiada (cubierta) por la adquisición ia usando su

thk posición de sensor, y tomarán un valor "0" en caso contrario.

Como consecuencia de todo lo anterior, el problema (2) se transforma en:

Kknix

nix

mjdqxas

xc

ki

K

k

ki

K

kj

n

i

kij

ki

ki

K

k

n

ii

,...,2,1,,...,1},1,0{

,...,1,1

,...,1,..

min

1

1 1

1 1

=∀=∀∈

=∀≤

=∀≥

∑∑

∑∑

=

= =

= =

(3)

El primer conjunto de restricciones de (3) establece que todas las subregiones deben ser

cubiertas por al menos una adquisición en alguno de sus posibles modos de sensor. El

segundo conjunto de restricciones fuerza a que una misma adquisición no pueda ser

usada en más de una posición, es decir, una vez seleccionada una adquisición con un

determinado modo de sensor (en un satélite concreto), el resto de las adquisiciones

obtenidas por ese mismo satélite pero usando posiciones de sensor diferentes a la

seleccionada en la adquisición, deben ser eliminadas o no consideradas en el problema

(3).

Para dar una idea de la magnitud del problema, consideremos un ejemplo en el que

tenemos 10 satélites, con 5 posiciones de sensor y un paso de 1 entre modos de sensor

contiguos (distancia entre adquisiciones contiguas para un mismo satélite, en unidades

de longitud). El total de las adquisiciones a considerar en el problema se puede observar

en la Figura 2.4, donde el rectángulo rojo representa el área de interés ℜ . El número

total de adquisiciones es de 50 (10 satélites con 5 modos de sensor posible).

23

Figura 2.4 Ejemplo adquisiciones generadas por 10 satélites y 5 posiciones de sensor

Así mismo, en la Figura 2.5 se muestra el conjunto de subregiones generadas por las

intersecciones de las 50 adquisiciones con la región de interés, donde por claridad en el

dibujo, no se han numerado. En total, en este problema de planificación EOSs se

deberán cubrir 525 subregiones con las restricciones definidas en (3).

24

Figura 2.5 Ejemplo subregiones generadas por 10 satélites y 5 posiciones de sensor

La matriz Q generada en este ejemplo es una matriz tridimensional de tamaño 10x525x5.

A continuación, se muestra un extracto de dicha matriz:

q(1,1,1)=1

q(1,1,2)=1

q(1,1,3)=0

q(1,1,4)=0

q(1,1,5)=0

q(2,1,1)=1

q(2,1,2)=1

q(2,1,3)=1

q(2,1,4)=1

q(2,1,5)=0

q(3,1,1)=0

q(3,1,2)=0

q(3,1,3)=0

q(3,1,4)=0

25

q(3,1,5)=0

Destacar que los índices de esta matriz Q (generada por MATRIZQVAR; ver código y

estructura en la Sección 7.1) cambian de significado respecto a lo explicado en

secciones anteriores. Ahora, cada elemento (i, j, k) tendrá valor "1" si el satélite i cubre

la subregión j en su posición de sensor k. Siguiendo esta notación, la segunda

componente q(1,1,2)=1 indica que la subregión 1 es cubierta por el satélite 1 en su

modo de sensor 2, mientras que la última componente de este extracto de la matriz Q,

q(3,1,5)=0, implica que la subregión 1 no es cubierta por el satélite 3 cuando usa un

modo de sensor 5.

2.3.2.3 Modelo con Restricciones I: q-satélites, sensor fijo y restricciones de duty cycle

En este modelo se asume que cada adquisición ia sólo puede usarse por un período

limitado de tiempo, iSLOT . Ahora, las variables son función del tiempo y las

restricciones se convierten en integrales y sumas.

tix tomará el valor "1" si la adquisición ia es usada en el instante t y "0" en caso

contrario, así como tiyq será "1" si la adquisición ia puede fotografiar el punto ℜ∈y en

el instante t. Este problema entraña mucha mayor complejidad que los dos modelos

anteriores, debido a que ahora tenemos que buscar funciones en lugar de sólo valores de

variables. Con todo esto, este modelo se formula de la siguiente forma:

],0[,,...,1},1,0{

],0[,)(

1

,0

,...,1,..

min

max

max

1

1

1

0

1

0

1

0

Ttnix

TtxdyqA

ydtq

niSLOTdtxas

dtxc

ti

ti

tyi

n

i

t

t

tyi

i

t

t

ti

n

i

t

t

tii

i

i

i

i

i

i

∈∀=∀∈

∈∀≤ℜ

ℜ∈∀>

=∀≤

∑∫

∑ ∫

=

=

(4)

26

El primer conjunto de restricciones de (4) asegura que cada adquisición se usa no más

de su tiempo límite. El segundo conjunto de restricciones de (4) fuerza a que cada punto

de la región de interés (ℜ ) sea cubierto por al menos una adquisición en al menos un

intervalo de tiempo no degenerado. Notar que de esta manera, evitamos la paradoja de

adquirir sólo un conjunto finito de instantes, teniendo completamente escaneada el área

de interés con un coste nulo. El tercer conjunto de restricciones de (4) indica que si un

punto ℜ∈y ha sido cubierto por la adquisición ia en el instante de tiempo t, entonces

tix deberá ser igual a "1" ( )(ℜA es el área de ℜ ).

2.4 Herramienta de Geometría Computacional

Como paso previo antes de formular matemáticamente el problema de planificación, se

presenta en esta sección una descripción breve de la herramienta seleccionada para

realizar los cálculos de geometría computacional. En el paso 2 de la Sección 2.1, se dejó

entrever la necesidad de disponer de una herramienta capaz de computar las subregiones

en que queda dividida la región de interés debido a su intersección con las diferentes

adquisiciones de los satélites.

Se optó por el uso del toolbox de Matlab denominado Polygon Clipper. Se ha elegido

esta herramienta por las siguientes razones:

• Herramienta intuitiva y fácil de manejar.

• Gratuita (teniendo licencia de MATLAB).

• Implementa una gran diversidad de operaciones de geometría computacional:

operaciones de unión y diferencia, cálculo de áreas, posibilidad de usar zonas

con agujeros, etc.

La función de geometría computacional usada por esta herramienta posee la siguiente

estructura:

).,,( 21 índiceSSppolygoncliA =

27

1S y 2S corresponden a los polígonos sobre los cuales queremos realizar la operación

geométrica y el campo índice expresa la operación geométrica que queremos llevar a

cabo (diferencia, unión, intersección,...).

Los polígonos que actúan como argumentos de entrada en la función se deben expresar

de la siguiente manera:

),,""],[,""],[,"(" iholeSySxstructS YXi =

donde ][ XS y ][ yS representan las coordenadas X e Y de los vértices del polígono,

respectivamente. Destacar que dichas coordenadas deben ser introducidas en forma de

vector y recorriendo los vértices del polígono en sentido antihorario. El campo hole

hace referencia a si el polígono posee un agujero (en cuyo caso i=1) o no (i=0).

En todos los cálculos de geometría computacional desarrollados a lo largo de este

proyecto se han considerado polígonos llenos (sin agujeros) por simplicidad; por lo

tanto, el campo hole se considerará fijado a "0".

Como se ha comentado antes, el campo índice en la función polygonclip permite

escoger la operación geométrica que vamos a aplicar sobre los polígonos de entrada a la

función. Este índice puede tomar valores comprendidos entre "0" y "3". Las figuras

siguientes muestran la correspondencia entre cada valor del índice y la acción

geométrica llevada a cabo sobre los polígonos originales (rojo y azul), siendo los

polígonos en verde el resultado de dicha operación:

28

Figura 2.6 Polígonos sobres los que se aplican las operaciones geométricas

29

• "0" (Diferencia): resta al primer polígono del argumento de entrada el

segundo polígono

Figura 2.7 Operación de diferencia en POLYGONCLIP

30

• "1" (Intersección): calcula el polígono resultante de la intersección entre

ambos

Figura 2.8 Operación de intersección en POLYGONCLIP

31

• "2" (XOR): calcula los polígonos resultantes al restar el polígono

intersección a los polígonos originales (inputs). En este caso, tendremos dos

output.

Figura 2.9 Operación XOR en POLYGONCLIP

32

• "3" (Union): calcula el polígono resultante de la suma entre los polígonos

originales

Figura 2.10 Operación de unión en POLYGONCLIP

En nuestros cálculos, sólo necesitaremos usar las operaciones de diferencia ("0") e

intersección ("1"):

• Intersección: para conocer las subregiones que el satélite cubre sobre la región

de interés.

• Diferencia: para actualizar la región de interés, eliminando las zonas ya cubiertas

por los satélites y seguir operando con las zonas que aún quedan por cubrir.

33

3 Algoritmos Heurísticos para la resolución del

problema SAP

Debido a la complejidad del problema a resolver y la necesidad de obtener una "buena"

solución en un período de tiempo relativamente corto, es necesario aplicar algoritmos

heurísticos y/o metaheurísticos. Los algoritmos heurísticos son métodos que permiten

obtener, de manera rápida, una solución que se espera sea cercana a la solución óptima.

Para una introducción acerca de estos métodos heurísticos, consultar Bibliografía [5] y

[10].

En este trabajo se aplicará un algoritmo GRASP (Greedy Randomized Adaptive Search

Procedure) al problema de planificación EOSs. Este tipo de algoritmo heurístico ha sido

ampliamente utilizado para resolver problemas de optimización a gran escala, desde el

trabajo pionero desarrollado por Feo y Resende (Bibliografía [4]).

Un proceso GRASP consiste en añadir elementos de manera aleatoria a la solución del

problema, extraídos del conjunto de Ν∈k elementos que de manera individual, aportan

la mayor mejora en la función objetivo cuando se añade dicho elemento a la solución

previa. Este proceso es repetido y cada una de las diferentes (posibles) soluciones

obtenidas forman un conjunto de soluciones factibles. La solución final escogida por

GRASP será la mejor de entre todas las que forman este conjunto de soluciones

factibles obtenidas previamente. Cuando 1=k , esto es, cuando elegimos en cada

iteración el elemento que individualmente aporta la mayor mejora a la función objetivo,

el proceso obtenido es un algoritmo GREEDY. No obstante, veremos que el uso de un

algoritmo GREEDY estará más lejos de obtener una solución (casi) óptima que si se usa

un algoritmo GRASP con k>1.

34

3.1 Algoritmo GRASP para resolución del problema de planificación EOSs

El siguiente procedimiento aporta una solución factible a nuestro problema, 1Sol , esto

es, un conjunto de satélites cuyas adquisiciones cubren por completo la región de interés

ℜ .

Datos de entrada (inputs): },...,{,, 1 naak ℜ

Comenzamos fijando {}},,...,{,Re 1 ==ℜ= SolaaAqg n

1. Si kAq ≤ fijamos AqFq = , siendo Fq el conjunto constituido por las k

adquisiciones en Aq cuyas trazas, de manera individual, cubren la máxima área

de gRe . Si kAq > , se calculan los k elementos de Aq que individualmente

mejoran más la función objetivo, formando así el conjunto Fq.

2. De manera aleatoria, seleccionamos una adquisición ia de Fq. }{ iaSolSol U= .

Actualizamos }{ iaAqAq −= y iS\ReRe gg = (donde iS es la subregión

cubierta por la adquisición ia ).

3. Si φ=gRe , STOP. Sol es una solución factible. En caso contrario, volver al

paso 1.

Para explorar el conjunto de soluciones factibles, se repite este algoritmo hasta que

termina el tiempo de computación establecido (fijado por el usuario) o se llega al

máximo número de soluciones fijadas, maxJ (también establecidas por el usuario). De

este modo, sean },...,{max1 JSolSol el conjunto de soluciones factibles calculadas. Si

jCost indica el coste de obtener la solución jSol , esto es, ∑ ∈=

jSoli ij cCost , nuestro

algoritmo termina escogiendo la mejor solución factible de entre todas las que han sido

calculadas. Esto es, la solución final será *jSol , donde *j es aquella que hace

*max,...,1min

jjJj CostCost == .

35

Este problema se puede extender al caso en el que el uso de las adquisiciones tenga

asociado costes diferentes. En este caso, en el paso 1 podremos elegir la adquisición que

maximiza la ratio (área cubierta/coste de la adquisición).

36

4 Análisis y Resultados

4.1 Estudios Estadísticos sobre el tiempo de cálcul o de la matriz Q

Como se vio en la Sección 2.3.2, el cálculo de la matriz Q puede llegar a suponer un

cuello de botella en el algoritmo de resolución del problema de planificación de EOSs.

Para determinar analíticamente la evolución del coste de la matriz Q, se ha llevado a

cabo un estudio estadístico de la tendencia del tiempo de cálculo de esta matriz frente al

número total de adquisiciones posibles, tanto en el modelo I (donde se considera una

matriz Q 2-D) como en el modelo II (matriz Q 3-D).

4.1.1 Modelo I (Matriz Q 2-D): q-satélites con sensor fijo En la Tabla 4.1 muestra los datos experimentales de la evolución en los tiempos de

cómputo de la matriz Q (bidimensional) conforme vamos aumentando el número de

satélites en el modelo I. Podemos observar como el tiempo necesario para computar la

matriz crece con el número de satélites, llegando hasta un valor de 1.638 segundos para

32 satélites.

La Tabla 4.2 muestra las tendencias que se han testeado, así como las ecuaciones que

rigen su evolución y el parámetro 2R . Este parámetro será el que nos indicará cuál de

dichas tendencias es la que mejor aproxima el comportamiento o evolución del coste

computacional frente al número de satélites considerados en el problema ( 10 2 ≤≤ R ,

significando que cuanto más cercano sea a uno, mejor aproxima los datos

experimentales). En dicha tabla se puede observar como la mejor aproximación es una

tendencia de tipo exponencial, ya que su valor de 9902.02 =R es el más cercano a 1 (la

fila correspondiente está sombreada). Este hecho también se puede observar de manera

gráfica; en la Figura 4.1 se ve con claridad como la aproximación exponencial (línea de

tendencia en amarillo) es la que mejor aproxima los datos experimentales (puntos rojos).

Usando la ecuación de dicha tendencia de tipo exponencial, podemos estimar un tiempo

medio de cálculo en el modelo I con un número de satélites del orden de 100, en

37

aproximadamente 20 minutos. No obstante, en la Sección 4.1.2 (donde se verá el

estudio estadístico sobre modelo II, matriz Q 3-D), se comprobará como los tiempos de

computación de la matriz Q son del orden de 5 minutos, ya que nunca llegaremos a usar

un número de satélites en torno a 100, sino que el parámetro a tener en cuenta a la hora

de calcular el tiempo de computación de Q será el número total de adquisiciones

posibles.

Tabla 4.1 Tiempos de cálculo de la matriz Q para modelo I (sensor fijo)

Nº de Satélites (n_sat)

Subregiones Tiempo [s]

2 6 0,1092 4 20 0,1248 6 37 0,1092 8 43 0,156 10 58 0,2184 12 84 0,2808 14 96 0,3276 16 108 0,3744 18 140 0,4524 20 170 0,5772 22 202 0,6864 24 242 0,858 26 293 1,0452 28 316 1,2168 30 385 1,4664 32 409 1,638

Tabla 4.2 Estudio estadístico de la evolución del coste computacional de Q (modelo I)

Aproximación Ecuación 2R

Lineal 25.0_05.0 −⋅= satnt 0,8965

Logarítmica 72.0)_ln(51.0 −⋅= satnt 0,6303

Exponencial )_1.0exp(08.0 satnt ⋅⋅= 0,9902

Potencia 09.1_02.0 satnt ⋅= 0,861

38

Coste Computacional matriz Q

-0,5

0

0,5

1

1,5

2

0 5 10 15 20 25 30 35

Nº de Satélites(n_sat)

Tie

mpo

[s]

Lineal Log Exp Pot

Figura 4.1 Tendencias coste computacional versus nº de satélites (matriz Q); sensor fijo

4.1.2 Modelo II (Matriz Q 3-D): q- satélites con sensor variable

En este modelo, al considerar variable la posición del sensor, aumenta

considerablemente el número total de adquisiciones posibles y por tanto, el número de

subregiones generadas en ℜ . Realizando un estudio estadístico sobre la evolución del

tiempo de computación de Q frente al número de adquisiciones, se comprueba como la

tendencia que mejor aproxima la evolución de los datos experimentales es una de tipo

lineal. Los datos experimentales considerados están representados en la Tabla 4.3,

donde además del tiempo de computación, subregiones generadas y el número total de

adquisiciones posibles consideradas, está representado el tamaño de la matriz Q

tridimensional. Recordar de nuevo que estos índices (I, J, K) expresan número de

satélites (I) número de subregiones (J) y número de posibles modos de sensor (K).

El estudio estadístico desarrollado sobre este modelo está resumido en la Tabla 4.4,

donde la fila sombreada representa la tendencia que mejor aproxima los datos

experimentales. La mejor aproximación ahora se lleva a cabo usando una función lineal

con 9957.02 =R .

39

Creemos que esta sorprendente tendencia lineal se debe a dos razones:

• Introducir más satélites i generará subregiones de área tan pequeña que no serán

computadas por nuestro algoritmo; obviamente, se consumirá tiempo para

calcular dichas subregiones, pero al comprobar su área, se descartarán y no serán

consideradas en iteraciones posteriores.

• Mantener el número de satélites considerados e introducir un mayor número de

modos de sensor provocará que muchas de las adquisiciones para los modos de

sensor más altos se salgan de la región objetivo, y por tanto no generen ninguna

subregión nueva.

Tabla 4.3 Tiempos de cálculo de la matriz Q para modelo II (sensor variable)

Número de Adquisiciones

(a) Subregiones Tamaño de Q

(I, J, K) Tiempo

[s]

50 400 (5,400,10) 3,0888 100 1312 (20,1312,5) 18,6733 132 1718 (22,1718,6) 33,6026 154 1902 (22,1902,7) 43,5087 200 2065 (20,2065,10) 62,53 230 2274 (23,2274,10) 83,9753 312 2377 (24,2377,13) 126,2984 390 2449 (26,2449,15) 170,634 464 2535 (29,2535,16) 218,183 560 2553 (28,2553,20) 258,182

Tabla 4.4 Estudio estadístico de la evolución del coste computacional de Q (modelo II)

Aproximación Ecuación 2R Lineal 08.3452.0 −⋅= at 0.9957

Logarítmica 3.479)ln(93.108 −⋅= at 0.8592

Exponencial )007.0exp(56.9 at ⋅⋅= 0.7759

Potencia 7615.10049.0 at ⋅= 0.972

La Figura 4.2 representa la evolución del coste computacional en el cálculo de la matriz

Q en función del número total de adquisiciones posibles. En dicha figura, se encuentran

representadas las diferentes tendencias testeadas sobre los datos experimentales (puntos

rojos), corroborándose como la tendencia lineal es la que mejor aproximación aporta.

40

Utilizando la ecuación analítica de dicha tendencia (ver Tabla 4.4), podemos prever un

intervalo de computación de la matriz Q para adquisiciones del orden de 1000 de

aproximadamente 8 minutos.

Coste Computacional matriz Q

-100

0

100

200

300

400

500

600

0 100 200 300 400 500 600

Nº de Adquisiciones (a)

Tie

mpo

[s]

Lineal Log Exp Pot

Figura 4.2 Tendencias coste computacional versus nº de adquisiciones (matriz Q); sensor variable Por último, destacar que la herramienta usada para realizar los cálculos de geometría

computacional (Polygon Clipper) falla para determinadas combinaciones de número de

satélites y modos de sensor (generalmente valores altos). Este fallo provoca que

MATLAB dé un error interno y se deba cerrar el programa. Dicho error no es

provocado por el código desarrollado, sino por el archivo MEX utilizado por Polygon

Clipper; por lo cual, se propone como trabajo futuro realizar un debugging a dicho

archivo. Posiblemente, el desarrollo de este código en otros lenguajes de programación

(en lenguaje C++, por ejemplo) evitaría este error.

4.2 Comparativa entre resultados heurísticos y exac tos La implementación del algoritmo GRASP descrito en la Sección 3.1 fue llevada a cabo

en MATLAB (al igual que el resto de códigos generados). Dicho código está descrito en

la Sección 7.2, implementado bajo el nombre de q_GRASP. Como se comentó en la

41

Sección 1 (introducción), el objetivo final de nuestro proyecto es desarrollar un

algoritmo rápido y efectivo, capaz de calcular soluciones óptimas o casi óptimas en

tiempo real para el problema de planificación EOSs.

Una vez implementado dicho algoritmo, es necesario corroborar su fiabilidad a la hora

de encontrar el óptimo, valiéndonos para ello de la solución óptima que ofrecen los

algoritmos exactos. Con esta finalidad, se han diseñando 10 instancias, intentando

conseguir la mayor diversidad posible sobre el número de satélites y modos de sensor

usados, y se han resuelto con GRASP y con CPLEX.

La información acerca de las instancias testeadas se puede observar en la Tabla 4.5; en

esta tabla se presentan el número de satélites y posiciones de sensor usadas en cada

instancia, el número de subregiones generadas y el tiempo de cálculo de la matriz Q

tridimensional, TQ en segundos. El rango del número de satélites está entre 20 y 30, y

entre 6 y 20 para los modos de sensor. Así mismo, obtenemos un número de

subregiones generadas entre 1718 y 2553 y un promedio en el tiempo de cálculo de la

matriz Q de 1.95 minutos.

Tabla 4.5 Tabla de Experimentos

Instancia Satélites Modos Sensor Subregiones TQ

[s] 1 28 20 2553 258,1817 2 22 6 1718 33,6026 3 22 7 1902 43,5087 4 23 10 2274 83,9753 5 20 10 2065 62,53 6 24 13 2377 126,2984 7 26 15 2449 170,6339 8 29 16 2535 218,183 9 19 12 2158 73,6637 10 30 10 2127 96,7206

Cada una de estas instancias ha sido testeada utilizando el código q-GRASP

(Sección 7.2) y comparando sus resultados con el óptimo encontrado a través de

CPLEX. En el procedimiento desarrollado se han realizado 5000 iteraciones,

variando el número de elementos considerados (aquellos que aportan una mayor

mejora a la función objetivo), de entre los cuales el programa escoge uno

aleatoriamente. Es decir, hemos hecho escoger al algoritmo GRASP adquisiciones

de manera aleatoria de entre las 1, 2, 3, 4 ó 5 mejores (aquéllas que más subregiones

42

cubren de las que aún no han sido cubiertas) en cada iteración. Así mismo, se ha

hecho que el programa pare en el momento en que encuentre una solución óptima

(calculada previamente con CPLEX).

En resumen, se llevan a cabo 5000 iteraciones y el programa devuelve la mejor

solución encontrada, parando en el momento en que se halle una solución óptima (si

es que la encuentra).

Los resultados obtenidos están recogidos en la Tabla 4.6 y en la Tabla 4.7, siendo el

significado de cada columna:

• Óptimo CPLEX: número de satélites que forman la solución óptima,

calculada a través de un algoritmo exacto (calculada a partir de la resolución

del problema (3) con CPLEX).

• GR(k=1,...,5): número de satélites que forman la mejor solución (óptima o

no) encontrada por el algoritmo GRASP, cuando se le hace elegir

adquisiciones de manera aleatoria de entre las k=1,...,5 adquisiciones que

mayor mejora producen en la función objetivo (para cada iteración).

• T(k=1,...,5): tiempo (en segundos) que necesita el algoritmo GRASP para

encontrar la mejor solución (óptima o no), cuando se elige una adquisición

aleatoriamente de entre las k=1,...,5 mejores adquisiciones en cada iteración.

• It(k=1,...,5): número de iteraciones realizadas por GRASP hasta encontrar la

mejor solución (óptima o no) cuando se elige una adquisición aleatoriamente

de entre las k=1,...,5 mejores adquisiciones en cada iteración.

43

Tabla 4.6 Resultados heurísticos I

Instancia

Óptimo CPLEX

GR (k=1)

T [s] (k=1)

It (k=1)

GR (k=2)

T [s] (k=2)

It (k=2)

GR (k=3)

T [s] (k=3)

It (k=3)

1 5 7 0,6084 1 6 1,326 2 6 11,8873 15 2 8 9 0,1716 1 8 10,8733 62 8 78,9521 417 3 7 9 0,1872 1 8 6,162 30 7 51,4179 228 4 7 11 0,39 1 8 0,936 3 7 44,6475 118 5 7 11 0,2964 1 8 3,4008 12 7 159,963 504 6 7 11 0,5148 1 8 3,66 8 7 122,835 244 7 5 7 0,468 1 6 0,4368 1 6 4,3056 8 8 5 7 0,5304 1 6 0,4836 1 6 2,9172 4 9 7 8 0,2652 1 8 1,2636 4 7 228,401 638 10 5 9 0,4212 1 7 23,5718 58 6 6,0216 15

Tabla 4.7 Resultados heurísticos II

Instancia

Óptimo CPLEX

GR (k=4)

T [s] (k=4)

It (k=4)

GR (k=5)

T [s] (k=5)

It (k=5)

1 5 6 3,3696 4 6 2,1216 3 2 8 8 408,8162 1949 8 646,141 2939 3 7 7 339,349 1387 8 54,3975 216 4 7 7 861,1723 2126 7 110,917 273 5 7 7 212,9258 633 7 193,472 557 6 7 7 71,6357 136 7 751,582 1361 7 5 6 2,542 5 6 0,3744 1 8 5 6 5,5536 8 6 11,2009 17 9 7 8 93,6318 241 7 798,382 1933 10 5 5 180,0408 430 5 216,529 485

4.2.1 Análisis de Resultados

En los resultados mostrados en la Tabla 4.6 y Tabla 4.7 se observa como en 7 de las 10

instancias se alcanza el óptimo para alguna de las k usadas. Aquellas instancias en las

que no se ha logrado alcanzar el número óptimo de satélites, han sido comprobadas

manualmente, obligando al programa a seleccionar aquellos satélites que forman la

solución óptima que se encontró con CPLEX. Se observó que sería necesario utilizar un

k del orden de 18 para conseguir que el algoritmo encuentre esa solución óptima. Las

instancias donde no se obtiene el óptimo son la 1, 7 y 8, en las cuales nuestro código no

44

aportaría una solución óptima, pero daría una casi-óptima (usando un satélite más que el

óptimo) para k=2 en un máximo de 2 iteraciones y en un tiempo promedio de 0.75

segundos.

Una vez mostrados los resultados obtenidos en los experimentos, se ha procedido a

realizar un pequeño estudio estadístico para sacar conclusiones acerca de la efectividad

de nuestro código.

El análisis hecho sobre las instancias está recogido en la Tabla 4.8, en la cual para cada

k se muestra:

• Óptimo [%]: probabilidad de encontrar el óptimo (a través de CPLEX) en 5000

iteraciones.

• Tiempo [s]: promedio de tiempo (en segundos) necesario para encontrar la mejor

solución (óptima o no) en 5000 iteraciones.

• Iteraciones: promedio de iteraciones necesarias para encontrar la mejor solución

(óptima o no).

Tabla 4.8 Análisis de experimentos

k

Óptimo [%]

Tiempo [s]

Iteraciones

1 0 0,39 1 2 10 5,21 18 3 60 71,13 219 4 60 217,9 692 5 60 278,51 779

Vemos como para k=1 (sería como utilizar un algoritmo GREEDY) nunca se obtiene la

solución óptima, por lo cual descartaríamos usarla; así mismo, para k=2 solo

conseguiríamos obtener el óptimo en el 10 % de los casos aunque el tiempo necesario

en obtenerlo sería muy pequeño (5.21 segundos).

Ahora bien, en la Tabla 4.8 se observa como los mejores resultados, en cuanto a

efectividad en encontrar una solución óptima, son para k=3, 4, 5. En estos 3 casos, la

probabilidad de encontrar un óptimo asciende hasta el 60 %, si bien conforme aumenta

k, se eleva el tiempo y las iteraciones necesarias para encontrarlo.

45

Por todo esto, se recomendaría usar este código con k=3, ya que tendríamos el 60 % de

probabilidades de encontrar una solución óptima y además, en un tiempo relativamente

corto (alrededor de 1 minuto).

4.2.2 Ejemplo

Para clarificar ideas acerca de como funciona nuestro algoritmo GRASP, tomemos

como ejemplo la instancia 10, en la cual teníamos 30 satélites con 10 modos de sensor.

La Figura 4.3 muestra las subregiones generadas, siendo un total de 2127. Por claridad

en el dibujo, no se han numerado sobre la figura. La Figura 4.4 muestra el total de

adquisiciones generadas en esta instancia, donde el rectángulo en rojo representa la

región de interés ℜ que queremos cubrir.

Figura 4.3 Subregiones generadas en la instancia 10 (30 satélites / 10 modos de sensor)

46

Figura 4.4 Total de adquisiciones a considerar sobre la instancia 10

El problema a resolver será elegir, entre todas las adquisiciones mostradas en la Figura

4.4, aquel conjunto que optimiza la cobertura, es decir, el mínimo número de

adquisiciones tal que la región de interés quede totalmente cubierta o lo que es lo mismo,

que se cubran todas las subregiones mostradas en la Figura 4.3.

A continuación, representamos una solución óptima comparándola con una no óptima,

ambas calculadas utilizando el algoritmo GRASP implementado en nuestro código.

Desde la Figura 4.6 hasta la Figura 4.10, se muestra una solución óptima y desde la

Figura 4.11 hasta la Figura 4.16, una solución casi óptima. Esta solución óptima la

forman 5 adquisiciones y la solución casi óptima está compuesta por 6 adquisiciones.

En todas estas figuras la región de interés está representada por el rectángulo rojo (ver

Figura 4.5), mientras que los rectángulos verdes representan la entrada de una nueva

adquisición y los azules son adquisiciones que entraron en la solución en iteraciones

anteriores. En cada figura se muestra la adquisición que selecciona el código en cada

iteración del mismo, observando como ambas soluciones (óptima y no óptima) son

factibles, es decir, cubren toda la región de interés, pero la solución óptima necesita tan

sólo 5 adquisiciones (una menos que la solución no óptima). Notar que CPLEX no

calcula su solución de forma iterativa

47

Figura 4.5 Región de interés a cubrir (Instancia 10)

• Solución óptima:

Figura 4.6 1ª adquisición de la solución óptima (instancia 10)

48

Figura 4.7 2ª adquisición de la solución óptima (instancia 10)

Figura 4.8 3ª adquisición de la solución óptima (instancia 10)

49

Figura 4.9 4ª adquisición de la solución óptima (instancia 10)

Figura 4.10 5ª adquisición de la solución óptima (instancia 10)

50

• Solución no-óptima:

Figura 4.11 1ª adquisición de una solución casi-óptima (instancia 10)

Figura 4.12 2ª adquisición de una solución casi-óptima (instancia 10)

51

Figura 4.13 3ª adquisición de una solución casi-óptima (instancia 10)

Figura 4.14 4ª adquisición de una solución casi-óptima (instancia 10)

52

Figura 4.15 5ª adquisición de una solución casi-óptima (instancia 10)

Figura 4.16 6ª adquisición de una solución casi-óptima (instancia 10)

53

5 Conclusiones

Hemos visto como existe una cada vez más creciente necesidad de planificar y gestionar

de manera óptima los datos obtenidos de la superficie terrestre a través de flotas EOSs,

debido al surgimiento de un elevado número de aplicaciones, tales como la gestión de

crisis o la detección de incendios. Actualmente, la tendencia es una planificación

multisatélite, lo cual permite llevar a cabo la adquisición de datos de una manera más

rápida y eficaz. No obstante, ello hace que sean necesarios nuevos algoritmos que

gestionen eficientemente la elevada información que se obtiene. Se desean algoritmos

capaces de trabajar en tiempo real y que aporten soluciones óptimas (o casi) al problema

relacionado con la planificación de EOSs.

El uso de algoritmos exactos se hace inviable, debido a que suelen estar implementados

en software costosos; por ello, se llega a una solución de compromiso: el uso de

algoritmos heurísticos, los cuales proporcionarán una solución óptima o casi-óptima,

siendo en esta última situación aceptable siempre y cuando el algoritmo sea capaz de

proporcionarla en un tiempo razonable.

Bajo esta nueva perspectiva de afrontar el problema de planificación EOSs mediante

algoritmos heurísticos, se ha realizado una primera aproximación, formulando en primer

lugar 3 modelos de partida, de complejidad creciente, los cuales están basados en

problemas estándar de programación entera. Se vio como fue vital encontrar una

herramienta que llevara a cabo los cálculos relacionados con la geometría

computacional implicada en el problema. Para ello, se escogió el toolbox de MATLAB

Polygon Clipper (totalmente gratuito), reduciendo el problema al cálculo de una matriz

Q, la cual simplifica de una manera efectiva la organización de la información relativa a

las adquisiciones y subregiones obtenidas, permitiéndonos conocer qué subregiones son

cubiertas por cada satélite y por cada modo de sensor; por este motivo, dicha matriz se

convirtió en la base del problema de planificación y fue necesario una correcta y eficaz

definición y desarrollo de la misma.

54

De los 3 modelos formulados, sólo los dos primeros han sido resueltos, considerándose

que el tercer modelo (donde son consideradas restricciones de duty cycle) escapa al

objetivo de este proyecto y del estudio preliminar que se deseaba desarrollar.

Sobre los dos primeros modelos se ha realizado un pequeño análisis estadístico, con el

objetivo de estimar los tiempos de computación de la matriz Q, en función del número

total de adquisiciones posibles (proporcional al número de satélites y modos de sensor),

con el resultado de que en el segundo modelo, este tiempo sigue de manera muy exacta

una tendencia lineal, estimándose un tiempo de computación de aproximadamente 8

minutos para un orden de subregiones de 1000. Esto nos llevó a la conclusión de que el

cálculo de dicha matriz podría suponer un cuello de botella en el algoritmo de

optimización.

Finalmente, nos decantamos por usar un algoritmo heurístico de tipo GRASP para

resolver el problema de planificación EOSs. Fueron desarrollados 10 experimentos o

instancias, donde se compararon los resultados de dicho algoritmo con las soluciones

óptimas encontradas por CPLEX. En total, llegamos al óptimo en 7 de las 10 instancias

en alguna de las k=1,2,3,4,5 usadas. Aquellas instancias en las cuales no llegamos al

óptimo para ninguna k, se vio como, para obtener dichas solución, hubiese sido

necesario el uso de una k=18. Como conclusión, a partir de los datos obtenidos

podemos afirmar que nuestro código posee un 60 % de probabilidades de obtener una

solución óptima, siendo k=3 la mejor opción, ya que aparte de llegar al óptimo en el 60

% de las instancias, en el caso de no obtener un óptimo se comprobó como aportaba una

solución casi-óptima (una adquisición más que en la solución óptima) en un tiempo

inferior a 1 minuto.

Por último, tras este estudio preliminar del problema de planificación EOSs, se

identifican los siguientes puntos, donde sería necesario trabajar en un futuro con el

objetivo de conseguir obtener una herramienta óptima y eficiente de acuerdo con las

necesidades del problema:

• Formulación de nuevos modelos en los cuales se incluyan no sólo restricciones

de tipo duty cycle, sino también aquéllas de naturaleza dinámica, tales como

eclipses, tiempos de descarga de datos, etc., llegando así hasta un modelo

realista del problema.

55

• Implementar en el código propagadores de órbitas, para obtener una

aproximación realista de las adquisiciones a tener en cuenta sobre el problema

de planificación EOSs.

• Debugging sobre la herramienta de geometría computacional Polygon Clipper o

bien la utilización de otro tipo de herramienta que nos ayude a realizar estos

cálculos de manera efectiva y fiable.

• Implementación de otros algoritmos heurísticos que se aproximen mejor a una

solución óptima con un porcentaje de acierto superior al obtenido con GRASP,

tales como algoritmos genéticos o búsqueda de variables vecinas.

• Implementación de los códigos desarrollados en otros tipos de lenguaje de

programación, tales como C++ .

• Formular modelos donde sean considerados los denominados satélites ágiles, los

cuáles tienen la capacidad de variar su sensor tanto longitudinal como

lateralmente de manera continua. El modelado de este tipo de satélite sería más

complejo debido a los dos grados de libertad que tendríamos en el sensor.

• Implementación en herramienta SaVoir, como paso final tras conseguir un

código capaz de resolver de manera óptima y efectiva, en tiempo real, un

problema realista de planificación de EOSs.

56

6 Bibliografía

[1] Bazaraa, M.; Jarvis, J. and Sherali, H.; 1990. Linear programming and network

flows. Wiley

[2] Chien, S.; Smith, B. and Rabideau, G. 1998. Automated planning and scheduling for

goal-based autonomous spacecraft. IEEE Intelligent Systems and their applications,

Vol. 13, 13:50-55

[3] Cordone, R.; Gandellini, F. and Righini, G. 2008. Solving the swath segment

selection problem through lagrangian relaxation. Computers & Operation Research

35:854-862

[4] Feo, T. and Resende, M. 1989. A probabilistic heuristic for a computationally

difficult set covering problem. Operations Research Letters 8:67-71

[5] Michalewicz, Z. and Fogel, D.B. 2000. How to solve it: Modern Heuristics. Springer

Verlag.

[6] Muraoka, H.; Cohen, R.;Ohno, T. and Doi, N. 1998. Aster Observation scheduling

algorithm. Proceeding of SpaceOps 1998, Tokio, Japón.

[7] Schilling, D.A.; Jayaraman, V. and Barkhi, R. 1993. A review of covering problems

in facility location. Location Science 1 (1):25-55

[8] Sun, B.; Wang, W. and Qin, Q. 2008. Satellites Scheduling Algorithms based on

dynamics constraints satisfaction problem. 2008 International Conference of Computeer

Science and Software Engineering 167-170

[9] Taitus. 2011. Savoir: Swath Adquisition Viewer.

www.taitussoftware.com

[10] Vazirani, V. 2001. Approximation Algorithms. Springer

57

[11] Wolsey, L.A. 1998. Integer Programming. Wiley

• Páginas Web Consultadas

� Información de GAMS: http://www.uv.es/~sala/gams/14.PDF

� GREEDY:http://es.wikipedia.org/wiki/Algoritmo_voraz,

http://www.fceia.unr.edu.ar/lcc/t312/archivos/09.ED.Greedy.handout.pdf

� GRASP:http://catarina.udlap.mx/u_dl_a/tales/documentos/lii/hernandez_

r_cm/capitulo3.pdf

� Polygon Clipper:www.mathworks.com/matlabcentral/fileexchange/8818-

polygon-clipper

58

7 Apéndice: Descripción del Código Empleado

En esta sección se describen los códigos generados en la resolución del problema de

planificación de EOSs. Se mostrarán los pseudocódigos que siguen los programas

implementados y se aclarará el funcionamiento de los mismos. Al final de cada sección

de este capítulo, se muestran los códigos desarrollado en MATLAB.

7.1 Estructura general de cálculo de matriz Q

El cálculo de la matriz Q está compuesto por un código principal MATRIZQVAR, que es

el encargado de generar dicha matriz como output. MATRIZQVAR realiza la llamada del

código SATVAR, el cual proporciona como inputs a MATRIZQVAR el número total de

adquisiciones tomadas por todos los satélites (teniendo en cuenta todas sus posibles

posiciones de sensor) así como las subregiones generadas por la intersección de dichas

adquisiciones con la región de interés ℜ . Para calcular estos inputs, el código SATVAR

utiliza CALC (el cual se encarga de generar las subregiones) e INTVAR (base de datos

de los satélites del cual se vale SATVAR para crear las adquisiciones cuando variamos la

posición del sensor en los satélites). En el diagrama de la Figura 7.1 puede observarse la

estructura general de los códigos:

Figura 7.1 Estructura de códigos para el cálculo de la matriz Q (3D)

MATRIZQVAR

SATVAR

INTVAR CALC

59

Resumiendo, los códigos utilizados para el cálculo de la matriz Q son:

1. MATRIZQVAR: código principal encargado de generar la matriz Q. Dicho

código llama a SATVAR para obtener los inputs. Es el código que debe ser

ejecutado.

2. SATVAR: código empleado para generar todas las adquisiciones de los satélites

así como las subregiones generadas. Para ello, hace uso de CAL e INTVAR.

3. CALC: mediante el uso de la herramienta de geometría computacional mostrada

en la Sección 2.4, se encarga de generar una estructura de vectores, los cuales

representan cada una de las subregiones (polígonos) producidas por la

intersección de cada adquisición con la región de interés ℜ .

4. INTVAR: base de datos con las coordenadas geométricas de la adquisición

principal (con ángulo de sensor formando 90 º con el vector tangente a la órbita

del satélite y en dirección a la superficie terrestre) de cada uno de los satélites

EOSs. Mediante cálculos geométricos, SATVAR se encarga de generar las

adquisiciones producidas cuando el modo del sensor (ángulo) varía.

Es muy importante destacar que la matriz Q generada por el código MATRIZQVAR es

una matriz 3D (ver paso 2, Sección 2.1). El cálculo de la matriz Q tridimensional se

realiza al final del código de MATRIZQVAR, el cual es un simple proceso de bucles que

reordenan la matriz Q 2D para aportar directamente la información de los satélites y

posiciones de sensor que cubren cada subregión concreta de ℜ . Para la resolución del

Modelo I (Sección 2.3.2.1) bastará con usar la matriz Q 2D (pues no existe el grado de

libertad de ángulo de sensor) mientras que para la resolución del Modelo II (Sección

2.3.2.2) es necesario usar la matriz Q 3D.

60

La lógica desarrollada en el código MATRIZQVAR para la obtención de la matriz Q es

mostrada en el pseudocódigo de la Figura 7.2. Previamente, conviene establecer la

notación utilizada:

• n: número total de satélites EOSs considerados en el problema

• N: número total de subregiones generadas tras la intersección de todas las

adquisiciones con la región de interés ℜ

• ),( kjjk psa : adquisición tomada por el satélite js con una posición de sensor kp .

• A: conjunto de todas las posibles adquisiciones dadas por el conjunto de satélites

y por cada una de sus posiciones de sensor

• SR: conjunto de intersecciones de A con la región de interés ℜ , es decir, el

conjunto de subregiones generadas.

• c: número total de posibles modos de sensor en cada satélite

61

Figura 7.2 Pseudocódigo empleado en MATRIZQVAR

A, SR

j=0

j=j+1

),( kjjk psa

ikjjk SRpsa ∪),( =INT

i=0

¿INT =0? Sí No

¿Área(INT) >0.01?

No

Q(j,i,k)=1

Q(j,i,k)=0

i=i+1

SATVAR Inputs

¿i=N?

¿j=n? No

MATRIZ Q Sí

No

k=0

k=k+1

¿k=c?

Sí No

62

Partimos de A (conjunto de adquisiciones dadas por todos los satélites con todas sus

posibles posiciones de sensor) y SR (conjunto de subregiones en que ha quedado

dividida ℜ tras el paso de todas las adquisiciones de A). Estos inputs son calculados en

el código SATVAR.

Vamos escogiendo las adquisiciones una por una y computando sus intersecciones con

cada una de las subregiones iSR. Pueden darse dos posibilidades:

1. Dicha adquisición no cubre la subregión iSR: en ese caso, se le asignará a la

entrada (j,i,k) de la matriz Q un "0".

2. La adquisición cubre la subregión iSR: se calcula el área de la intersección. Si

dicha área es superior a 0.01 unidades de superficie, se le asigna a la entrada

(j,i,k) de Q un valor "1"; en caso contrario, será "0". Este filtro se realiza para

disminuir el coste computacional, evitando considerar subregiones de tamaño

despreciable. Por otro lado, la herramienta de geometría computacional Polygon

Clipper puede contabilizar como subregiones aquellas cuya área sea nula, es

decir, líneas. Este problema con la herramienta ocurre cuando el número total de

adquisiciones posibles es muy elevado (del orden de 25 satélites con 20

posiciones de sensor cada uno). En resumen, despreciar subregiones de área

inferior a 0.01 unidades de superficie atiende a dos razones:

• Disminuir el coste computacional, acercándonos a un

algoritmo que pueda trabajar en tiempo real.

• Evitar que se computen líneas como subregiones.

Este proceso termina cuando hemos comprobado si existe intersección o no entre cada

una de las adquisiciones jka con cada subregión iSR. Obtenemos la matriz Q 2D.

Con un breve bucle, convertimos la matriz Q en 3D, cuyas entradas (j,i, k) valdrán "1" si

la subregión i es cubierta por el satélite j en su posición de sensor k. El bucle consiste en

recorrer filas y columnas de la matriz Q y utilizar la función repmat de MATLAB, la

cual nos permite generar una matriz tridimensional.

63

• Código generado:

function [a,zonas,sat_traz,q]=matrizqvar(n,it,paso,'repres' ) % INPUTS: -n: nº de satélites -it: nº posiciones de sensor -paso: separación entre adquisiciones cont iguas para un mismo satélite -repres: 'si' / 'no' dependiendo si querem os numerar las subregiones generadas (en el gráfico) % OUTPUTS: -zonas: estructura de vectores donde se g uardan los polígonos que representan las subregiones generadas -a: nº total de subregiones -sat_traz: estructura de vectores donde s e guardan los polígonos que representan las adquisiciones -q: matriz Q tridimensional

r=struct( 'x' ,[0 16 16 0], 'y' ,[0 0 9 9], 'hole' ,0); %región de interés [zonas,a,sat_traz]=satvar(n,it,paso,repres); %%Vamos seleccionando cada una de las adquisiciones y la vamos %%comparando con la matriz 'zonas'(subregiones de ' R'), para %%determinar cuales de sus zonas cubre y cuales no a=numel(zonas); a_traz=numel(sat_traz); for k=1:a_traz

p=sat_traz(1,k); for i=1:a %%Escogemos con el índice 'i' la zona

R=zonas(1,i); %%Calculamos la intersección %%de la adquisición seleccionada con la zona(i) h=polygonclip(p,R,1);

%%Si la longitud de 'h' es cero, significa %%que no existe intersección, y por tanto, %%esa adquisición no cubre la zona 'i', lo que impl ica que en la %%matriz Q aparecerá un cero if length(h)==2

64

for l=1:2

area_int=abs(polygonarea(h(1,l).x,h(1,l) .y)); if area_int>0.01 Q(i,k)=1;

end

end end if length(h)==1 area_int=abs(polygonarea(h.x,h.y)); if area_int>0.01

Q(i,k)=1; else Q(i,k)=0; end end

if length(h)==0 Q(i,k)=0; end

end end

%% MATRIZ Q-3D

%'j'-->número de satélite original %'i'-->zona %'k'-->posición del sensor %q(j,i,k)-->será 1 si la zona 'i' es cubierta por %el satélite 'j' en su 'k-ésima' posición de sensor for i=1:numel(Q(:,1)) %Vamos recorriendo las zonas y comparándolas con la s adquisiciones, %rellenando la matriz 'q' por filas m=1;

for j=1:numel(Q(1,:))

65

q(sat_traz(1,j).original,i,sat_traz(1,j) .traza) ... =repmat(Q(i,m),[1 1]); m=m+1; end

end

7.1.1 Código SATVAR

Como ya se comentó en la Sección 7.1, este código es el encargado de generar el

conjunto de adquisiciones y subregiones, que serán usadas como inputs en

MATRIZQVAR. A continuación, se resume la notación utilizada:

• S: conjunto de satélites considerados en el problema de planificación.

• js : satélite j-ésimo perteneciente al conjunto S

• n: número total de satélites EOSs

• c: número total de posiciones de sensor en cada satélite js

• kp : posición k-ésima del sensor

La Figura 7.7 muestra el pseudocódigo que se ha seguido para programar SATVAR.

Como inputs, este programa toma una "base de datos" de satélites de INTVAR. Esta base

de datos está formada por estructuras que especifican las coordenadas X e Y de una

adquisición inicial de los satélites que se están considerando en el problema de

planificación EOSs, sin haber variado su posición de sensor; es decir, serían las

adquisiciones que se utilizarían en el modelo I (ver Sección 2.3.2.1). El programa va

tomando uno por uno los satélites procedentes de INTVAR y va variando su posición de

sensor, calculando geométricamente la adquisición (polígono) producida para cada

posición. La distancia entre adquisiciones contiguas (posiciones de sensor contiguas)

para un mismo satélite se fija mediante el parámetro paso, el cual es un input en todos

los códigos generados en este proyecto y es decisión del usuario. Cuanto mayor sea este

parámetro, mayor separación existirá entre adquisiciones contiguas para un mismo

satélite. La Figura 7.3 y la Figura 7.4 muestran dos adquisiciones contiguas (dos

posiciones de sensor) pertenecientes a un único satélite, en el caso en que el paso sea

"1" y "0.1", respectivamente. Las adquisiciones son los polígonos verdes mientras que

66

el polígono en azul representa la región de interés. Se comprueba como con un paso de

"1" (Figura 7.3) las adquisiciones para un mismo satélite están más distanciadas que si

utilizamos un paso de "0.1" (Figura 7.4). De esto se extrae que podemos obtener mayor

precisión utilizando pasos muy pequeños, si bien el problema que entraña esto es

aumentar el coste computacional y alejarnos de una herramienta capaz de trabajar en

tiempo real. Por tanto, se deberá llegar a una solución de compromiso o bien adaptar

este parámetro en función de los requisitos de la misión.

Figura 7.3 Adquisiciones de un satélite usando un paso de valor 1

67

Figura 7.4 Adquisiciones de un satélite usando un paso de valor 0.1

Cada vez que se computa una adquisición ),( kjjk psa , dicha adquisición entra en el

programa CALC. Este programa calcula las subregiones iSR en que queda dividida la

región de interés ℜ conforme se calculan sus intersecciones con las adquisiciones

(véase Figura 7.5 y Figura 7.6). Tanto las adquisiciones generadas por SATVAR como

las subregiones calculadas por CALC, se guardan en dos estructuras de vectores (una

para las adquisiciones y otra para las subregiones), las cuales serán las entradas de

MATRIZQVAR. La información contenida en estas estructuras de vectores es la relativa

a los polígonos que representan las subregiones (Figura 7.5) y las adquisiciones (Figura

7.6). La Figura 7.5 y la Figura 7.6 muestran una representación gráfica del contenido de

estas estructuras de vectores, para un caso en el que existen 3 satélites, con 5 posiciones

de sensor y un paso de "1" entre adquisiciones contiguas para un mismo satélite.

68

Figura 7.5 Subregiones generadas por 3 satélites, con 5 posiciones de sensor y paso de 1

Figura 7.6 Adquisiciones correspondientes a 3 satélites, con 5 posiciones de sensor y paso de 1

69

Figura 7.7 Pseudocódigo empleado en SATVAR

S

j=0

j=j+1

js

kj pS ( )

k=0

¿k =c?

¿j=n?

k=k+1

INTVAR Inputs

CALC

No

No

Sí A SR

70

• Código generado: function [zonas,a,sat_traz]=satvar(n,it,paso,'repres') % INPUTS: -n: nº de satélites -it: nº posiciones de sensor -paso: separación entre adquisiciones cont iguas para un mismo satélite -repres: 'si' / 'no' dependiendo si querem os numerar las subregiones generadas (en el gráfico) % OUTPUTS: -zonas: estructura de vectores donde se g uardan los polígonos que representan las subregiones generadas -a: nº total de subregiones -sat_traz: estructura de vectores donde s e guardan los polígonos que representan las adquisiciones

r=struct( 'x' ,[0 16 16 0], 'y' ,[0 0 9 9], 'hole' ,0); %región de interés vario=0; sss=0; drawpolygon(r.x',r.y', 'b' );hold on;

zonas=(r); a=numel(zonas);

% Con el indice 'k', vamos introduciendo satélites %y vamos comparándolos con cada región que forma la %matriz 'zonas' color=[ 'b' ; 'g' ; 'c' ; 'm' ; 'y' ; 'k' ]; nn=0; %indice que nos permite asignarle el campo "sat.ori g" al sat for k=1:n nn=nn+1; [poly]=intvar; sat=poly(k); if sat.sensor==1 vario=1;

%%CALCULO DE SAT CON SENSOR VARIABLE %se encarga de dibujar las diferentes posiciones de l sensor

for c=1:it itt=c; %indice que nos permite asignarle el campo "sat.tra z" al sat pdte=(sat.y(1,4)-sat.y(1,1)); y_h=abs((sat.x(1,2)-sat.x(1,1))); y_v=abs((sat.y(1,4)-sat.y(1,1))); %%%TRAZAS HORIZONTALES/VERTICALES if sat.x(1,1)==sat.x(1,4) %rectángulos horiz. / vert. if c==1 sat.sensor=0; end if y_h>y_v % traza horizontal

71

sat.y=[paso paso paso paso]+sat.y; sat.sensor=1; end if y_h<y_v %traza vertical sat.x=[paso paso paso paso]+sat.x; sat.sensor=1; end end if sat.x(1,1)~=sat.x(1,4) %trazas tumbadas if c==1 sat.sensor=0; end s1=sat.x(1,1)-sat.x(1,4); if s1<0 %%%tumbado hacia la derecha j=2;l=4;m=4; else %%%tumbado hacia la izquierda j=2;l=4;m=4; end pdte1=(sat.y(1,j)-sat.y(1,1))/((sat.x(1,j)-sat.x( 1,1))); %dcha pdte2=(sat.y(1,3)-sat.y(1,l)) ... /((sat.x(1,3)-sat.x(1,l))); %izq b1=sat.y(1,1)-pdte1*sat.x(1,1); b2=sat.y(1,m)-pdte2*sat.x(1,m); sat1.x=[sat.x(1,1) sat.x(1,j)]'+[paso paso]'; sat2.x=[sat.x(1,3) sat.x(1,l)]'+[paso paso]'; sat1.y=pdte1*sat1.x+b1; sat2.y=pdte2*sat2.x+b2; sat.x=[sat1.x' sat2.x']; sat.y=[sat1.y' sat2.y']; sat.sensor=1; end drawpolygon(sat.x',sat.y',color(mod(k,6 )+1));hold on; sat.original=nn; sat.traza=itt; % Con el índice 'i', recorremos cada región de %'zonas' para actualizar la estructura de subregion es sss=sss+1; [zonas,a,satt]=calc(zonas,sat,a); fiuu(sss)=[satt];

72

sat_traz=[fiuu]; end %%%%CALCULO DE SAT CON SENSOR FIJO else figure(1); drawpolygon(sat.x',sat.y',color(mod(k,6)+1) ); sat.original=nn; sat.traza=itt; sss=sss+1; [zonas,a,satt]=calc(zonas,sat,a); fiuu(sss)=[satt]; sat_traz=[fiuu]; end end %%BUCLE DE REPRESENTACIÓN GRÁFICA

figure(2); lab=1; for i=1:a drawpolygon(zonas(1,i).x,zonas(1,i).y, 'r' ); hold on; if repres== 'si' caux=sprintf( '%0.0f' ,lab); ss=polygoncentroid(zonas(1,i).x,zonas(1,i).y ); text(ss(1,1),ss(1,2),caux); lab=lab+1; end if repres== 'no' end end title( 'Zonas de intersección' ); if vario==0 sat_traz=struct([]); end

7.1.2 Código CALC

El código CALC es el encargado de crear una estructura de vectores, cuyos elementos

representan las subregiones en que ha quedado dividida la región de interés ℜ tras su

intersección con todas las adquisiciones consideradas en el problema de planificación.

Brevemente recordamos la notación empleada en el pseudocódigo mostrado en la

Figura 7.14:

• ),( kjjk psa : adquisición tomada por el satélite js en su posición de sensor kp

73

• *r y *SR : nº de subregiones y estructura de vectores de dichas subregiones sin

actualizar, es decir, antes de recalcularlas tras la intersección de la nueva

adquisición tomada.

• r y SR: nº de subregiones generadas y estructura de vectores que contienen las

coordenadas geométricas de dichas subregiones, una vez se han recalculado tras

considerar la nueva adquisición computada ),( kjjk psa .

• iSR: subregión generada por la intersección de la adquisición ),( kjjk psa con la

región de interés ℜ .

La lógica que sigue el código CALC es la siguiente:

a) Cada vez que SATVAR calcula una nueva adquisición ),( kjjk psa , ésta

entra en CALC para actualizar las subregiones generadas. En este

momento, sabemos que el número de subregiones que tenemos antes de

calcular las nuevas subregiones generadas tras considerar la nueva

adquisición ),( kjjk psa es *r y la estructura de vectores cuyos

elementos representan la geometría de cada subregión, *SR .

b) CALC va computando las intersecciones y las diferencias (mediante

POLYGONCLIP) de la adquisición ),( kjjk psa con cada subregión *iSR ,

generando nuevas subregiones (actualizadas) iSR.

c) Este proceso se repite hasta que la adquisición ),( kjjk psa ha sido

comparada con cada subregión *iSR . Las salidas a SATVAR serán ahora

el número de subregiones generadas tras considerar ),( kjjk psa , r y las

nuevas subregiones, contenidas en la estructura de vectores SR.

Este bucle se repite hasta que se han considerado sobre la región de interés ℜ todas las

adquisiciones ),( kjjk psa . Por lo cual, destacar que cada r y SR calculadas para una

74

adquisición ),( kjjk psa , pasarán a ser *r y *SR cuando se considere la adquisición

siguiente.

Tras el paso de todas las adquisiciones, se obtendrá una estructura de vectores final SR,

correspondiente a las subregiones generadas sobre ℜ . Esta estructura será input en el

código MATRIZQVAR así como en el algoritmo heurístico de optimización.

Desde la Figura 7.8 hasta la Figura 7.13 se muestra la evolución que sufren las

subregiones conforme computamos adquisiciones con la región de interés ℜ . En este

caso, se ha escogido como ejemplo el uso de 3 satélites, con 2 posiciones de sensor y un

paso de 1 entre adquisiciones contiguas; por tanto, en las figuras se representa

gráficamente como se actualiza la estructura de vectores correspondiente a las

subregiones conforme vamos introduciendo 2 posiciones de sensor en cada paso

(correspondientes a cada satélite).

Por último, comentar que el código CALC lleva implementado un pequeño bucle que

permite despreciar subregiones de área menor a 0.01 unidades de superficie, lo que hará

que, sin influir sobre el proceso de optimización, el código implementado sea más

rápido y eficiente.

75

Figura 7.8 Subregiones generadas tras el cómputo de 2

adquisiciones

Figura 7.9 2 adquisiciones de satélite

Figura 7.10 Subregiones generadas tras el cómputo de

4 adquisiciones

Figura 7.11 4 adquisiciones de satélites

Figura 7.12 Subregiones generadas tras el cómputo de

6 adquisiciones

Figura 7.13 6 adquisiciones de satélites

76

Figura 7.14 Pseudocódigo empleado en CALC

*

*

),(

SR

r

psa kjjk

i=0

i=i+1

r SR

¿i=r*? No

POLYGONCLIP

ikjjk

ikjjk

SRpsa

SRpsa*

*

),(

),(

SATVAR

SATVAR Inputs

iSR

77

• Código generado:

function [zonas,a,satt]=calc(zonas,sat,a) % INPUTS: -a: nº de subregiones sin actualizar -sat: adquisición a computar sobre la regi ón de interés -zonas: estructura de vectores donde se gu ardan los polígonos que representan las subregiones generadas, sin actu alizar con la nueva adquisición % OUTPUTS: -zonas: estructura de vectores donde se g uardan los polígonos que representan las subregiones generadas , actualizadas con la nueva adquisición -a: nº total de subregiones actualizada -satt=sat: se devuelve la nueva adquisici ón para ser guardada en una estructura de vectores, creada en S ATVAR

satt=sat; for i=1:a %región de interés R=zonas(i); i1=polygonclip(R,sat,1); if length(i1)==0 f(i)=[R]; g(i)=struct( 'x' ,[0], 'y' ,[0], 'hole' ,0); h(i)=struct( 'x' ,[0], 'y' ,[0], 'hole' ,0); end if length(i1)==1 i2=polygonclip(R,i1,0); if length(i2)==0 f(i)=[R]; g(i)=struct( 'x' ,[0], 'y' ,[0], 'hole' ,0); h(i)=struct( 'x' ,[0], 'y' ,[0], 'hole' ,0); end if length(i2)==1 f(i)=[i1]; g(i)=[i2]; h(i)=struct( 'x' ,[0], 'y' ,[0], 'hole' ,0); end if length(i2)==2 f(i)=[i1]; g(i)=[i2(1,1)]; h(i)=[i2(1,2)]; end

78

end end %La matriz zona se actualiza cada vez que %se termina de calcular las zonas intersección %con el nuevo satélites zonas=[f,g,h]; a=numel(zonas); h=0; for i=1:a if sum(zonas(1,i).x)~=0 & sum(zonas(1,i).y)~=0 d=abs(polygonarea(zonas(1,i).x,zonas(1,i).y)); if d>0.01 h=h+1; t(h)=[zonas(1,i)]; end end end zonas=t; a=numel(zonas);

7.1.3 Código INTVAR

Este código es una base de datos de satélites, o mejor dicho, es una base de datos de la

primera adquisición (original) de cada satélite. Serán usadas por el código SATVAR para

crear el resto de adquisiciones cuando variamos la posición del sensor en cada satélite.

Estas adquisiciones originales se introducen en forma de estructura:

),''],[,''],[,'(' asensorYyXxstructsati = .

Se observan 3 campos en dichas estructuras:

• Campo x: coordenadas X del polígono que modela la adquisición original

• Campo y: coordenadas Y del polígono que modela la adquisición original

• Campo sensor: tendrá valor "0" cuando se considere sensor fijo y "1" cuando el

sensor sea variable. En el modelo I (Sección 2.3.2.1) este campo se pondrá a "0"

mientras que para el modelo II (Sección 2.3.2.2) tendrá un valor "1".

79

Destacar que incluso dentro de un mismo modelo, podemos tener unos satélites con

sensor fijo y otros con sensor variable. Esto es así porque el código SATVAR es capaz de

trabajar con adquisiciones provenientes de satélites con sensor fijo y variable dentro del

mismo problema.

Finalmente, se crea una estructura de vectores denominada poly, cuyos elementos

representan cada una de las adquisiciones originales. SATVAR se encarga de llamar a

cada una de las adquisiciones originales utilizando poly.

• Código generado:

function [poly]=intvar(n) %%%Sensor fijo: Sensor==0 %%%Sensor variable: Sensor==1 r=struct( 'x' ,[0 16 16 0], 'y' ,[0 0 9 9]); sat1=struct( 'x' ,[3 5 5 3], 'y' ,[-2 -2 11 11], 'sensor' ,1); sat2=struct( 'x' ,[-2 18 18 -2], 'y' ,[5 5 7 7], 'sensor' ,1); sat3=struct( 'x' ,[-2 0 16 14], 'y' ,[0 -2 13 14], 'sensor' ,1); sat4=struct( 'x' ,[14 18 -1 -3], 'y' ,[-8 -5 10 8], 'sensor' ,1); sat5=struct( 'x' ,[15 17 17 15], 'y' ,[-2 -2 11 11], 'sensor' ,1); sat6=struct( 'x' ,[-7 -1 13 10], 'y' ,[0 -2 16 17], 'sensor' ,1); sat7=struct( 'x' ,[5 9 27 25], 'y' ,[-6 -8 10 12], 'sensor' ,1); sat8=struct( 'x' ,[4.3 6 26.1 24.3], 'y' ,[-8.4 -9.5 14.7 16], 'sensor' ,1); sat9=struct( 'x' ,[25 27 5 3], 'y' ,[-6 -4 18 16], 'sensor' ,1); sat10=struct( 'x' ,[6 8 0.3 -1.7], 'y' ,[-20.7 -19.1 11.7 11.1], 'sensor' ,1); sat11=struct( 'x' ,[3 4.4 16.3 15], 'y' ,[-6 -6.5 13.7 14.1], 'sensor' ,1); sat12=struct( 'x' ,[16 18 -1.3 -3.3], 'y' ,[-10 -9.4 19.4 19], 'sensor' ,1); sat13=struct( 'x' ,[-9 -8.6 20.7 20.3], 'y' ,[1 -1 9 10.8], 'sensor' ,1); sat14=struct( 'x' ,[-2 18 18 -2], 'y' ,[8 8 10 10], 'sensor' ,1); sat15=struct( 'x' ,[10 11.2 -9.8 -12.45], 'y' ,[-11 -10.6 10.4 10], 'sensor' ,1); sat16=struct( 'x' ,[0.8 4.4 1.8 -1.5], 'y' ,[-10 -9.4 11.6 11], 'sensor' ,1); sat17=struct( 'x' ,[-4 19 19 -4], 'y' ,[-1 -1 1 1], 'sensor' ,1); sat18=struct( 'x' ,[14.3 16 6.4 3.9], 'y' ,[-4 -3.3 17.7 17], 'sensor' ,1); sat19=struct( 'x' ,[2 4 4 2], 'y' ,[-1 -1 10.5 10.5], 'sensor' ,1); sat20=struct( 'x' ,[16 17 0 -1], 'y' ,[-2 -1 14 13], 'sensor' ,1); sat21=struct( 'x' ,[16.8 18.4 4 2.3], 'y' ,[-7 -6.6 15.8 15.5], 'sensor' ,1); sat22=struct( 'x' ,[2 4 22 20], 'y' ,[-3 -5 10 12], 'sensor' ,1); sat23=struct( 'x' ,[6.8 9.3 16.3 13.9], 'y' ,[-3.8 -4.8 11.1 12], 'sensor' ,1); sat24=struct( 'x' ,[6 8 8 6], 'y' ,[-1 -1 10 10], 'sensor' ,1); sat25=struct( 'x' ,[-2 1 17 14], 'y' ,[1 -2 11.3 14.2], 'sensor' ,1); sat26=struct( 'x' ,[5 11 11 5], 'y' ,[-4 -4 12 12], 'sensor' ,1); sat27=struct( 'x' ,[-8 -6 12 10], 'y' ,[-5 -7 18 20], 'sensor' ,1); sat28=struct( 'x' ,[-3 19 19 -3], 'y' ,[3 3 5 5], 'sensor' ,1); sat29=struct( 'x' ,[-2 2 2 -2], 'y' ,[-4 -4 11 11], 'sensor' ,1);

80

sat30=struct( 'x' ,[23 25 -2 -4], 'y' ,[-4 -2 12 10], 'sensor' ,1); sat31=struct( 'x' ,[1 3 13.3 11], 'y' ,[-3 -4 15 16], 'sensor' ,1); sat32=struct( 'x' ,[15 19 3 -1], 'y' ,[-4 0 16 13], 'sensor' ,1); poly=[sat28,sat29,sat30,sat31,sat32,sat6,sat7,sat8, sat9,sat10,sat11,sat12,sat13,sat14,sat15,sat16,sat17,sat18,sat19,sat20 ,sat21,sat22,sat23,sat24,sat25,sat26,sat27,sat1,sat2,sat3,sat4,sat5];

7.2 Algoritmo heurístico de optimización: Código q-GRASP

En esta sección se desarrolla el código implementado para resolver el problema de

planificación EOSs mediante un algoritmo heurístico. Como se comentó en la Sección 3,

el algoritmo utilizado es el GRASP, debido a su mayor probabilidad de encontrar un

óptimo que el algoritmo GREEDY (para k>1).

El pseudocódigo seguido en su implementación está descrito en la Figura 7.15, cuya

notación se describe a continuación:

• Q: matriz Q tridimensional

• SR: región de interés la cual se desea cubrir

• A: conjunto de adquisiciones ),( kjij psa

• num_k: indica entre qué número de elementos, de aquéllos que individualmente

producen la mayor mejora de la función objetivo, escogemos uno aleatoriamente

(en cada iteración)

• num_sol: indica el número de soluciones factibles deseadas

• n: número total de satélites EOSs

• p: número total de modos de sensor

• optSol_ : conjunto de soluciones factibles.

• *optSol : solución escogida entre todas las soluciones factibles calculadas

optSol_ , de la cual se espera sea óptima.

• ),( __ seleckselecj psa : adquisición jka escogida para formar parte como elemento de

una solución factible roptSol_ .

81

Q, SR,A num_k,num_sol

r=0

r=r+1

)):,,(_(

:1

:1

KjitQsumárea

pK

nj

jK =

=∀

=∀

Q_it=Q

Sub_cub=[área]

l=0

Q

MATRIZQVAR

Inputs

l=l+1

82

)_max( cubSubMaxl =

Máximos=[ lMax ]

Seleccionamos aleatoriamente

MáximosMaxl ∈ ,

que se corresponde con

),( __ seleckselecj psa

)],([_ __ seleckselecjr psaoptSol =

No

0:):,,_(_ =selecjitQ ;

0:),(:,_

1)_,,_(_/

=→

→=∀

iitQ

seleckiselecjitQi

roptSol_

¿l=num_k? No

¿Q_it=[zeros]?

83

Figura 7.15 Pseudocódigo empleado en q_grasp

Los input del código son Q, SR, A, num_k y num_sol.

num_sol y num_k son índices que determinan, respectivamente, el número de soluciones

factibles que deseamos obtener y entre cuántos elementos individuales en cada iteración

(de entre aquellos que producen una mayor cobertura de las subregiones aún sin cubrir)

elegimos uno aleatoriamente. En proceso seguido es el siguiente:

1. Creamos una matriz Q_it, la cual será modificada conforme se vayan calculando

los elementos que formarán parte de cada solución factible individual. Al

comienzo del cálculo de cada solución factible, se deberá resetear dicha Q_it

igualándola a la matriz Q original.

2. Para todo j (número de satélites que forman el conjunto de EOSs) y para todo k

(número total de posibles modos de sensor en cada satélite), se lleva a cabo la

operación sum[Q_it(j,:,k)], es decir, para cada satélite y para cada modo de

sensor, se calcula el número de subregiones cubiertas por cada adquisición; de

ahí, el sumatorio en el índice i. Es una manera de computar la cobertura de cada

adquisición sobre la región de interés ℜ , ya que recordar que un valor "1" en un

elemento (j, i, k) de la matriz Q indica que la subregión i es cubierta por el

satélite j en su modo de sensor k. Estos sumatorios correspondientes a cada

adquisición se almacenan en una matriz Sub_cub.

)_min(* optSolSolopt =

No

¿r=num_sol?

84

3. En la matriz Sub_cub, seleccionamos las num_k adquisiciones que mayor

número de subregiones cubren, y de ellas se escoge una al azar,

),( __ seleckselecj psa . Dicha adquisición pasa a ser elemento de una solución

factible individual, roptSol_ .

4. Actualizamos la matriz Q_it para que el programa no pueda volver a elegir una

adquisición tomada por el satélite que a entrado a formar parte de roptSol_ en

ninguno de sus posibles modos de sensor. Para ello, se introducen "0" en los

elementos de la matriz Q_it, que hacen referencia a todas las subregiones y todos

los modos de sensor correspondientes al satélite j seleccionado. Es decir:

0:):,,_(_ =selecjitQ ; así mismo, para que en las siguientes iteraciones no se

tengan en cuenta las subregiones iSR ya cubiertas, hacemos que cuando

1)_,,_(_ =seleckiselecjitQ , haya un "0" en cada elemento de Q_it donde se

encuentre dicha subregión i, para cualquier satélite j y para cualquier modo de

sensor k. Con estas dos operaciones, cumplimos con las restricciones formuladas

en (3) y hacemos que el algoritmo posea memoria.

5. Se repiten los pasos 2 a 4 hasta que Q_it=[zeros], lo que implica que han sido

cubiertas todas las subregiones de ℜ . De esta manera, obtenemos una solución

factible del problema. Si aún no se ha obtenido el número de soluciones

especificadas por num_sol, el programa volverá al paso 1.

6. Una vez que el código ha calculado el número de soluciones factibles

especificadas por num_sol, se elige de entre todas ellas aquélla que utilice un

menor número de adquisiciones. Esta solución es la que devuelve GRASP,

*optSol .

85

• Código generado:

% IMPLEMENTA ALGORITMO GRASP; APORTA LA MEJOR SOLUCIÓN (MÍNIMO Nº DE ADQUISICIONES QUE CUBREN TODA LA REGIÓN OBJETIVO), EL TIEMPO EN ENCONTRARLA Y LA MATRIZ Q ASÍ COMO EL TIEMPO EN CAL CULARLA PARA UN NÚMERO DE ITERACIONES INTRODUCIDAS POR EL USUARIO; SI SE CONOCE EL Nº DE SATÉLITES QUE FORMAN LA SOLUCIÓN ÓPTIMA (A TRAVÉ S DE CPLEX) EL PROGRAMA TERMINA EN EL MOMENTO EN QUE LA ENCUENTRA, NO SIENDO NECESARIO ESPERAR A QUE SE EJECUTEN TODAS LAS ITERACIONES.

function [q,sat_opt,optimo,minimo,satelite,t_q]=q_grasp(n,it ,paso,num_k,num_sol,op,'repres') % INPUTS: -n: nº de satélites -it: nº posiciones de sensor -paso: separación entre adquisiciones cont iguas para un mismo satélite

-num_k: indica de entre qué número de elem entos, de

aquellos que individualmente producen la mayor mejo ra de la función

objetivo, escogemos aleatoriamente uno, para cada i teración de cada

solución individual

-num_sol: número de soluciones factibles dese adas

-op: número de satélites que forman el óptimo , obtenido a

través de CPLEX; si no se conoce la solución de CPL EX, este input

se puede obviar sin más que suprimir el bucle en el que aparece

-repres: 'si' / 'no' dependiendo si querem os numerar las subregiones generadas (en el gráfico) % OUTPUTS: - q: matriz Q tridimensional -sat_opt: conjunto de soluciones factible s -optimo: vector que indica el número de a dquisiciones que forman cada solución -minimo: número de adquisiciones que form an la solución óptima -satelite: posicion de la solucion optima dentro del conjunto de sluciones factibles -t_q: tiempo de computo de matriz Q tridimensional t_q=cputime; [a,zonas,sat_traz,q]=matrizqvar(n,it,paso,repres); t_q=cputime-t_q;

%% CREAMOS UNA MATRIZ "q_it" que será la modificada en cada solución factible independiente %%% IMPLEMENTACION GRASP t_grasp=cputime;

86

for ind_global=1:num_sol q_it=q; suma=1; iter=0;

while suma~=0 iter=iter+1; indice=0; for j=1:n for k=1:it indice=indice+1; a=sum(q_it(j,:,k)); areas(indice)=struct( 'sat_orig' ,j, 'sat_traz' ,k, 'area' ,a); end end suma=0; indices_selec=zeros(num_k,1); aa=numel(areas(1,:)); for l=1:num_k seleccionado=0; for i=1:aa if areas(1,i).area>=seleccionado seleccionado=areas(1,i).area; indice=i; % nos dice la posicion del sat que mas cubre dentro % de la estructura sat_traz else end end indices_selec(l,1)=indice; areas(1,indice).area=0; end d=fix(rand*num_k)+1; %elegimos uno de los maximos al azar d=indices_selec(d,1); %% GUARDAMOS EL SAT SELECCIONADO sat_cobertura(iter)=[sat_traz(1,d)];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%ACTUALIZACIÓN DE LA MATRIZ 'q_it' ppp=sat_cobertura(1,iter).original; for i=1:numel(zonas) if q_it(sat_traz(1,d).original,i,sat_traz(1,d).traza) ==1 q_it(:,i,:)=0; end end q_it(ppp,:,:)=0; for j=1:n for k=1:it a=sum(q_it(j,:,k)); suma=suma+a;

87

end end sat_opt(ind_global,iter)=struct( 'x' ,sat_traz(1,d).x, 'y' , ... sat_traz(1,d).y, 'original' ,sat_traz(1,d).original, ... 'traza' ,sat_traz(1,d).traza); rmfield(areas, 'area' ); clear areas ;clear sat_cobertura ; end tiempo(ind_global,:)=[ind_global,cputime-t_grasp]; kl=0; for j=1:numel(sat_opt(ind_global,:)) if sum(sat_opt(ind_global,j).x)~=0 & sum(sat_opt(ind_global,j).y) ... ~=0 kl=kl+1; end end if kl==op t_grasp=cputime-t_grasp %% Nos da el tiempo en encontrar la solución óptima, en el caso de que la conozcamos a través del CPLEX keyboard end end

%% Seleccionamos la mejor solución de entre el conj unto de soluciones optimo=zeros(num_sol,1); for i=1:numel(sat_opt(:,1)) kl=0; for j=1:numel(sat_opt(i,:)) if sum(sat_opt(i,j).x)~=0 & sum(sat_opt(i,j).y)~=0 kl=kl+1; end end optimo(i,:)=kl; end [Y,I]=min(optimo); minimo=Y; satelite=I;