<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gonzalo</id>
		<title>MateWiki - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gonzalo"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Gonzalo"/>
		<updated>2026-04-28T23:30:02Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14519</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14519"/>
				<updated>2014-09-21T07:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la posición y forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. Esta función es de gran ayuda en el programa de optimización al permitir una mayor automatización del mismo.  El programa se basa en calcular el mínimo de la función definida anteriormente de forma automática partiendo de una configuración, terna de valores, inicial. El cálculo del gradiente de la función  en un punto, terna de valores, se realizada empleando el método de diferencias finitas para calcular las derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
La expresión para calcular una terna a partir de otra anterior se apoya en un coeficiente épsilon pequeño que representa un paso de avance en una dirección determinada dada por el gradiente. Si en el paso de una terna a la siguiente disminuye el valor de la función, la dirección es la correcta y se aumenta épsilon. Si ,por el contrario, aumenta el valor de la función en la nueva terna comparado con el valor en la terna anterior, se considera que el avance ha sido demasiado grande y se intenta con un épsilon mas pequeño.&lt;br /&gt;
&lt;br /&gt;
Se presenta a continuación el código del programa en Matlab y de la función que devuelve la máxima tensión de Von Mises que se produce en la placa para una configuración geométrica y de cargas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p1,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14518</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14518"/>
				<updated>2014-09-21T06:55:08Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la posición y forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. Esta función es de gran ayuda en el programa de optimización al permitir una mayor automatización del mismo.  El programa se basa en calcular el mínimo de la función definida anteriormente de forma automática partiendo de una configuración, terna de valores, inicial. El cálculo del gradiente de la función  en un punto, terna de valores, se realizada empleando el método de diferencias finitas para calcular las derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
La expresión para calcular una terna a partir de otra anterior se apoya en un coeficiente épsilon pequeño que representa un paso de avance en una dirección determinada dada por el gradiente. Si en el paso de una terna a la siguiente disminuye el valor de la función, la dirección es la correcta y se aumenta épsilon. Si ,por el contrario, aumenta el valor de la función en la nueva terna comparado con el valor en la terna anterior, se considera que el avance ha sido demasiado grande y se intenta con un épsilon mas pequeño.&lt;br /&gt;
&lt;br /&gt;
Se presenta a continuación el código del programa en Matlab y de la función que devuelve la máxima tensión de Von Mises que se produce en la placa para una configuración geométrica y de cargas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14517</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14517"/>
				<updated>2014-09-21T06:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. Esta función es de gran ayuda en el programa de optimización al permitir una mayor automatización del mismo.  El programa se basa en calcular el mínimo de la función definida anteriormente de forma automática partiendo de una configuración, terna de valores, inicial. El cálculo del gradiente de la función  en un punto, terna de valores, se realizada empleando el método de diferencias finitas para calcular las derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
La expresión para calcular una terna a partir de otra anterior se apoya en un coeficiente épsilon pequeño que representa un paso de avance en una dirección determinada dada por el gradiente. Si en el paso de una terna a la siguiente disminuye el valor de la función, la dirección es la correcta y se aumenta épsilon. Si ,por el contrario, aumenta el valor de la función en la nueva terna comparado con el valor en la terna anterior, se considera que el avance ha sido demasiado grande y se intenta con un épsilon mas pequeño.&lt;br /&gt;
&lt;br /&gt;
Se presenta a continuación el código del programa en Matlab y de la función que devuelve la máxima tensión de Von Mises que se produce en la placa para una configuración geométrica y de cargas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14516</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14516"/>
				<updated>2014-09-21T06:52:00Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. Esta función es de gran ayuda en el programa de optimización al permitir una mayor automatización del mismo.  El programa se basa en calcular el mínimo de la función definida anteriormente de forma automática partiendo de una configuración, terna de valores, inicial. El cálculo del gradiente de la función  en un punto, terna de valores, se realizada empleando el método de diferencias finitas para calcular las derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
La expresión para calcular una terna a partir de otra anterior se apoya en un coeficiente épsilon pequeño que representa un paso de avance en una dirección determinada dada por el gradiente. Si en el paso de una terna a la siguiente disminuye el valor de la función, la dirección es la correcta y se aumenta épsilon. Si ,por el contrario, aumenta el valor de la función en la nueva terna comparado con el valor en la terna anterior, se considera que el avance ha sido demasiado grande y se intenta con un épsilon mas pequeño.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14515</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14515"/>
				<updated>2014-09-21T06:48:08Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. Esta función es de gran ayuda en el programa de optimización al permitir una mayor automatización del mismo.  El programa se basa en calcular el mínimo de la función definida anteriormente de forma automática partiendo de una configuración, terna de valores, inicial. El cálculo del gradiente de la función  en un punto, terna de valores, se realizada empleando el método de diferencias finitas para calcular las derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14514</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14514"/>
				<updated>2014-09-20T08:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14513</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14513"/>
				<updated>2014-09-20T07:58:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
Una vez resuelto un problema concreto se pasa a automatizar el proceso para buscar la optimización para unas determinadas condiciones de contorno. A partir de la resolución del problema concreto se crea una función que tiene por argumentos las características geométricas del problema y devuelve la máxima tensión de Von Mises que se produce en la placa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14512</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14512"/>
				<updated>2014-09-20T07:48:17Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14511</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14511"/>
				<updated>2014-09-20T07:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;sigma_{VM}  =  \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14510</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14510"/>
				<updated>2014-09-20T07:47:05Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;sigma_{VM}  =  sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14509</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14509"/>
				<updated>2014-09-20T07:44:38Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14508</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14508"/>
				<updated>2014-09-20T07:42:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente. Ésta se calcula a partir de la formula particularizada para el caso de una placa en tensión plana:&lt;br /&gt;
&lt;br /&gt;
{{ecuación|&lt;br /&gt;
&amp;lt;math&amp;gt;\sigma_{VM} = \sqrt{\sigma_x^2 -\sigma_x\sigma_y  +\sigma_y^2 + 3\tau_{xy}^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
|7|left}}&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14507</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14507"/>
				<updated>2014-09-20T07:39:14Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
El primer paso consistió en la resolución de un problema concreto con unas determinadas condiciones de contorno y características geométricas en la placa para poder resolver posteriormente un problema con cualquier condición inicial. La resolución implica la obtención del campo vectorial de desplazamientos de cada nodo (dos componentes al ser una placa plana) y a partir de éstos calcular las tensiones normales existentes en la placa para ese estado según el eje X (horizontal) y eje Y (vertical);  y las tensiones tangenciales. Una vez obtenidos estos campos escalares es posible calcular en cada punto de la placa la tensión de Von Mises existente.&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14506</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14506"/>
				<updated>2014-09-19T17:31:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
Entre las mayores dificultades encontradas en el proceso  se encuentran la Geometry Description Matrix y la matriz de condiciones de contorno. Los comandos para la creación por pasos de la matrices necesarias para la generación de la Geometry Description Matrix no funcionaban adecuadamente por lo que se opta por escribir la matriz directamente deducida la estructura de un caso similar al del problema, placa rectangular con agujero elíptico, creado en Matlab con ese único objeto. También es  necesario definir las condiciones de contorno de cada borde de la región sobre la que se resuelve en una matriz de condiciones de contorno. A pesar de haber acabado comprendiendo la metodología correcta de creación de la matriz, expresar para cada columna las condiciones Neumann o Dirichlet existentes, la utilización de la misma en los cálculos se hace a través de un fichero que es cargado durante la ejecución que contiene dicha matriz generada mediante el módulo de Matlab para la resolución de ecuaciones diferenciales.  &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14505</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14505"/>
				<updated>2014-09-19T17:19:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
La resolución en Matlab comenzó calculando la tensión de Von Mises máxima que se genera en la placa para una determinada configuración del agujero, excentricidad y carga aplicada con el objetivo de aprender los comandos básicos necesarios a utilizar. A partir de este cálculo inicial se crea la función que para una configuración dada (desplazamiento horizontal y vertical y excentricidad de la elipse) con las condiciones de contorno del problema permite obtener la tensión de Von Mises máxima en la placa; función que se utiliza para el proceso posterior de optimización.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14502</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14502"/>
				<updated>2014-09-10T17:51:49Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; %base y altura&lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14501</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14501"/>
				<updated>2014-09-10T17:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se decidió resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14500</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14500"/>
				<updated>2014-09-10T17:38:24Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14499</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14499"/>
				<updated>2014-09-10T17:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14498</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14498"/>
				<updated>2014-09-10T17:37:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|miniaturadeimagen|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14497</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14497"/>
				<updated>2014-09-10T17:37:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Placa mallada optimizacion|miniaturadeimagen|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14496</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14496"/>
				<updated>2014-09-10T17:36:43Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|conmarco|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14495</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14495"/>
				<updated>2014-09-10T17:36:17Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Placa mallada optimizacion.jpg|sinmarco|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14494</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14494"/>
				<updated>2014-09-10T17:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Placa mallada optimizacion|sinmarco|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14493</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14493"/>
				<updated>2014-09-10T17:34:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Mallado placa optimizacion|sinmarco|derecha|Placa plana con agujero objeto del problema]]&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Placa_mallada_optimizacion.jpg&amp;diff=14492</id>
		<title>Archivo:Placa mallada optimizacion.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Placa_mallada_optimizacion.jpg&amp;diff=14492"/>
				<updated>2014-09-10T17:32:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Plot del mallado de la placa plana, dispuesta con su agujero en el centro de la misma.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Plot del mallado de la placa plana, dispuesta con su agujero en el centro de la misma.&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14491</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14491"/>
				<updated>2014-09-10T17:16:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
Debido a los problemas que se encontraron con los programas utilizados y el tiempo que se empleó para intentar solucionarlos, se opta por plantear la resolución del problema mediante el empleo del programa Matlab. Matlab tiene un módulo específico para la resolución de ecuaciones diferenciales, cuyos comandos se utilizaron para resolver el problema particularizados para el caso de tensión plana.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14490</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14490"/>
				<updated>2014-09-10T17:16:09Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Programa que realiza la optimizacion de &lt;br /&gt;
%la posicion y forma del agujero elíptico&lt;br /&gt;
%de una placa sometida a tensión plana&lt;br /&gt;
clear all&lt;br /&gt;
clc&lt;br /&gt;
%comenzamos con una terna cualquiera&lt;br /&gt;
x=0.1; y=0.1; e=0.2;&lt;br /&gt;
%tamaño de los triángulos&lt;br /&gt;
h=0.03;&lt;br /&gt;
%paso de la derivada&lt;br /&gt;
hg=0.01;&lt;br /&gt;
epsilon=0.05;&lt;br /&gt;
a0=[x,y,e];&lt;br /&gt;
Fa0=VM_max(a0(1),a0(2),a0(3),h);&lt;br /&gt;
Fdib=[Fa0];&lt;br /&gt;
Fa1=Fa0+1;&lt;br /&gt;
gradiente0=[0,0,0];&lt;br /&gt;
gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
while(norm(gradiente0)&amp;gt;1e-6)&lt;br /&gt;
%calculamos los elementos del gradiente&lt;br /&gt;
&lt;br /&gt;
a1=a0-gradiente0*epsilon;&lt;br /&gt;
Fa1=VM_max(a1(1),a1(2),a1(3),h);&lt;br /&gt;
if(Fa1&amp;lt;Fa0)&lt;br /&gt;
    epsilon=epsilon*1.1;&lt;br /&gt;
    a0=a1&lt;br /&gt;
    Fa0=Fa1&lt;br /&gt;
    Fdib=[Fdib,Fa0];&lt;br /&gt;
    gradiente0(1)=(VM_max(a0(1)+hg,a0(2),a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(2)=(VM_max(a0(1),a0(2)+hg,a0(3),h)-Fa0)/hg;&lt;br /&gt;
    gradiente0(3)=(VM_max(a0(1),a0(2),a0(3)+hg,h)-Fa0)/hg;&lt;br /&gt;
else&lt;br /&gt;
    epsilon=epsilon*0.5;&lt;br /&gt;
end&lt;br /&gt;
if epsilon&amp;lt;1.e-8&lt;br /&gt;
    break&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
function [ vm ] = VM_max( x,y,e,h)&lt;br /&gt;
&lt;br /&gt;
%las características del rectángulo deben de ser las &lt;br /&gt;
% mismas en la funcion y en el fichero principal original&lt;br /&gt;
B=1; H=2; &lt;br /&gt;
% centrada la elipse en el origen x0=0; y0=0; &lt;br /&gt;
xmin=-0.5*B; xmax=B*0.5; ymin=-H*0.5; ymax=H*0.5;&lt;br /&gt;
&lt;br /&gt;
%obtenemos ahora los valores de a y b de la &lt;br /&gt;
%elipse a partir de la excentricidad y sabiendo&lt;br /&gt;
% que mantiene el mismo área que la orignal&lt;br /&gt;
a_original=0.3; b_original=0.25;&lt;br /&gt;
area_elipse=3.1415*a_original*b_original;&lt;br /&gt;
%resolvemos el sistema conocida la excentricidad&lt;br /&gt;
% y el área&lt;br /&gt;
b=((1-e^2)*area_elipse^2/3.1415)^(1/4);&lt;br /&gt;
a=area_elipse/(3.1415*b);&lt;br /&gt;
&lt;br /&gt;
%comenzamos a crear el rectángulo&lt;br /&gt;
dl=[2 2 2 2 4 4 4 4;xmax xmax xmin xmin -a 0 a 0;&lt;br /&gt;
    xmax xmin xmin xmax 0 a 0 -a;ymin ymax ymin ymin 0 -b 0 b;&lt;br /&gt;
    ymax ymax ymax ymin -b 0 b 0;ymax ymax 0 ymax 0 0 0 0;&lt;br /&gt;
    0 0 ymax 0 ymax ymax ymax ymax;0 0 0 0 0 0 0 0;&lt;br /&gt;
    0 0 0 0 0 0 0 0;0 0 0 0 a a a a;&lt;br /&gt;
    0 0 0 0 b b b b;0 0 0 0 0 0 0 0];&lt;br /&gt;
%mallamos la geometría&lt;br /&gt;
[p,e,t]=initmesh(dl);&lt;br /&gt;
%damos ahora el desplazamiento al agujero según queramos&lt;br /&gt;
for k=1:length(e)&lt;br /&gt;
        if 4&amp;lt;e(5,k) &amp;amp;&amp;amp;  e(5,k)&amp;lt;9 %los que están en la frontera interior&lt;br /&gt;
        j=e(1,k);&lt;br /&gt;
        &lt;br /&gt;
        p(1,j)=p(1,j)+x;%las x&lt;br /&gt;
        p(2,j)=p(2,j)+y;%las y&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
%arreglamos la malla&lt;br /&gt;
p1=jigglemesh(p,e,t);&lt;br /&gt;
&lt;br /&gt;
%cargamos el fichero con las condiciones de contorno&lt;br /&gt;
load matrizb&lt;br /&gt;
% Creamos el vector c para resolver el problema de la&lt;br /&gt;
% elasticidad en tensión plana&lt;br /&gt;
% características de la placa&lt;br /&gt;
E= 200e9; nu= 0.2;&lt;br /&gt;
c=zeros(10,1);&lt;br /&gt;
c(1)=E/(1-nu^2);&lt;br /&gt;
c(2)=0;&lt;br /&gt;
c(3)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(4)=0;&lt;br /&gt;
c(5)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(6)=E*nu/(1-nu^2);&lt;br /&gt;
c(7)=0;&lt;br /&gt;
c(8)=(E*(1-nu))/(2*(1-nu^2));&lt;br /&gt;
c(9)=0;&lt;br /&gt;
c(10)=E/(1-nu^2);&lt;br /&gt;
a=0;&lt;br /&gt;
f=[0;0];&lt;br /&gt;
% resolvemos&lt;br /&gt;
u = assempde(b, p1, e, t, c, a, f);&lt;br /&gt;
&lt;br /&gt;
[ux,uy]=pdegrad(p,t,u);&lt;br /&gt;
% deformaciones horizontales&lt;br /&gt;
epsilonx=ux(1,:);&lt;br /&gt;
%deformaciones verticales&lt;br /&gt;
epsilony=uy(2,:);&lt;br /&gt;
% deformaciones angulares&lt;br /&gt;
gammaxy=ux(2,:)+uy(1,:);&lt;br /&gt;
%calculo del vector de tensiones en la placa&lt;br /&gt;
sigmax=(E/(1-nu^2))*(epsilonx+nu*epsilony);&lt;br /&gt;
%&lt;br /&gt;
sigmay=(E/(1-nu^2))*(nu*epsilonx+epsilony);&lt;br /&gt;
%&lt;br /&gt;
tauxy=(E/(1-nu^2))*(1-nu)*0.5*gammaxy;&lt;br /&gt;
%calculo de la tension de von mises&lt;br /&gt;
von_mises=sqrt(sigmax.^2-sigmax.*sigmay+sigmay.^2+3*tauxy.^2);&lt;br /&gt;
%obtenemos el maáximo de la tension de von mises&lt;br /&gt;
vm=max(von_mises);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14485</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14485"/>
				<updated>2014-08-29T09:41:52Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente en este lenguaje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all % antes de comenzar&lt;br /&gt;
t0=0; tN=4; % el intervalo de tiempo es de 0s a 4s&lt;br /&gt;
N=40; h=(tN-t0)/N; %40 intervalos con paso h&lt;br /&gt;
y0=1/10; % valor inicial&lt;br /&gt;
yy=y0;&lt;br /&gt;
y(1)=yy  % inicio del bucle&lt;br /&gt;
for n=1:N    &lt;br /&gt;
yy= (1/h)*(0.5*h-1+sqrt((1-0.5*h)^2+4*(h/2)*(yy+0.5*h*yy*(1-yy))));    &lt;br /&gt;
y(n+1)=yy;&lt;br /&gt;
end&lt;br /&gt;
t=t0:h:tN;&lt;br /&gt;
plot(t,y,'x') % dibujo de la solución &lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14484</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14484"/>
				<updated>2014-08-29T09:37:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En este artículo se presenta el enunciado y posterior metodología para la resolución de un problema de optimización.&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all % antes de comenzar&lt;br /&gt;
t0=0; tN=4; % el intervalo de tiempo es de 0s a 4s&lt;br /&gt;
N=40; h=(tN-t0)/N; %40 intervalos con paso h&lt;br /&gt;
y0=1/10; % valor inicial&lt;br /&gt;
yy=y0;&lt;br /&gt;
y(1)=yy  % inicio del bucle&lt;br /&gt;
for n=1:N    &lt;br /&gt;
yy= (1/h)*(0.5*h-1+sqrt((1-0.5*h)^2+4*(h/2)*(yy+0.5*h*yy*(1-yy))));    &lt;br /&gt;
y(n+1)=yy;&lt;br /&gt;
end&lt;br /&gt;
t=t0:h:tN;&lt;br /&gt;
plot(t,y,'x') % dibujo de la solución &lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14483</id>
		<title>Optimización de una placa plana</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Optimizaci%C3%B3n_de_una_placa_plana&amp;diff=14483"/>
				<updated>2014-08-29T09:28:49Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Página creada con «  == Enunciado y características del problema ==  Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior ...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Enunciado y características del problema ==&lt;br /&gt;
&lt;br /&gt;
Se define una placa metálica rectangular de pequeño espesor dispuesta en un plano vertical fijada en su borde inferior pudiendo deformarse libremente el resto de los puntos y sometida a cargas en su borde superior. El objeto del problema es optimizar la forma de un agujero con forma elíptica en el interior de la placa sometida a tensión plana de forma que manteniendo constante el área del agujero se alcancen las menores tensiones en la misma.&lt;br /&gt;
&lt;br /&gt;
Los parámetros respecto a los cuales se realiza la optimización son el desplazamiento horizontal del agujero respecto del centro de la placa, el desplazamiento vertical del agujero respecto del centro también y la excentricidad de la elipse. Para resolver el problema se diseña un programa en lenguaje Matlab que de forma automática a partir de la carga actuante en el borde superior y de una configuración inicial cualquiera itera para obtener los valores de los tres parámetros  que permiten obtener las tensiones mínimas. El cálculo de las tensiones existentes en la placa se realiza mediante el método de los elementos finitos empleando elementos triangulares CST. La tensión que se adopta como objetivo para minimizar es el máximo de las tensiones de Von Mises que se producen en toda la placa para la hipótesis de carga considerada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Casos ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Metodología  ==&lt;br /&gt;
&lt;br /&gt;
Se describe a continuación un resumen del proceso seguido para llegar a la resolución final del problema mediante la programación en lenguaje Matlab así como los distintos programas utilizados previamente para intentar calcular la solución.&lt;br /&gt;
&lt;br /&gt;
Inicialmente se intentó resolver el problema mediante el empleo de software libre, para ello se comenzó a plantear el problema con MAT-fem. Este programa se basa en el empleo del programa GID para realizar el preprocesado (mallado, cargas, características de los elementos) y postprocesado (representación de deformaciones, tensiones, desplazamientos) del modelo, resolviendo el sistema lineal de ecuaciones del modelo con Octave. Independientemente de las ventajas de este programa, la optimización por medio de un programa que de forma automática iterase para obtener la solución óptima requiere poder programar con comandos todas y cada uno de los pasos del proceso, lo cual parecía complicado en este caso al requerir guardar los datos del mallado en un archivo en un formato determinado para después poder resolverlo en Octave. Una gran dificultad radicaba en poder ejecutar todos los procesos en el programa GID mediante comandos para poder automatizar todo el programa.&lt;br /&gt;
&lt;br /&gt;
Posteriormente se planteó el problema en el software libre FreeFem++, que es un software orientado a la resolución de ecuaciones diferenciales. La definición de las características del problema, como con GID, era sencillo; sin embargo el principal problema que se encontró en FreeFem++   es que era difícil exportar los resultados para su tratamiento posterior una vez resuelto el problema (obtención de deformaciones, tensiones a partir de desplazamientos y representación de los mismos de forma gráfica). El lenguaje del programa es C++ aunque la ejecución de comandos no funcionaba adecuadamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all % antes de comenzar&lt;br /&gt;
t0=0; tN=4; % el intervalo de tiempo es de 0s a 4s&lt;br /&gt;
N=40; h=(tN-t0)/N; %40 intervalos con paso h&lt;br /&gt;
y0=1/10; % valor inicial&lt;br /&gt;
yy=y0;&lt;br /&gt;
y(1)=yy  % inicio del bucle&lt;br /&gt;
for n=1:N    &lt;br /&gt;
yy= (1/h)*(0.5*h-1+sqrt((1-0.5*h)^2+4*(h/2)*(yy+0.5*h*yy*(1-yy))));    &lt;br /&gt;
y(n+1)=yy;&lt;br /&gt;
end&lt;br /&gt;
t=t0:h:tN;&lt;br /&gt;
plot(t,y,'x') % dibujo de la solución &lt;br /&gt;
}}&lt;br /&gt;
--[[Usuario:Gonzalo|Gonzalo]] ([[Usuario discusión:Gonzalo|discusión]]) 11:28 29 ago 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Ingeniería Civil y Territorial]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8387</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8387"/>
				<updated>2014-02-03T19:25:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
[[Archivo:Red de metro.jpg|600 px|derecha]]&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|thumb|centro]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8386</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8386"/>
				<updated>2014-02-03T19:24:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
[[Archivo:Red de metro.jpg|800 px|derecha]]&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|thumb|centro]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8385</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8385"/>
				<updated>2014-02-03T19:24:26Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Red de metro.jpg|800 px|derecha]]&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|thumb|centro]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8384</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8384"/>
				<updated>2014-02-03T19:23:03Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Conclusiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|thumb|centro]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8383</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8383"/>
				<updated>2014-02-03T19:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Conclusiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|thumb|derecha]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8382</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8382"/>
				<updated>2014-02-03T19:21:33Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Conclusiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|thumb|izquierda]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8381</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8381"/>
				<updated>2014-02-03T19:20:31Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Conclusiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Resultado Final.jpg|800 px|izquierda]]&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8380</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8380"/>
				<updated>2014-02-03T19:17:37Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Anejos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 0 a 34.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de 35 a 54.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion de mas de 54 alos.jpg|800 px|izquierda]]&lt;br /&gt;
[[Archivo:Poblacion reclas.jpg|800 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8379</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8379"/>
				<updated>2014-02-03T19:14:43Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Anejos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|600 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8378</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8378"/>
				<updated>2014-02-03T19:13:49Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: /* Anejos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|450 px|izquierda]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8377</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8377"/>
				<updated>2014-02-03T19:12:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta reclasificado.jpg|centro]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8376</id>
		<title>Disposición y trazado de un túnel de Metro en Madrid</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Disposici%C3%B3n_y_trazado_de_un_t%C3%BAnel_de_Metro_en_Madrid&amp;diff=8376"/>
				<updated>2014-02-03T19:10:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoSIG | Disposición y trazado de un túnel de Metro en Madrid | Isabel Lorenzo Pérez, Gonzalo Navarro Muñoz-Delgado | [[:Categoría:Trabajos 2013-14|2013-14]] }}&lt;br /&gt;
&lt;br /&gt;
El objeto del trabajo es estudiar una serie de barrios seleccionados en base a unos criterios y ver cuál (cuáles) de ellos tiene más usuarios potenciales de Metro, para elegir un nuevo trazado de un túnel que mejore las comunicaciones periféricas de la ciudad de Madrid vía red de Metro. El proceso seguido ha consistido en tomar los datos de nivel de renta, población por edades y población total (atributos elegidos para el estudio) de las estadísticas de la Comunidad de Madrid e incorporarlos a la tabla de atributos de nuestros barrios. De esa manera, establecimos una clasificación por puntos (hasta 100) que distinguiese unos barrios de otros en cuanto a usuarios potenciales de Metro (por ejemplo, aquellos barrios con un nivel de renta más bajo, serán mayores candidatos a que más gente viaje en transporte público, y teniendo Metro, en Metro). Así, trabajando con Grass, obtenemos qué barrio tiene más puntos una vez sumados todos los atributos. Los resultados obtenidos, además de los mapas temáticos intermedios que indican la clasificación por puntos según cada característica, son los puntos finales para cada barrio. Y de ello se deduce que los barrios más óptimos según los criterios utilizados para ser unidos son El Casco hist. De Vallecas y el de Vicálvaro. Las futuras mejoras que se recomiendan son introducir nuevos criterios, estudiar más zonas (y distintas uniones) y mejorar los datos de trabajo, como por ejemplo el nivel de renta.&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
La red de Metro de Madrid se caracteriza por ser eminentemente radial, conectando el centro de la ciudad con núcleos periféricos. En una segunda fase se amplía la red mejorando la cobertura entre los dichos núcleos periféricos. Por tanto, nuestro objetivo es mejorar la comunicación periférica en el municipio de Madrid, vía transporte público (Metro). Para lograrlo, en el trabajo vamos a tratar de determinar qué núcleos urbanos periféricos reúnen más características favorables a la hora de unirlos entre sí y serían por tanto los primeros en conectarse.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
&lt;br /&gt;
En primer lugar hemos seleccionado 10 barrios de Madrid dispuestos en un arco que discurre desde el NO hasta el SE, por el norte de la ciudad. Estos barrios, los distritos a los que pertenecen entre paréntesis y las líneas de Metro que unirían son:&lt;br /&gt;
&lt;br /&gt;
De la página web “Nomecalles” hemos obtenido varias capas vectoriales: los barrios de Madrid digitalizados y las líneas y bocas de Metro. Para trabajar solo con los barrios seleccionados, creamos una nueva capa que contenga únicamente esos barrios (en verde en la imagen). La tabla de atributos de esa capa es la que modificaremos asociando a cada polígono (barrio) una serie de atributos que nos permitirá decantarnos por la unión más óptima desde el punto de vista de la sociedad.&lt;br /&gt;
&lt;br /&gt;
Estos atributos son: el nivel de renta, la población y la distribución por edades de dicha población. Queremos ver en qué barrios hay más usuarios potenciales de Metro en base a estos criterios, para así determinar la unión de barrios más provechosa. Para ello, establecemos un sistema de puntos sobre 100, donde el que tenga más usuarios potenciales, obtendrá un mayor número de puntos. Dentro de ello, a lo que más importancia le damos es a la población (cuanta más población, más gente usará el Metro) y por ello le damos un máximo de 40 puntos. Los otros dos atributos tendrán cada uno 30 puntos a repartir.&lt;br /&gt;
Pasamos a definir cada uno de los atributos y cómo hemos realizado el proceso.&lt;br /&gt;
&lt;br /&gt;
El nivel de renta lo hemos obtenido de la contabilidad municipal de la Ciudad de Madrid. Puesto que los datos de la renta son de cada distrito, hemos asociado a cada barrio el nivel de renta de su distrito (por lo que habrá barrios con el mismo dato de nivel de renta). Los 30 puntos los repartimos entre 4 escalones iguales de nivel de renta a los que asociamos distintos puntos (más adelante está detallado al exponer las reglas de reclasificación). Los que tengan un menor nivel de renta, tendrán más puntos pues son más susceptibles de usar tte. público. &lt;br /&gt;
&lt;br /&gt;
Para hacer la clasificación por edades de la población, nos hemos basado en el documento encontrado en internet “Metro de Madrid, 90 años al servicio del ciudadano”, donde aparece la siguiente gráfica:&lt;br /&gt;
&lt;br /&gt;
, hemos definido tres intervalos: entre 0 y 34 años (53%), de 34 a 54 (35%) y más de 54 años (12%). En base a ello repartiremos los puntos. Los datos de población, en el banco de datos de munimadrid, aparecen por franjas de edad que hemos tenido que sumar para determinar nuestros intervalos. &lt;br /&gt;
&lt;br /&gt;
Por último, la población total será la suma de las tres franjas de edad. También hemos dividido la población total en cuatro escalones iguales.&lt;br /&gt;
&lt;br /&gt;
La tabla de atributos queda:&lt;br /&gt;
&lt;br /&gt;
A continuación ya podemos empezar a realizar operaciones. Decidimos trabajar con Grass, para lo cual exportamos la capa de barrios seleccionados a Grass para a continuación rasterizarla en función de los distintos atributos. Estas capas ráster las reclasificamos con las siguientes reglas de reclasificación para asignar las distintas puntuaciones según hemos detallado anteriormente.&lt;br /&gt;
&lt;br /&gt;
Así, obtenemos los diferentes mapas temáticos con las puntuaciones para cada uno de los atributos (ver anejo).&lt;br /&gt;
Una vez que tenemos los cinco mapas (nivel de renta, población total y tres de edades), procedemos a sumarlos con la opción calc de Grass, y obtenemos el resultado final, es decir, las puntuaciones totales finales de cada uno de los barrios, que nos permite tomar una decisión.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
&lt;br /&gt;
Observando el temático que proporciona el resultado final, los dos barrios que son más adecuados, según los criterios seleccionados, para crear un nuevo túnel de Metro que los una, son el Casco histórico de Vallecas y el Casco histórico de Vicálvaro. La unión del Barrio del Pilar y Valverde sería la segunda opción. El resto de barrios han quedado con una menor puntuación.&lt;br /&gt;
Como nota, y para concluir el trabajo, tomando como criterio que cualquier persona tenga una boca de Metro a menos de 500 m (objetivo del Consorcio de Transportes), hacemos un buffer de 500 m a las bocas de Metro y vemos que sería conveniente construir otra boca en ese trazado.&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
&lt;br /&gt;
Como se ha indicado antes, los dos barrios óptimos para su conexión son el Casco histórico de Vallecas y el casco histórico de Vicálvaro.&lt;br /&gt;
 &lt;br /&gt;
A continuación proponemos una serie de mejoras que podrían completar el trabajo en el futuro. Por un lado, nosotros hemos hecho una selección de barrios al elegir las zonas por las que más creíamos conveniente unir las distintas líneas. Se podría completar con el análisis de otros barrios e incluir más zonas no escogidas en este trabajo.&lt;br /&gt;
&lt;br /&gt;
Un elemento importante son los datos con los que hemos trabajado. Por un lado, el nivel de renta no lo hemos obtenido por barrios sino por distritos, por lo que hay menos exactitud. La población sí que está actualizada (año 2013), así que si se mejora este trabajo en el futuro, simplemente habrá que tener en cuenta si la población en cada barrio ha cambiado mucho, cosa que dudamos.&lt;br /&gt;
&lt;br /&gt;
Por último, se pueden introducir otros criterios y atributos además de los que hemos considerado nosotros: incluir tiempos de ruta, personas a las que beneficia el nuevo trazado además de a los habitantes de los barrios, es decir, personas cuyo origen y destino está en la periferia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anejos ==&lt;br /&gt;
&lt;br /&gt;
Se presentan a continuación los mapas temáticos realizados sobres las reclasificaciones de los barrios en base a los distintos atributos así como el resultado final, suma de los anteriores, junto con la solución adoptada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Nivel de renta|centro]]&lt;br /&gt;
[[Categoría:Trabajos 2013-14]]&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Red_de_metro.jpg&amp;diff=8375</id>
		<title>Archivo:Red de metro.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Red_de_metro.jpg&amp;diff=8375"/>
				<updated>2014-02-03T19:06:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Resultado_Final.jpg&amp;diff=8374</id>
		<title>Archivo:Resultado Final.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Resultado_Final.jpg&amp;diff=8374"/>
				<updated>2014-02-03T19:06:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Resultado final y solución adoptada.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resultado final y solución adoptada.&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_reclas.jpg&amp;diff=8373</id>
		<title>Archivo:Poblacion reclas.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_reclas.jpg&amp;diff=8373"/>
				<updated>2014-02-03T19:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Mapa de puntos asignados a cada barrio según el número de personas en cada barrio.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mapa de puntos asignados a cada barrio según el número de personas en cada barrio.&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_de_mas_de_54_alos.jpg&amp;diff=8372</id>
		<title>Archivo:Poblacion de mas de 54 alos.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_de_mas_de_54_alos.jpg&amp;diff=8372"/>
				<updated>2014-02-03T19:02:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Mapa de puntos asignados a cada barrio según el número de personas con edad superior a los 54 años.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mapa de puntos asignados a cada barrio según el número de personas con edad superior a los 54 años.&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_de_35_a_54.jpg&amp;diff=8371</id>
		<title>Archivo:Poblacion de 35 a 54.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_de_35_a_54.jpg&amp;diff=8371"/>
				<updated>2014-02-03T19:02:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Mapa de puntos asignados a cada barrio según el número de personas con edad comprendida entre 35 y 54 años&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mapa de puntos asignados a cada barrio según el número de personas con edad comprendida entre 35 y 54 años&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_de_0_a_34.jpg&amp;diff=8370</id>
		<title>Archivo:Poblacion de 0 a 34.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Poblacion_de_0_a_34.jpg&amp;diff=8370"/>
				<updated>2014-02-03T19:01:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Mapa de puntos asignados a cada barrio según el número de personas con edad comprendida entre 0 y 34 años&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mapa de puntos asignados a cada barrio según el número de personas con edad comprendida entre 0 y 34 años&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Nivel_de_renta_reclasificado.jpg&amp;diff=8369</id>
		<title>Archivo:Nivel de renta reclasificado.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Nivel_de_renta_reclasificado.jpg&amp;diff=8369"/>
				<updated>2014-02-03T18:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;Gonzalo: Mapa de puntos asignados a cada barrio según el nivel de renta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mapa de puntos asignados a cada barrio según el nivel de renta&lt;/div&gt;</summary>
		<author><name>Gonzalo</name></author>	</entry>

	</feed>