Download sistemas multiagente aplicados al control y mantenimiento de

Document related concepts
no text concepts found
Transcript
SISTEMAS MULTIAGENTE
APLICADOS AL CONTROL Y
MANTENIMIENTO DE
HUERTOS SOLARES
Dra. Mª del Carmen Romero Ternero
[email protected]
Departamento Tecnología Electrónica
Universidad de Sevilla
SISTEMAS MULTIAGENTE
APLICADOS A SISTEMAS DE
CONTROL
Dra. Mª del Carmen Romero Ternero
[email protected]
Departamento Tecnología Electrónica
Universidad de Sevilla
Índice
y
Desarrollo de MAS
◦ Plataformas de desarrollo
◦ JADE
y
Proyecto CARISMA
◦ Antecedentes
◦ Modelo de propagación del conocimiento
◦ Arquitectura
◦ Agentes
◦ Ontología
◦ Aprendizaje
◦ Implementación en JADE
16/06/2010
3
DESARROLLO DE MAS
16/06/2010
4
Aplicaciones
y
Variedad de aplicaciones en el mundo real: videojuegos,
videojuegos
sistemas de transporte, logística, etc.
Recuperación de la
información
Sistemas
cooperativos
Sistemas
distribuidos
Robótica
Sistemas de
información
Agentes
Gestión del
conocimiento
Comercio
electrónico
Inteligencia
artificial
Internet
Interfaces
de usuario
16/06/2010
5
Plataformas MAS
y
y
y
Recomendables para desarrollo de aplicaciones
distribuidas y en todo lo relativo a tecnologías
móviles Æ alta escalabilidad y balanceo de
carga.
Di
Diversas
plataformas:
l t f
f
frameworks
k y librerías
lib í
que facilitan el desarrollo de sistemas
multiagente.
lti
t
Estas herramientas minimizan el tiempo de
desarrollo y permiten trabajar bajo estándares
aceptados en el desarrollo de MAS.
16/06/2010
6
Plataformas MAS
Plataforma
Licencia
Lenguaje
Dominio
ABLE
Agent Building and
Learning
Environment
Open Source
Able Rule Language
Construcción de agentes inteligentes haciendo uso de
máquinas de aprendizaje y razonamiento
iGen
The Cognitive
Agent Software
Toolkit
Propietario
C, C++, Java
Modelado de diversos aspectos biológicos del ser humano
ADK
Agent
Development Kit
GPL
Java
Aplicaciones con una alta escalabilidad
ZEUS
Open Source
Visual Editors
Sistemas multi-agente basados en reglas y scripting
JASA
Java Auction
Simulator API
GPL
Java
Simulación de entornos económicos
AgentBuilder
Propietario
KQML, Java, C++
Sistemas multi-agente de propósito general
JADE
Java Agent
Development
Framework
GPL
Java
Sistemas multi-agente de propósito general
16/06/2010
7
Plataformas MAS: JADE
y
Características interesantes:
◦ licencia libre,
◦ orientado al desarrollo de MAS de propósito
general,
◦ integrado con el uso de un lenguaje
ampliamente
p
conocido (J
(JAVA),
),
◦ cumple con los estándares FIPA para la
comunicación entre agentes e interplataforma,
◦ amplio uso tanto en entornos académicos
como empresariales.
empresariales
16/06/2010
8
Plataformas MAS: JADE
y
¿Qué es JADE?
◦ Java Agent Development Framework.
para el desarrollo de agentes
g
◦ Framework p
inteligentes en Java, que ofrece:
x Una estructura conceptual para el desarrollo de un MAS.
x Un
U conjunto
j t d
de librerías
lib í que facilitan
f ilit ell d
desarrollo
ll d
de un
nuevo MAS, haciendo hincapié en los temas relativos a la
comunicación entre agentes.
x Un
U conjunto
j
de
d servicios
i i que hacen
h
posible
ibl ell
funcionamiento del MAS sobre plataformas heterogéneas
(“middleware”).
x Aplicaciones
A li i
gráficas
áfi
d
destinadas
i d a ffacilitar
ili lla
monitorización y depuración del MAS que se está
desarrollando.
16/06/2010
9
Plataformas MAS: JADE
Agente C
Agente D
Aplicación
MAS
Agente A
Agente B
Capa homogénea
Plataforma JADE
Java
Contenedor
principal
Contenedor
J2SE
J2EE
Contenedor
J2ME
Redes inalámbricas y cableadas
Internet
16/06/2010
10
Plataformas MAS: JADE
y
Más en el taller de mañana:
◦ 9h30 en aula B1.32
16/06/2010
11
PROYECTO CARISMA
16/06/2010
12
Telecontrol tradicional
HMI
…
Centro de Control
Protocolo de telecontrol
Frontal de Comunicaciones
Protocolo de
telecontrol
Equipo de campo
…
16/06/2010
Equipo de campo
13
Telecontrol tradicional
Protocolos
estándares
RTU
Centro de
Control
C t l
Protocolos
propietarios
Gateway
o proxy
16/06/2010
14
Telecontrol tradicional
Centro
de
control
Red
corporativa
Bus de datos
Hardware de procesado
Terminales de
control
Bus de
campo
Bus de
campo
Bus de
campo
B de
Bus
d control
t l
16/06/2010
15
Telecontrol mejorado
P
Proyecto
t IDOLO
16/06/2010
16
Soporte MAS al telecontrol
Surveillance
targets
Actions
Guards
Senses
SENSORS
Supervisor
Vision
H i
Hearing
Smelling
Supervisor
...
RTU1
RTUn
CC
Trainning agent
P
Proyecto
TOMARES
16/06/2010
17
Soporte MAS al telecontrol
SYSTEM CONTROL LEVEL
APPLICATION n
SCADA
...
Supervisor
APPLICATION 1
Guard
Guard
LAN (Ethernet, TCP/IP)
Gateway
y ((GW))
HMI
IEEE 802.15.4/
ZigBee
IEEE 802.15.4/
ZigBee
WAN (ATM, TCP/IP)
Router mesh
Guard
Guard
STATIO
ON
IEEE 802.15.4/
ZigBee
GW
HMI
RTU
LAN (Ethernet, TCP/IP)
IEEE 802.15.4/
Zi B
ZigBee
Sensors and actuators
Proyecto TOMARES
Intelligent Electronic Device (IED)
16/06/2010
IED
EQUIPMENT
18
Proyecto CARISMA
Proyecto Control Automático
Remoto de Instalaciones Solares
con tecnología Multi-Agente.
y El objetivo es poder controlar,
monitorizar y mejorar el
mantenimiento de huertos solares
de forma automatizada.
y Para ello se distribuirán pequeños
di
dispositivos
ii
en di
distintas
i
zonas d
de
estas plantas solares, a los cuales
se les asociarán sensores y
actuadores.
y El sistema multiagente que correrá
sobre el conjunto de estos
dispositivos deberá ser capaz de
poder tomar decisiones de control
automatizadas ó enviar
recomendaciones a los técnicos de
la planta solar, en función de los
datos/conocimiento que manejen.
manejen
y
16/06/2010
19
Propagación del conocimiento
y
Modelo jerárquico dividido en capas ((≥3)
3) y basado en
el conocimiento del sistema
◦ Input Layer: agentes que poseen un conocimiento global
del sistema.
sistema La configuración más simple compone esta
capa de un solo agente.
◦ Middle Layer: agentes que poseen conocimiento parcial
del sistema.
sistema Se puede dividir en varias
varias.
◦ Final Layer: agentes con conocimiento/visión local del
sistema hardware.
Input Layer
Middle Layer
Final Layer
16/06/2010
20
Propagación del conocimiento
Flujos
Fl
j d
de conocimiento
i i
distintos según punto de
entrada del conocimiento
en el sistema
y La comunicación entre
agentes se encuentra
limitada,, de tal forma qque
los agentes sólo podrán
comunicarse con agentes de
su misma capa o con
agentes de capas adyacentes.
adyacentes
y Sólo se permite una
comunicación directa con la
capa de entrada cuando se
presenten requisitos en
tiempos de respuesta.
y
((A))
Input
(B)
Middle
Final
Final
Middle
Input
Input
(C)
Middle
Final
16/06/2010
21
Propagación del conocimiento
y
Para controlar
P
l los
l flujos
fl j d
de
conocimiento en el sistema, se
han introducido mecanismos de
etiquetado del conocimiento:
Fiabilidad y Reputación
◦ La fiabilidad representará un valor
de confianza en el conocimiento
que se transmite.
◦ La reputación aplica un grado de
confianza entre los distintos
agentes que componen el sistema.
y
En función de estos dos valores
se producirá o no la
propagación del conocimiento
en ciertas áreas del sistema.
sistema
if not hasKnowledge(DA,newK)
if acceptByReputation(DA,SA)
newFb=newK.fb/SA.rp
insertKnowledge(DA,newK,newFb)
else
discardKnowledge(DA,newK)
endif
else
if acceptByReputation(DA,SA)
if(oldK.fb <= newK.fb)
newFb=newK.fb/SA.rp
updateKnowledge(DA,oldK,newK,newFb)
else
if confirmKnowledge(DA,newK)
newFb=newK.fb/SA.rp
updateKnowledge(DA,newK,newFb)
else
discardKnowledge(DA,newK)
endif
endif
else
discardKnowledge(DA,newK)
endiff
endif
16/06/2010
22
Propagación del conocimiento
AT
Posee suficiente conocimiento
para dar una solución
AC1
ACL: Informar de alarma y dar
recomendación
Posee suficiente conocimiento
para dar una recomendación
ACL: Informar de alarma
ACL: Informar
de solución
AO2
No posee suficiente conocimiento
ACL: Informar de alarma
AO1
Regla de detección activada
AO3
…
ACL: Transferencia dato del sensor
ADS
16/06/2010
23
Arquitectura
y
AT
Cuatro tipo de agentes:
◦ Agente Teleoperador (AT)
◦ Agente Coordinador (AC)
AC
AC
AC
AC
AO AO
AO
AO
AO AO
◦ Agente Operador (AO)
◦ Agente Dispositivo (ASD)
y
Repartidos
p
entre las distintas capas:
p
◦ Agente Teleoperador Æ
Capa de entrada
◦ Agentes Coordinadores Æ
ASD
ASD
Contenedor
C
d 1
ASD
ASD
Contenedor
C
d 2 Contenedor
C
d 3
Capa intermedia
◦ Agentes operadores y dispositivo Æ
C
Capa
fifinall
y
Zona de cobertura 1
Zona de cobertura 2
Se definen zonas de comunicación.
Zona de cobertura 3
16/06/2010
24
Arquitectura: Agentes
y
Agente
ge te Teleoperador
e eope ado
◦ Agente de control global de la plataforma: configurar diversos aspectos del
sistema (zonas de cobertura y pertenencia de agentes a cada zona) y servir
como interfaz p
para el acceso al resto de agentes
g
del sistema y al usuario.
y
Agente Coordinador
◦ Agente encargado de coordinar soluciones globales a una situación de fallo o
alarma.
y
Agente Operador
◦ Agente encargado de controlar los distintos agentes dispositivo-sensor que
tenga asignados ó tomar una actuación sobre un agente dispositivo.
dispositivo También
ofrecerá distintos mecanismos de comunicación de fallos a otros agentes
(coordinadores u operadores).
y
Agente Dispositivo-Sensor
◦ Agente reactivo encargado de obtener datos de los sensores y de ejecutar
acciones sobre los actuadores, en caso de que existan. Este agente será único y
adaptado al tipo de dispositivo que vaya a tratar.
16/06/2010
25
Arquitectura:
Agente DispositivoDispositivo-Sensor
AO
Interfaz común
Envío de operaciones a actuadores
ASD
Solicitud/Envío de datos de sensores
ASD
Adquisición
de datos
Sensor
Actuador
Sensor
16/06/2010
ASD
Actuación sobre
dispositivo
Actuador
26
Aprendizaje de los agentes
y
Inicialmente: basado en reglas de detección
fallos/alarmas
Tabla reglas
g operador
p
Regla
25ºC<Tº<30ºC
Tº>30ºC
20ºC<Tº<25ºC
Tº<20ºC
Acción
No hacer nada
Avisar a coordinador
Actuar sobre enfriador
Avisar a agentes op1 y op2
Tabla reglas coordinador
Regla
Si 30ºC<AO1_S1(Tº)>40ªC Acción
Informar AO1 de que no ocurre nada en ese rango de temperatura
Nueva Tabla reglas operador
Regla
Acción
25ºC<Tº<40ºC
Tº>40ºC
Tº<25ºC
No hacer nada
Avisar a coordinador
Avisar a agentes op1 y op2
16/06/2010
27
Aprendizaje de los agentes
y
Sistema basado en reglas con Drools
import
drools;
rule “TemperaturaExcesiva"
when temperatura : Temperatura(promedio >= 40)
then
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver", false);
msg.addReceiver(agentCoordinator1);
System out println(“Exceso
System.out.println(
Exceso de temperatura ");
);
AlarmaTemp.setTemperatura(promedio);
alarma pred= new alarma(AlarmaTemp);
manager.fillContent(msg, pred);
Send(msg);
end
16/06/2010
28
Ontología básica
CARISMAOntology
Conceptos
Agente
Predicados
Sensor
Identificador
Identificador
Tipo de Agente
Tipo de Sensor
informacionAgente
Acciones
solicitarInformacion(tipoInformacion)
listaSensores
Contenedor al que
pertenece
Lista de Agentes con
los que puede
comunicarse
16/06/2010
29
Ontologías: Definición
y
Uso de herramienta Protegé y plugin beangenerator
package CARISMAOntology;
import jade.content.onto.*;
import jade.content.schema.*;
import jade.util.leap.HashMap;
jade util leap HashMap;
import jade.content.lang.Codec;
import jade.core.CaseInsensitiveString;
/** file: CARISMAOntology.java
CARISMAOntology java *
@author ontology bean generator *
@version 2010/01/12, 19:23:04 */
public class CARISMAOntology extends Ontology {
………………..
}
16/06/2010
30
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
31
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
SSe fija
f cuál
ál
ontología y qué
lenguaje de
contenido
t id
entiende el
agente
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
32
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
SSupóngase
ó
un
comportamiento
destinado a
responder a una
solicitud de
información por
parte de otro
agente
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
33
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
Se construye el
mensaje indicando
el lenguaje de
contenido y la
ontología específica
que se va a usar
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
34
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
Concepto
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
35
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
Predicado
(los conceptos no se
pueden enviar solos)
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
36
Ontologías: JADE
public class agentTeleoperator extends Agent {
………………..
private Codec codec = new SLCodec();
private Ontology ontology = CARISMAOntology.getInstance();
private ContentManager manager = (ContentManager)getContentManager();
public setup(){
manager.registerLanguage(SLcodec);
manager.registerOntology(CARISMAontology);
addBehaviour(new SenderBehaviour (this));
}
class SenderBehaviour extends SimpleBehaviour {
………
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID receiver = new AID("receiver",
(
, false);
);
msg.setSender(getAID());
msg.addReceiver(receiver);
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
Se asocia el
predicado al mensaje
y se envía
Agente AT= new Agente();
AT.setIdentificador(“Agente Teleoperador");
AT.setTipoAgente(“T");
AT.setContenedor(“container1”);
InformacionAgente pred= new InformacionAgente (AT);
manager.fillContent(msg, pred);
Send(msg);
16/06/2010
37
Y A SEGUIR
TRABAJANDO…
TRABAJANDO
16/06/2010
38
Agradecimientos
EL PROYECTO CARISMA ES UN PROYECTO
DE EXCELENCIA DE LA JUNTA DE
ANDALUCÍA ((P08
(P08--TICTIC-03862).
)
16/06/2010
39
Publicaciones
y
J.I. Escudero, J.A. Rodríguez, M.C. Romero: Idolo: Multimedia Data Deployment On Scada Systems, IEEE PES
Power Systems Conference And Exposition 2004, ISSN/ISBN: 0-7803-8719-8, New York (USA), 10 – 13 de
octubre
b de
d 2004.
2004
y
M.C. Romero, F. Sivianes, A. Carrasco, M.D. Hernández, J.I. Escudero: Multi-Agent System and Embedded System
Technologies for Automatic Surveillance, 10TH International Conference on Enterprise Information Systems,
ISSN/ISBN: 978-989-8111-37-1, Barcelona (España), 13 – 16 de junio de 2008.
y
F. Sivianes, M.C. Romero, M.D. Hernández, A. Carrasco, J.I. Escudero: Automatic Surveillance in Power System
Telecontrol Applying Embedded and Multi-Agent System Technologies, 2008 IEEE International Symposium on
Industrial Electronics, ISSN/ISBN: 978-1-4244-1666-0, 1172 - 1176, Cambridge (UK), 30 de junio – 2 de julio de
2008.
y
M.C
M
C Romero,
R
F.
F Sivianes,
Si i
C.A.
C A Carrasco,
C
M.D.
M D Hernandez,
H
d and
d J.I.
J I Escudero,
E d
Ma a i eemergency
Managing
e e c response
espo se
operations for electric utility maintenance, IEEE Industrial Electronic Magazine, vol. 3, no. 3, pp. 15–18, 2009.
y
A. Carrasco, M.C. Romero-Ternero, F. Sivianes, M.D. Hernandez, J.I. Escudero, Multi-Agent and Embedded System
Technologies Applied to Improve the Management of Power Systems , JDCTA: International Journal of Digital Content
Technology and its Applications,
Applications Vol.
Vol 4,
4 No.
No 1,
1 pp.
pp 79 ~ 85
85, 2010.
2010
y
D. Oviedo, M.C. Romero-Ternero, M.D. Hernández, A. Carrasco, F. Sivianes, J.I. Escudero, Model of Knowledge
Spreading for Multiagent Systems, 12th International Conference on Enterprise Information Systems, Madeira Portugal, 8 - 12 Junio 2010.
y
D. Oviedo,
D
Oviedo M.C.
M C Romero-Ternero,
Romero Ternero M.D.
M D Hernández,
Hernández A.
A Carrasco,
Carrasco F.
F Sivianes,
Sivianes J.I.
J I Escudero,
Escudero Architecture for
Multiagent-based control systems, International Symposium on Distributed Computing and Artificial Intelligence 2010
(DECAI 2010), Valencia, 7-10 septiembre 2010.
y
A. Carrasco, M. C. Romero-Ternero, F. Sivianes, M. D. Hernández, D. Oviedo, J. I. Escudero, Facilitating Decision
Makingg and Maintenance for
f Power Systems
y
Operators
p
through
g the Use off Agents
g
and Distributed Embedded Systems,
y
,
International Journal of Intelligent Information Technologies (IJIIT), ISSN: 1548-3657, Pennsylvania, EEUU,
Pendiente de publicación
16/06/2010
40
SISTEMAS MULTIAGENTE
APLICADOS AL CONTROL Y
MANTENIMIENTO DE
HUERTOS SOLARES
Muchas gracias por su atención
Dra. Mª del Carmen Romero Ternero
[email protected]
@
Departamento Tecnología Electrónica
Universidad de Sevilla