UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL DESARROLLO Y PROGRAMACIÓN DE ALGORITMOS DE BÚSQUEDA DEL EQUILIBRIO EN JUEGOS DE COMPETICIÓN POLÍTICA Autora: Marina del Pino Hidalgo Pardo Directores: Javier Rodrigo Hitos Sagrario Lantarón Sánchez AUTORIZACIÓN PARA LA DIGITALIZACIÓN, DEPÓSITO Y DIVULGACIÓN EN ACCESO ABIERTO ( RESTRINGIDO) DE DOCUMENTACIÓN 1º. Declaración de la autoría y acreditación de la misma. El autor Dña. MARINA DEL PINO HIDALGO PARDO , como alumna de la UNIVERSIDAD PONTIFICIA COMILLAS (COMILLAS), DECLARA que es el titular de los derechos de propiedad intelectual, objeto de la presente cesión, en relación con la obra -Proyecto Fin de Carrera-DESARROLLO Y PROGRAMACIÓN DE ALGORITMOS DE BÚSQUEDA DEL EQUILIBRIO EN JUEGOS DE COMPETICIÓN POLÍTICA, que ésta es una obra original, y que ostenta la condición de autor en el sentido que otorga la Ley de Propiedad Intelectual como titular único o cotitular de la obra. En caso de ser cotitular, el autor (firmante) declara asimismo que cuenta con el consentimiento de los restantes titulares para hacer la presente cesión. En caso de previa cesión a terceros de derechos de explotación de la obra, el autor declara que tiene la oportuna autorización de dichos titulares de derechos a los fines de esta cesión o bien que retiene la facultad de ceder estos derechos en la forma prevista en la presente cesión y así lo acredita. 2º. Objeto y fines de la cesión. Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad y hacer posible su utilización de forma libre y gratuita ( con las limitaciones que más adelante se detallan) por todos los usuarios del repositorio y del portal e-ciencia, el autor CEDE a la Universidad Pontificia Comillas de forma gratuita y no exclusiva, por el máximo plazo legal y con ámbito universal, los derechos de digitalización, de archivo, de reproducción, de distribución, de comunicación pública, incluido el derecho de puesta a disposición electrónica, tal y como se describen en la Ley de Propiedad Intelectual. El derecho de transformación se cede a los únicos efectos de lo dispuesto en la letra (a) del apartado siguiente. 3º. Condiciones de la cesión. Sin perjuicio de la titularidad de la obra, que sigue correspondiendo a su autor, la cesión de derechos contemplada en esta licencia, el repositorio institucional podrá: (a) Transformarla para adaptarla a cualquier tecnolo gía susceptible de incorporarla a internet; realizar adaptaciones para hacer posible la utilización de la obra en formatos electrónicos, así como incorporar metadatos para realizar el registro de la obra e incorporar “marcas de agua” o cualquier otro sistema de seguridad o de protección. 1 (b) Reproducirla en un soporte digital para su incorporación a una base de datos electrónica, incluyendo el derecho de reproducir y almacenar la obra en servidores , a los efectos de garantizar su seguridad, conservación y preservar el formato. . (c) Comunicarla y ponerla a disposición del público a través de un archivo abierto institucional, accesible de modo libre y gratuito a través de internet. 1 (d) Distribuir copias electrónicas de la obra a los usuarios en un soporte digital. 2 4º. Derechos del autor. El autor, en tanto que titular de una obra que cede con carácter no exclusivo a la Universidad por medio de su registro en el Repositorio Institucional tiene derecho a: a) A que la Universidad identifique claramente su nombre como el autor o propietario de los derechos del documento. b) Comunicar y dar publicidad a la obra en la versión que ceda y en otras posteriores a través de cualquier medio. c) Solicitar la retirada de la obra del repositorio por causa justificada. A tal fin deberá ponerse en contacto con el vicerrector/a de investigación ([email protected]). d) Autorizar expresamente a COMILLAS para, en su caso, realizar los trámites necesarios para la obtención del ISBN. d) Recibir notificación fehaciente de cualquier reclamación que puedan formular terceras personas en relación con la obra y, en particular, de reclamaciones relativas a los derechos de propiedad intelectual sobre ella. 5º. Deberes del autor. 1 En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría redactado en los siguientes términos: (c) Comunicarla y ponerla a disposición del público a través de un archivo institucional, accesible de modo restringido, en los términos previstos en el Reglamento del Repositorio Institucional 2 En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría eliminado. 2 El autor se compromete a: a) Garantizar que el compromiso que adquiere mediante el presente escrito no infringe ningún derecho de terceros, ya sean de propiedad industrial, intelectual o cualquier otro. b) Garantizar que el contenido de las obras no atenta contra los derechos al honor, a la intimidad y a la imagen de terceros. c) Asumir toda reclamación o responsabilidad, incluyendo las indemnizaciones por daños, que pudieran ejercitarse contra la Universidad por terceros que vieran infringidos sus derechos e intereses a causa de la cesión. d) Asumir la responsabilidad en el caso de que las instituciones fuera n condenadas por infracción de derechos derivada de las obras objeto de la cesión. 6º. Fines y funcionamiento del Repositorio Institucional. La obra se pondrá a disposición de los usuarios para que hagan de ella un uso justo y respetuoso con los derechos del autor, según lo permitido por la legislación aplicable, y con fines de estudio, investigación, o cualquier otro fin lícito. Con dicha finalidad, la Universidad asume los siguientes deberes y se reserva las siguientes facultades: a) Deberes del repositorio Institucional: - La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no garantiza ni asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior de las obras no conforme con la legislación vigente. El uso posterior, más allá de la copia privada, requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio comercial, y que no se realicen obras derivadas. - La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la responsabilidad exclusiva del autor y no estará obligada a ejercitar acciones legales en nombre del autor en el supuesto de infracciones a derechos de propiedad intelectual derivados del depósito y archivo de las obras. El autor renuncia a cualquier reclamación frente a la Universidad por las formas no ajustadas a la legislación vigente en que los usuarios hagan uso de las obras. - La Universidad adoptará las medidas necesarias para la preservación de la obra en un futuro. b) Derechos que se reserva el Repositorio institucional respecto de las obras en él registradas: - retirar la obra, previa notificación al autor, en supuestos suficientemente justificados, o en caso de reclamaciones de terceros. 3 Madrid, a 26 de Junio de 2013 ACEPTA Fdo…………………………………………………………… 4 Autorizada la entrega del proyecto al alumno: Marina del Pino Hidalgo Pardo EL DIRECTOR DEL PROYECTO Javier Rodrigo Hitos Sagrario Lantarón Sánchez Fdo: Fecha: Vº Bº del Coordinador de Proyectos Pedro Sánchez Fdo: Fecha: UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Resumen Resumen En este proyecto se lleva a cabo el desarrollo y la programación de algoritmos siguiendo distintas técnicas de Geometría Computacional para analizar diversos problemas. En este caso, se estudia un modelo político para analizar sus posiciones de equilibrio de Nash, concepto que se estudia dentro de la Teoría de Juegos. De este modo, se consigue aunar en un mismo desarrollo tanto técnicas de la Geometría Computacional como de la Teoría de Juegos en un campo tan de actualidad como es la política. La Geometría Computacional se puede usar en distintas áreas, ya que tiene múltiples aplicaciones. Una de ellas es la ubicación de servicios, ya que es muy útil para saber qué sitios son los óptimos para determinados servicios en una determinada población para poder satisfacer a todos los habitantes de la misma. Por otro lado, la Teoría de Juegos es una rama de la Matemática Aplicada que fue desarrollada en sus inicios como una herramienta para actividades de índole económica. Con esta teoría es posible estudiar las estrategias a seguir por dos o más competidores para maximizar su ganancia. A pesar de que se originó para analizar modelos económicos, actualmente se usa en otras disciplinas. Este proyecto propone la aplicación de técnicas de la Geometría Computacional para estudiar las posiciones óptimas de dos partidos políticos. Estas posiciones son desde las cuales un partido puede obtener el mayor número de votos posible. Así mismo, estas técnicas se aplican para la búsqueda del equilibrio y de soluciones a un problema de competición entre dos partidos. En el problema básico que se considerad se supone que hay dos partidos políticos que compiten por un número n de votantes en el plano, estableciéndose la afinidad entre ellos por medio de la distancia euclídea. Los resultados que son obtenidos en este modelo son similares a los que se obtienen con los modelos clásicos con respecto a las i UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Resumen posiciones de equilibrio y a su existencia. Si el equilibrio existe es único y teniendo en cuenta la misma política por parte de los dos partidos. Pero lo que ocurre en la realidad difiere ligeramente con el equilibrio teórico. A pesar de que los principales partidos suelen presentar políticas similares en muchas ramas, lo que se pretende es encontrar una representatividad entre dos ideologías que nunca van a coincidir del todo. Usando las encuestas de opinión es posible conocer las opiniones de los posibles votantes acerca de diversos temas sobre su opción de voto, permitiendo así una mayor flexibilidad de las políticas presentadas por los partidos para adaptarse a las preferencias de los votantes. De esta forma, un determinado partido puede cambiar algunas partes de su programa electoral, siempre teniendo en mente algunas restricciones, con el claro objetivo de obtener un mayor número de votantes que sus contrincantes y así poder ganar las elecciones. En el proyecto esto se ve reflejado a través de un medio circular en el que cada partido puede elegir sus políticas. El proyecto presenta un algoritmo que encuentra las posiciones de equilibrio de Nash bajo este modelo. Este algoritmo será implementado para un caso de competición política en España. ii UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Resumen Summary In this project it is carried out the development and the programming of algorithms following different techniques of Computational Geometry to analyze diverse problems. In this case, the political model is studied to analyze its positions of Nash equilibrium using different theories, among them the Theory of Games. In this way, it is possible to combine in a same development Computational Geometry techniques and techniques from the Theory of Games in an actual field as it is politics. Computational Geometry can be used in different areas, since it has several applications. One of them is the location of services, since it is very useful to know which locations are the optimal ones for certain services in a certain area to be able to satisfy the population in the area. On the other hand, the Theory of Games is a branch of Applied Mathematics, that was developed in its beginnings as a tool for activities of economic nature. Using this theory it is possible to study the strategies to follow by two or more competitors in order to maximize its gain. Although it was originated to analyze economic models, at present it is used in other disciplines. This project proposes the application of techniques of Computational Geometry to study the optimal positions of two political parties. These positions are the ones from which a party can obtain the greater possible number of votes. Also, they can be applied for the search of the equilibrium and solutions to problems between two parties. The basic problem is considered having two political parties and a number n of voters in the plane, always using the Euclidean distance as a measure of affinity between parties and voters. The results that are obtained in this model are similar to which is obtained with the classic models with respect to the positions of equilibrium and to its existence. If the equilibrium exists, it is unique and considering the same policy for the two parties. iii UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Resumen But what it happens in reality it differs slightly with the theoretical equilibrium. Although the main parties usually present similar policies in many branches, the aim is to find a representation between two ideologies that are not equivalent at all. Using the opinion surveys it is possible to know the opinions that the possible voters have about diverse subjects, allowing therefore a greater flexibility of the policies presented by the parties to adapt themselves to the voters’ preferences. Thus, a particular party can change parts of its electoral program keeping in mind some restrictions, with the clear objective of obtaining a greater number of voters that their opponents so they can win elections. In the project this is reflected through disjoint circles in which the parties can choose their policies. This allows for equilibrium positions in which the two parties don’t share policies. In this project an algorithm to find equilibrium positions for the parties under the considered model is developed. This algorithm is implemented for a case of political competition in Spain. iv AGRADECIMIENTOS En primer lugar me gustaría agradecer a mis directores de proyecto, Javier Rodrigo Hitos y Sagrario Lantarón Sánchez, la confianza que han depositado en mí y a su inestimable ayuda para poder llevar a cabo este proyecto. También agradecer a mis padres su apoyo durante este tiempo, ellos han sido un pilar muy importante durante esta etapa que ahora llega a su fin. Por último también agradecer a los compañeros de clase, el estar siempre ahí, haciendo que estos años hayan pasado de la mejor forma posible. “Criticism may not be agreeable, but it is necessary. It fulfills the same function as pain in the human body. It calls attention to an unhealthy state of things.” Winston Churchill UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL ÍNDICE Capítulo 1 Introducción ....................................................................................... 2 1.1 Introducción .......................................................................................................2 1.2 Estado del arte....................................................................................................6 1.3 Objetivos .............................................................................................................9 1.4 Metodología ........................................................................................................9 1.5 Estructura del proyecto ...................................................................................17 Capítulo 2 Descripción del modelo de competición política...................... 19 2.1 Condiciones del modelo ...................................................................................19 2.2 Estudio teórico del equilibrio de Nash ...........................................................22 Capítulo 3 Algoritmo de búsqueda de posiciones de equilibrio ................ 24 3.1 Desarrollo del algoritmo..................................................................................24 3.2 Implementación del algoritmo ........................................................................28 Capítulo 4 Aplicación del algoritmo a la competición política ................. 29 4.1 Ejemplos para la validación del modelo ........................................................29 4.2 Un ejemplo de aplicación a la política nacional ............................................41 Capítulo 5 Conclusiones ................................................................................ 51 Capítulo 6 Referencias................................................................................... 55 6.1 Anexo ................................................................................................................57 UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Capítulo 1 Introducción 1.1 INTRODUCCIÓN Desde el origen de la política, siempre se ha buscado por parte de los partidos políticos obtener un mayor número de votantes, para poder así ganar las elecciones. En muchos de los trabajos en los que se estudian tanto la competición política como las elecciones, este estudio se basa en la Teoría Espacial del Voto, desarrollada en un principio por Black (1958) y por Downs (1957) y que fue mejorada en versiones posteriores , entre otros, por Hinich y Pollard (1981), Shepsle y Winstag (1981), Enelow y Hinich (1982), Hinich y Munger (1994). Así mismo, hay disponible una vasta literatura, en la que se comprueban estos métodos teóricos. En este trabajo no se va a usar la aproximación estadística usual, sino que se usarán técnicas de Geometría Computacional para desarrollar algoritmos que ayuden a los partidos a encontrar posiciones óptimas: que capten el mayor número posible de votantes, analizándose además posiciones de estabilidad cuando los partidos compiten entre ellos. En general, el uso de diversas técnicas de matemáticas aplicadas a la política es una herramienta muy importante para el desarrollo de la competición política. Llevado al lenguaje matemático, los votantes son considerados como una nube de puntos del plano, lo que quiere decir que el eje central de las preferencias de los votantes son dos aspectos que serán medidos con sendos parámetros, y lo que se quiere conseguir y se busca son los puntos óptimos del plano que nos faciliten la posición en la que los partidos políticos se situarían. Un partido puede obtener el voto de un ciudadano, si su posición está a una distancia a él más pequeña que la ~2~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción del otro partido. Lo que se obtiene en el caso bipartidista, es una división del plano en dos regiones correspondientes a los dos puntos elegidos por los partidos, en la que la condición que impera es que la zona que le corresponde a cada uno de ellos tenga los puntos del plano que están más próximos al mismo. Para determinar estas regiones de influencia de los partidos, se tiene la estructura de los diagramas de Voronoi englobada dentro de la Geometría Computacional (de Berg (1997)), pero al ser el número de votantes finito y el número de regiones limitado a dos, estamos en el caso discreto más simple. Para plantear la parte económica, por un lado se utilizará para medir las preferencias de los votantes las funciones de utilidad y por otro lado se hará el estudio de las posiciones de estabilidad de los partidos, en las que si alguno de ellos se mueve de su posición no consigue más votos, que es la base del equilibrio de Nash. Todo esto implica un análisis exhaustivo de la situación actual, para poder realizar la planificación estratégica de los cambios y procesos políticos, obtener una definición clara de quiénes son los partidarios y los adversarios, realizar un análisis pormenorizado de las relaciones de poder, tener una idea clara de lo que se quiere alcanzar y para lograr el objetivo pretendido agrupar todas las fuerzas posibles. Hoy en día, existe una gran diversidad de trabajos estadísticos que procuran estudiar las intenciones de voto de la población. En estos trabajos es frecuente el uso de encuestas de opinión, las cuales suelen recolectar información sobre distintos temas como pueden ser el fraude fiscal, los servicios que percibe la sociedad a cambio de los impuestos que esta paga, la popularidad de los políticos, etc. De todas formas, a pesar de estas encuestas, no son muchas las que son de carácter cuantitativo. Esto puede deberse a la desinformación en la que muchos de los ciudadanos viven, a la cual los partidos políticos participan revelando poca información sobre temas de valoración. Por todo ello, lo que se pretende mostrar en este proyecto, usando un ejemplo determinado, es la influencia que esa información tiene en la preparación y adopción de las distintas estrategias políticas de cara a las elecciones. De forma ~3~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción más concreta, uno de los objetivos es llegar a conocer si existen diferencias significativas entre las decisiones de voto y los resultados de las elecciones en los momentos en los que la ciudadanía tiene mayor acceso a información más relacionada con temas políticos y económicos. Un objetivo adicional de este proyecto es recalcar la importancia que tiene la comunicación entre políticos y ciudadanos, lo que permite que los programas electorales diseñados están más adaptados a un número máximo de votantes. Usando distintas herramientas, como las encuestas de opinión, se pueden detectar de una forma más acertada cuáles son los problemas y cuestiones que más preocupan a la población. Con estos resultados, los partidos políticos pueden rediseñar hasta cierto punto su programa electoral, cambiando sus políticas y así pudiendo mejorar los resultados en las elecciones. En anteriores épocas, el problema del terrorismo era una de las mayores preocupaciones para los ciudadanos españoles, por lo que la forma de responder de los partidos ante esa amenaza podía ser decisiva a la hora de obtener votos. Actualmente, las mayores preocupaciones de los españoles son el paro, las drogas y la inseguridad ciudadana, ente otros. El problema del terrorismo ha quedado relegado a un cuarto lugar, por lo que los partidos que tengan una mayor flexibilidad a la hora de cambiar su estrategia política de frente a unas futuras elecciones, para centrarse más en la eliminación del paro y no tanto en el problema del terrorismo, será el que obtenga un mayor número de votos. En el campo de la política, cuando se habla de acción estratégica, lo que sigue prevaleciendo a lo largo de los años, es la acción a corto plazo y con un comportamiento táctico. Para poder obtener éxito a lo largo del tiempo y a largo plazo, es necesario que se tenga una planificación de las estrategias que se van a utilizar o que van a ser necesarias para un futuro en la realización y ejecución de campañas electorales. Así, los distintos partidos políticos pueden variar sus propuestas, siempre dentro de unos límites, atendiendo a lo que hagan sus adversarios políticos. Estas propuestas serán más o menos relevantes dependiendo del interés que los ciudadanos tengan en ellas, pero esto es difícil de medir porque ~4~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción puede ser considerado como una componente subjetiva que, a través de las encuestas de opinión, puede ser consultada. En los procesos de toma de decisiones, dependiendo de los valores numéricos introducidos el modelo matemático se verá afectado. Se tiene que tener en cuenta que siempre la validez de los resultados podrá depender de la asignación numérica de parámetros que son desconocidos y que sólo se pueden estimar o conjeturar. De todas formas, el modelo siempre ha de tener en cuenta estos factores y poder ofrecer alternativas fiables que podrían ser usadas por los partidos políticos. En los problemas de competición política de lo que se trata es de poder predecir el futuro que siempre dependerá de las acciones de unos agentes, los partidos políticos, los ciudadanos, ..., que actúan en el presente. Esto es un mecanismo de retroalimentación que es importante tenerlo muy presente en el momento en el que se vaya a aplicar cualquier modelo. El principal atributo de la estrategia en la competición política es poder prever el futuro y eso dependerá de unas previsiones que podrán ser irracionales y en cualquier momento pueden cambiar, variando el resultado. De esta forma, cada vez que se aplique un modelo se ha de hacer una revisión siempre que el proceso así lo pida. En este proyecto se trata el diseño de las distintas estrategias políticas óptimas de los partidos para adaptarse a los cambios en los que resulta necesario e importante poder flexibilizar las exigencias. En el proyecto se ha teniendo en cuenta el caso particular de España, asumiendo un modelo simplificado bipartidista, por lo que se considerado a los dos principales partidos políticos, ya que son los que captan la mayoría decisiva de los votos. Así mismo, se ha considerado un modelo ideológico bidimensional, en el que los partidos elegirán las políticas referente a dos temas. El estudio estará basado en la geometría computacional y la teoría de juegos que pueden permitir saber en qué direcciones un partido político ha de llevar la campaña y sus políticas, para así poder ganar más votantes respecto al otro partido político. ~5~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Debido a que los partidos políticos gastan bastante en la preparación y desarrollo de las campañas electorales, en las cuales concentran sus esfuerzos para atraer a más votantes, todo estudio que ayude a los partidos a adoptar las mejores políticas con respecto a las preferencias de los votantes, puede ser útil para economizar gastos y esfuerzos a dichos partidos. Es importante decir que las teorías desarrolladas en este proyecto, no solo sirven para el modelo político, sino que también sirven para otros ámbitos con distintas interpretaciones de los resultados, como puede ser el funcionamiento de una empresa o de ofertas comerciales de empresas de todo tipo de seguros. 1.2 ESTADO DEL ARTE La planificación de los cambios políticos implica un exhaustivo análisis de la situación actual, especificar claramente quiénes son los adversarios y partidarios, así como una idea de lo que se quiere alcanzar como objetivos. Actualmente en política, en todo lo que se refiere a organización estratégica, el comportamiento más extendido es táctico y a corto plazo. En la historia de la competición política, los modelos clásicos son los de Downs (Teoría de la elección racional) y Wittman (Teoría del desarrollo), los cuales parten de un continuo de ciudadanos, los cuales se supone que todos votan y los dos partidos tienen sus funciones de ganancias o pagos. El objetivo de este proceso es llegar a un equilibrio similar al concepto de equilibrio de Nash. Últimamente ha habido una evolución del modelo espacial político. Se pueden considerar las posiciones políticas de los partidos como puntos del espacio y se pueden describir distintas situaciones en cada dimensión espacial, considerando a los ciudadanos como un conjunto discreto. Existen tres componentes en los que se puede basar todo modelo espacial que estudia en profundidad el análisis de la política: ~6~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Elección del votante: este elegirá al partido que tenga una política más cercana a lo que el votante piensa que se debería hacer. La política de los partidos: estos conocen las preferencias de los ciudadanos y proponen políticas que les ayuden a captar un mayor número de votantes. Los resultados: en algunas ocasiones, los partidos suelen acercarse hacia el centro de la distribución de los votantes. Lo que se pretende es poder asignar una función de preferencia a cada posible votante con la idea de que describa sus opiniones sobre las distintas políticas. Teniendo las ideas de los votantes, se pueden analizar sus reacciones ante cada proposición de los partidos. El desarrollo de las bases de la competencia espacial fue realizado por Hotelling (1929) y Smithies (1941), los cuales utilizaron el espacio para así poder realizar una descripción de las distintas necesidades de las compañías de encontrarse cerca de los mercados y de entender las necesidades de los mismos. Este desarrollo fue adaptado a la política por Downs (1957) y Black (1958) quienes aportaron dos de las más importantes aportaciones de la teoría política. En la zona media de la distribución de los votantes es donde se halla el poder político. Es importante analizar la estabilidad de los distintos sistemas políticos. Teniendo en cuenta estas ideas, en este proyecto se pretende analizar los problemas de la competición política bajo un punto de vista de la geometría computacional. De forma general, este proyecto desarrolla resultados teóricos en un marco con un espacio bidimensional y simplemente con dos partidos. Este planteamiento no está muy alejado de lo que ocurre hoy en día en la mayoría de los países desarrollados, en los que a pesar de haber más de un partido siempre hay dos que son mayoritarios y entre los que está la división del poder. ~7~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Se ha intentado mantener conversaciones con las dos principales fuerzas políticas del país, para poder conocer los modelos que utilizan para prever la intención de voto y las preferencias de los ciudadanos por una política u otra, sin éxito alguno. Se ha optado entonces, para los ejemplos prácticos, por una simulación de las preferencias de los votantes atendiendo a los resultados de encuestas realizadas a los ciudadanos por el CIS sobre sus preferencias respecto a dos ítems, Educación y Sanidad. ~8~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción 1.3 OBJETIVOS Los objetivos que se pretenden llevar a cabo en este proyecto son muy diversos. Entre ellos, este el desarrollar un modelo para resolver los distintos problemas que pueden aparecer en la competición política mediante la aplicación de técnicas de la Geometría Computacional, explicadas en otros apartados de este proyecto. Así mismo, también se pretende averiguar cuáles son las diversas situaciones de equilibrio para el caso general y también para algunas variaciones que pueden ocurrir para el caso general. Finalmente se pretenderá realizar una simulación del problema planteado pero llevándolo a la competición política nacional con algunas restricciones. 1.4 METODOLOGÍA La metodología de trabajo consiste en el desarrollo e implementación de un modelo matemático, basado en la geometría computacional. Para el desarrollo de este tipo de modelos, es frecuente usar la estructura del Diagrama de Voronoi. Los diagramas de Voronoi son uno de los temas que más se han estudiado dentro de la Geometría Computacional. En el caso que nos ocupa, en el que se consideran sólo dos partidos, utilizaremos el diagrama de Voronoi más sencillo (ver sección 2). El desarrollo consistirá en un algoritmo que se programará en C bajo el entorno de Windows. Al ser C un lenguaje de programación poderoso, se permite la resolución de diversos problemas sin tener un tiempo de ejecución elevado. ~9~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción También se usarán diversas encuestas sobre intención de voto, para conocer las opiniones de los ciudadanos sobre algunos temas determinantes sobre su elección de voto, que pueden ser obtenidas a través del CIS (Centro de Investigaciones Sociológicas) y del INE (Instituto Nacional de Estadística) y que servirán para saber qué políticas pueden ser más flexibles y cuáles no. De esta forma, cada partido político podrá cambiar su programa electoral de acuerdo con los resultados obtenidos, para así ganar más votantes. La encuesta a considerar para este caso, como ejemplo típico de las encuestas que se pueden encontrar en la actualidad, es la encuesta número 2615 del CIS (http://www.cis.es). Para poder poner en práctica tanto el modelo como el algoritmo que se van a presentar en los siguientes capítulos, se utilizarán varios ejemplos, de los cuales dos de ellos serán más sencillos, simplemente para demostrar la validez del modelo y el algoritmo, y otro que representará un ejemplo de la política española. Para poder llevar a cabo este último ejemplo, se podrán extraer datos parcialmente de las encuestas del CIS. Con estos, se intentará realizar una búsqueda de la política óptima que cada partido ofrecerá en relación con dos temas específicos y también se podrá evaluar los beneficios de tener ese tipo de información disponible antes de las elecciones. Aunque el tipo de preguntas de las encuestas a usar es muy amplio, no presentan algunas preguntas que pueden ser claves para saber qué temas tienen una mayor importancia para los ciudadanos y que de forma adicional pueden añadir información cuantitativa sobre sus opiniones y los posibles efectos de sus decisiones de voto. A continuación se muestran algunas de las preguntas que podrían suplir estas lagunas: 1. Elija dos servicios que usted considere de alta prioridad de los siguientes que se listan: a. Educación ~ 10 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción b. Defensa c. Sanidad d. Justicia e. Vivienda f. Trabajo y Asuntos sociales g. Transporte y telecomunicaciones (Fomento) h. Agricultura, alimentación y medio ambiente 2. ¿Qué porcentajes de los Presupuestos Generales del Estado dedicaría usted a estos servicios, teniendo en cuenta lo dedicado por el Gobierno en el ejercicio anterior? 3. ¿Afectaría a su intención de voto si supiera por adelantado cuánto dinero van a dedicar los partidos políticos a cada uno de estos servicios? En caso positivo, ¿qué margen de diferencia a la cantidad que usted dedicaría permitiría al partido al que fuera a votar? Teniendo las respuestas a preguntas de este tipo, es posible establecer el plano de las políticas, escogiendo dos temas que gocen de gran interés para los ciudadanos y las preferencias de los votantes y las políticas a ofrecer por los partidos en los temas elegidos se posicionarán. Para obtener respuesta a las distintas preguntas teniendo en cuenta los datos obtenidos en la encuesta, se simularán usando métodos aleatorios cogiendo como datos de partida, los porcentajes de las respuestas a las siguientes preguntas del CIS: Pregunta número 8: Como UD. sabe, el Estado destina el dinero que los españoles pagamos en impuestos a financiar los servicios públicos y prestaciones de las que venimos hablando. Dígame, por favor, si cree que el estado dedica demasiados, los justos o demasiados pocos recursos a cada uno de los servicios que le voy a mencionar: ~ 11 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Demasiados Los Demasiados justos pocos Enseñanza Obras Públicas Protección al desempleo Defensa Seguridad ciudadana Sanidad Cultura Vivienda Justicia Seguridad Social/pensiones Transporte y comunicaciones Protección del medio ambiente ~ 12 ~ N.S. N.C. N UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Pregunta número 32: Cuando se habla de política se utilizan normalmente las expresiones izquierda y derecha. En esta tarjeta hay una serie de casillas que van de izquierda a derecha. ¿En qué casilla se colocaría Ud.? (PEDIR AL ENTREVISTADO QUE INDIQUE LA CASILLA EN LA QUE SE COLOCARÍA Y REDONDEAR EL NÚMERO CORRESPONDIENTE). % (N) Izquierda (1-2) (3-4) (5-6) (7-8) Derecha (9-10) N.S. N.C. TOTAL Pregunta 33: ¿Me podría decir a qué partido o coalición votó Ud. en las elecciones generales de marzo de 2004? % ~ 13 ~ (N) UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción % PSOE PP IU (ICV en Cataluña) CiU ERC PNV BNG CC EA CHA Na-Bai Otros partidos No tenía edad para votar En blanco No votó ~ 14 ~ (N) UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción % (N) No recuerda N.C. TOTAL Así, con las respuestas a la pregunta número 8 se pueden elegir los temas que van a definir el espacio de políticas, que serán en nuestro caso los porcentajes de los Presupuestos Generales del Estado invertidos en Educación y Sanidad. Teniendo como guía las respuestas a las preguntas número 8, 32 y 33, el método de generación de respuestas y la elección de la posición en la que estarán los votantes será: Las posiciones de los votantes cercanos a la inversión del Gobierno serán generados con el porcentaje de votantes cuya respuesta fue que están de acuerdo con la inversión del Gobierno en los temas elegidos. Las posiciones de los votantes superando la inversión del Gobierno serán generados con el porcentaje de votantes cuya respuesta fue que preferirían una mayor inversión del Gobierno en los temas elegidos. Las posiciones de los votantes por debajo de la inversión del Gobierno serán generados con el porcentaje de votantes cuya respuesta fue que preferirían una menor inversión del Gobierno en los temas elegidos. Con estos resultados, las políticas iniciales de los partidos son las siguientes: Para el Partido Popular (PP) la posición es q = (1.6, 8.9), representa la inversión media en Educación y Sanidad respecto al periodo de 8 años de ~ 15 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción gobierno (1996-2004). Siempre representado como un porcentaje dentro de los Presupuestos Generales del Estado. Para el Partido Socialista Obrero Español (PSOE), la posición es p = (0.6, 1.4), estas cantidades representan la inversión media realizada por este partido durante los dos primeros años de gobierno (2004-2006). Para obtener estas cantidades se acudió a los Presupuestos Generales del Estado (1997-2006), Capítulo 1 al Capítulo 8. Es necesario destacar que los dos partidos tuvieron que hacer frente a distintas circunstancias durante su mandato, lo que se tradujo en sus políticas. Es importante tener en cuenta que como la simulación está basada en una encuesta real, es posible elegir cualquier otro campo de acción, como Defensa, Justicia... El conocer el número de ciudadanos que han sido entrevistados y sus respuestas a las preguntas planteadas, permite simular el problema a un nivel nacional. El ejemplo planteado muestra que es necesario y relevante que los ciudadanos tengan alguna preparación para poder dar respuestas significativas a las preguntas planteadas en las encuestas. Es muy importante que los ciudadanos tengan información sobre los compromisos políticos que los partidos políticos realizan en asuntos presupuestarios y en otras áreas de interés. Estos elementos pueden jugar un rol importante en las decisiones de voto de los ciudadanos. Para poder usar los modelos y algoritmos desarrollados en este proyecto, se utilizarán las distintas encuestas anteriormente mencionadas, para poder predecir o estimar la intención del voto de los ciudadanos, lo que en este proyecto se traduce como el acercamiento de los distintos votantes existentes a las diversas posturas de los partidos sobre algunos temas. Lo que se pretende es poder encontrar datos significativos para la sociedad en momentos cercanos a elecciones, para así poder estudiarlos y estimar cuántos ~ 16 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción votantes estarían más cercanos a un partido político o a otro. Es necesario tener presente que estos datos son de carácter borroso y que por lo tanto no son fáciles de medir con exactitud. Siempre que se utilicen de forma correcta las técnicas apropiadas para la obtención de los estudios de opinión pública, incluyendo en ellos las encuestas de carácter político, estos serán válidos para el objetivo que se persigue en cada uno de ellos. De modo que cuanto más lejano es el día de realización de la encuesta del día de las elecciones, menor es su carácter predictivo. Desde el punto de vista técnico, el ordenador que se ha usado tiene las siguientes características: Sistema Operativo Windows 8- 64 bits Procesador Intel(R)Core(TM) i5-3210M CPU @ 2.50GHz Memoria RAM 6.00 GB 1.5 ESTRUCTURA DEL PROYECTO El objetivo de este proyecto es la resolución del problema de encontrar equilibrio en juegos de competición política, para que un partido político sepa qué flexibilidad puede llegar a alcanzar para poder obtener un mayor número de votos, teniendo en cuenta la posición del otro partido con el que compite. Este proyecto consta de seis capítulos: El Capítulo primero es la introducción al tema a tratar en este proyecto. En primer lugar se realiza una breve explicación de los objetivos del proyecto, detallando cuáles son los distintos problemas de la competición política. En segundo lugar se explica el estado del arte del proyecto, cuáles son las teorías que se usan actualmente y cuáles se han estado usando. En este punto se detalla con más precisión los modelos de Wittman y Downs, así como el concepto de equilibrio de ~ 17 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Capítulo 1 Introducción Nash de Teoría de Juegos. En tercer lugar se establecen los objetivos que se pretenden alcanzar en este proyecto. En cuarto lugar, se exponen las herramientas y la metodología a seguir en este proyecto. En el Capítulo segundo, se realiza una descripción del modelo matemático a usar para la competición política. En primer lugar se presentan las condiciones del modelo. En segundo lugar se realiza un estudio teórico del equilibrio de Nash, entrando con más detalle en las condiciones de existencia del mismo. En el Capítulo tercero, se propone el algoritmo de búsqueda del equilibrio en juegos de competición política. En primer lugar se establece una condición necesaria y suficiente de existencia del mismo, dándose luego unos lemas técnicos para así poder desarrollarlo e implementarlo más adelante. En Capítulo cuarto, se presentan varios ejemplos con el fin de validar el modelo y el algoritmo. Los dos primeros son ejemplos sencillo, que se han propuesto con el fin de comprobar de manera simple situaciones en las que no existe el equilibrio (primer ejemplo) y en las que sí existe el equilibrio (segundo ejemplo). El último ejemplo que se ha tratado, es un ejemplo electoral basado en datos reales de encuestas de opinión pública realizadas en España. En el Capítulo cinco, se tratan las conclusiones obtenidas del estudio del modelo y posibles líneas de investigación futuras. ~ 18 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Descripción del modelo de competición política Capítulo 2 Descripción del modelo de competición política 2.1 CONDICIONES DEL MODELO En este proyecto, se han usado dos temas que tienen una importancia destacada en las encuestas de opinión. Es importante enfatizar que estos temas no tienen porque ser decisivos en el resultado global de las elecciones. De hecho, pueden ser de suficiente trascendencia para merecer un análisis por parte de los dos partidos. Lo que nos permitirá estudiar la influencia de la estrategia del partido en la decisión de los votantes es el algoritmo que se va a desarrollar en siguientes secciones. Es importante tener en cuenta que la selección del margen de flexibilidad r estará condicionado por aspectos internos del partido, la cual dependerá de la facción dominante dentro del partido (reformistas, oportunistas o militantes). Si hay una mayoría de oportunistas el tamaño de r será mayor, ya que sólo les importa ganar las elecciones, sin importarles ideología alguna. Sin embargo, un partido que tenga una mayoría formada por militantes tendrá menos flexibilidad, porque estos prefieren que las políticas que se decidan estén más cerca de la política ideal del partido (Roemer, 2001). De todas formas el tamaño de r va a tener una condición que lo restringirá: la región del partido que se mueve no debe contener la posición del otro partido. El juego va a estar definido en un espacio bidimensional. De esta forma, las posiciones de los dos jugadores estarán representadas en el plano, para así captar, de entre n puntos del plano fijados, un mayor número de puntos. Así, los puntos que se encuentran a una distancia menor de cada jugador serán capturados por él. ~ 19 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Descripción del modelo de competición política En consecuencia, se dibujará una mediatriz que dividirá el plano en dos zonas y el ganador será el que capture más puntos en su semiplano. La formalización del juego es la siguiente: A los jugadores se les asignan los nombres p y q Las localizaciones en el plano de los jugadores son t1y t2 Los puntos del plano se denotan por p1,…,pn Para conocer las ganancias de cada jugador, se utilizarán las siguientes funciones: Π1 (t1, t2), como el número de puntos pi tal que d (pi, t1)≤ d (pi, t2) Π2 (t1, t2) = n - Π1 (t1, t2), como el número de puntos pi tal que d (pi, t1)>d (pi, t2) Considerando d (pi, t) la distancia euclídea entre pi y t. Los jugadores p y q podrán modificar su situación dentro de un entorno, por lo que, los movimientos de ambos jugadores estarán restringidos por los límites de dos entornos circulares disjuntos, los cuales son los siguientes: B = C(x0, r); siendo C(x0, r) un círculo cerrado cuyo centro es x0 y el radio es r B’ = C (x1, r’); siendo C (x1, r’)un círculo cerrado cuyo centro es x1 y el radio es r’ El punto x0 se puede considerar como la posición inicial de p. .Para asegurar que se cumplen las restricciones, se asignan ganancias nulas a los distintos jugadores si no se encuentran dentro de sus entornos. Π1 (t1, t2) = 0, si t1 no pertenece a B Π2 (t1, t2) = 0, si t2 no pertenece a B’ ~ 20 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Descripción del modelo de competición política El concepto de equilibrio a considerar es el de Nash y su definición es la siguiente: Definición (t*1, t*2) es una posición de equilibrio de Nash si: Π1 (t1, t*2) ≤ Π1 (t*1, t*2), t1B Π2 (t1, t*2) ≤ Π2 (t*1, t*2), t2B’ ~ 21 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Descripción del modelo de competición política 2.2 ESTUDIO TEÓRICO DEL EQUILIBRIO DE NASH Condiciones de existencia Primero se verá una proposición que es inmediata de la definición de equilibrio de Nash: Proposición 1. Las posiciones de equilibrio en el juego diseñado serán las posiciones (t1, t2), de forma que t1 estará situado en la zona de B de máxima intersección de círculos cuyo centro es algún pi y el radio es la distancia de éste a t2, de igual forma, t2 estará situado en la zona de B’ de máxima intersección de círculos, cuyo centro es algún pi y el radio es la distancia de éste a t1. Condición suficiente para que las posiciones de equilibrio anteriormente definidas existan: Proposición 2. Las posiciones de los n puntos son (p1,…,pn). Considerando que: p1i1,…, p1ik son los puntos del conjunto creado anteriormente, tales que d(p1ij, B) ≤ d(p1ij, B’) p2ik+1,…, p2inson los puntos del conjunto creado anteriormente, tales que d(p2ij, B)> d(p2ij, B’) B1j = C (p1ij, d (p1ij, B’)) B B2j = C (p2ij, d (p2ij, B)) B’ Entonces: Toda posición (t1, t2) con t1j=1k B1j , t2j=1+kn B2j es de equilibrio, siempre que: j=1k B1j ≠ y j=1+kn B2j ≠ ~ 22 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Descripción del modelo de competición política Observación. En los casos en los que se da la condición suficiente, se garantiza por la proposición anterior, la existencia de infinitas posiciones de equilibrio. Proposición 3. El equilibrio no es único si hay alguna posición de equilibrio (t1, t2 ) Demostración. Si t1 gana a t2 los puntos pj1, …, pjk, y pjk+1, …, pjn son los que gana t2a t1, entonces, como t2 está en el interior de C (pjij, d (pji, t1)) para todo i = k+1, …, n, es posible buscar una posición t’ para el otro jugador en B’ lo suficientemente cercano de t2 para que t’ esté dentro de C (pjij, d (pji, t1)) para todo i = k+1, …, n, y por lo tanto en el área de mayor ganancia de puntos si el primer jugador está en t1, y que t1 esté en C (pjij, d (pji, t’)) para todo i = 1, …, k . Se cumple entonces que (t1, t’) es también una posición de equilibrio. ~ 23 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Algoritmo de búsqueda de posiciones de equilibrio Capítulo 3 Algoritmo de búsqueda de posiciones de equilibrio 3.1 DESARROLLO DEL ALGORITMO Teniendo en cuenta el modelo que se ha descrito en el capítulo anterior, se pretende encontrar la posición óptima para el partido p dentro de una región limitada. Esta región es un círculo cerrado centrado en p con radio r. Como se ha mencionado anteriormente, la posición óptima es aquella que permite a p capturar un número máximo de votantes. Por ello, a continuación, se va a desarrollar un algoritmo para localizar posiciones de equilibrio de Nash. Para ello, primero se verá una condición necesaria y suficiente para la existencia de equilibrio, la cual sería una traducción de la condiciones de equilibrio de Von Neumann para juegos de suma constante. Proposición 4. Teniendo en cuenta los siguientes números: m1 = mintB (máxima intersección en B’ de C(pi , d(pi, t)), i = 1, …, n(máxima ganancia mínima para el segundo jugador) y m2 = mint’B’(máxima intersección en B de C(pi , d(pi, t’)), i = 1, …, n(máxima ganancia mínima para el segundo jugador); si y sólo si m1 + m2 = n, existirá equilibrio en el juego planteado. Por esto, los puntos (t1, t2) serán las posiciones de equilibrio, siendo t1 el punto de B donde se alcanza m1 y t2 el punto de B’ donde se alcanza m2. Por todo lo desarrollado anteriormente, para hallar las posiciones de equilibrio, si es que las hay, será necesario un algoritmo que obtenga las regiones de B y B’, en donde se alcanzan las máximas intersecciones mínimas. Para realizar esto, son necesarios unos cálculos previos: ~ 24 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Algoritmo de búsqueda de posiciones de equilibrio Proposición 5. Si tenemos una región R, tal que R ϵ B, entonces para cada x ϵ R se cumple que: MR ≥ lX ≥ mR Siendo: - MR la máxima intersección en B’ de C (pi, max {d (pi, y)/ y ϵ R}). - lX la máxima intersección en B’ de C (pi, d (pi, x)). - mR la máxima intersección en B’ de C (pi, d (pi, R)). Demostración. Sea x ϵ R, se supone que C (pi1, d (pi1, R)),…, C (pim, d (pim, R)) tienen intersección no vacía en B’. Al ser d (pij, R) ≤ d (pij, x) ∀ i = 1,…, m, se cumple que C (pij, d (pij, R)) ϵ C (pij, d (pij, R)). Por lo que: ≠ ∩mj=1 C (pij, d (pij, R)) ∩ B’ ⊂ ∩mj=1 C (pij, d (pij, x)) ∩ B’. Por todo esto, la máxima intersección de C (pi, d (pi, R)) en B’ será mayor o igual que mR, con lo cual lX ≥ mR. Se realiza el mismo planteamiento para MR ≥ lX . Proposición 6. Si hay alguna descomposición de B como la unión de subconjuntos Ri, tal que i = 1,..., k, de forma que existe algún valor de i, i0, tal que MRi0 = mRi0 y mRi ≥ mRi0, ∀ i = 1,…, k, el valor m1 se obtiene para cualquier x∈ Ri0. Tanto MRi como mRi, siguen la misma definición de MR y de mR definida en la proposición anterior. Vemos ya el algoritmo: Algoritmo para encontrar las posiciones de equilibrio ~ 25 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Algoritmo de búsqueda de posiciones de equilibrio Paso 1: Se toma un cuadrado que circunscriba a B: Q = [x01 –r, x01 +r ] x [x02 –r, x02 +r ], en el que x01 y x02 son las coordenadas de x0 (centro de B). Es necesario hacer una partición de Qen k2 cuadrados de la forma Qij = [x01 –r + (2r/k)*i, x01 + r +(2r/k)*(i+1)] x [x02 –r+(2r/k)*i, x02 + r +(2r/k)*(i+1)], siendo i = 0, …, k-1, j= 0, …, k-1, para cierto natural k. Sólo se considerarán los cuadrados que intersecan con B. Paso 2: En los cuadrados que se consideran en el anterior paso, hay que hallar para todo i, j la máxima intersección en B’ de C(ps ,d(ps,Qij), para s = 1, …, n (mQij) y la máxima intersección en B’de: C(ps, max{d(ps, Qij)/x ∈ Qij }), s = 1, …, n (MQij). Paso 3: Hay que hallar el mini,j mQij , para comprobar si para algún i0, j0 en que se alcanza ese mínimo, mQi0j0= MQi0j0. En el caso de que se alcance, hay que ir al paso 5 y guardar mQi0j0 y Qi0j0. De no ser así, se continúa con el paso 4. Paso 4: Se repiten los pasos 1, 2 y 3 cambiando k por 2k. Paso 5: Se repiten los pasos del 1 al 4 para un cuadrado Q’ que circunscribe a B’, para poder encontrar los Q’i0j0 en donde se alcanza el mini,j m’Q’ij, tal que m’Q’i0j0 = M’Q’i0j0. Se almacena tanto Q’i0j0 como m’Q’i0j0. Paso 6: Hay que hallar mQi0j0 + m’Q’i0j0 . Si el resultado es igual a n, entonces existe equilibrio en el juego planteado y cualquier (t,t’) siendo t ∈Qi0j0 ∩ B, t’ ∈Q’i0j0 ∩ B’ será posición de equilibrio. ~ 26 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Algoritmo de búsqueda de posiciones de equilibrio Figura 1: Idea gráfica del algoritmo para un votante en la posición (0;-3) Demostramos a continuación la validez del algoritmo. Proposición 7. Si los interiores de las zonas D y D’, en las que se alcanzan m1 y m2 son no vacíos, se obtienen posiciones de equilibrio en el juego a partir del algoritmo expuesto, si existen. Para simular este algoritmo usaremos distintos ejemplos sencillos y uno aplicado a la competición política nacional en España entre los dos principales partidos: el PP y el PSOE. ~ 27 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Algoritmo de búsqueda de posiciones de equilibrio 3.2 IMPLEMENTACIÓN DEL ALGORITMO El algoritmo que se ha desarrollado, ha sido programado en el lenguaje de programación C usando un compilador bajo entorno Windows. Al ser este un lenguaje de programación poderoso, de uso general, se pueden resolver problemas de distintas áreas científicas. Los datos que se han usado son los siguientes: Datos de entrada: o Posiciones de los dos partidos. o Radio del entorno de flexibilidad para cada partido. o Número de cuadrados en los que dividir el cuadrado que rodea al círculo que representa al partido. o Posiciones de los votantes. Datos de salida: o Existencia ó no de equilibrio o Posiciones de equilibrio en caso de que existan. o Número de votantes ganados por cada partido en las posiciones de equilibrio. ~ 28 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Capítulo 4 Aplicación del algoritmo a la competición política 4.1 EJEMPLOS PARA LA VALIDACIÓN DEL MODELO En este apartado, se van a ver varios ejemplos de aplicación del modelo, tanto en casos en los que no existen posiciones de equilibrio como otros casos en los que sí existen infinitas posiciones de equilibrio. Ejemplo 1: En este ejemplo las posiciones iniciales de los jugadores son x0, x1 (centros de los entornos) y los puntos p0, p1 son los votantes. Siendo: x0 = (0,0) x1 = (4,0) p0 = (0,3) p1 = (0,-3) r=1 r’ = k=5 n vale 2 Centro y radio del primer entorno: 0.000000 0.000000, 1.000000 Centro y radio del segundo entorno: 4.000000 0.000000, 2.900000 La salida de este ejemplo sólo se muestra de forma parcial, porque era demasiado extensa, segundo ya entorno que que son solución intersecan con ~ 29 ~ todos B', los y por cuadrados tanto del cualquier UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política posición del segundo partido en B' minimiza la máxima ganancia del primer partido. Salida: valor de k inicial: 5 valor de k final primer bucle: 5 Iteraciones del primer entorno: 1 Cuadrados solución: Cuadrado 11 ver1:-0.200000 -1.000000 -ver2:0.200000 -1.000000 -ver3:-0.200000 -0.600000 -ver4:0.200000 -0.600000 -- Cuadrado 12 ver1:-0.200000 -0.600000 -ver2:0.200000 -0.600000 -ver3:-0.200000 -0.200000 -ver4:0.200000 -0.200000 -- Cuadrado 14 ver1:-0.200000 0.200000 -ver2:0.200000 0.200000 -ver3:-0.200000 0.600000 -ver4:0.200000 0.600000 -- Cuadrado 15 ver1:-0.200000 0.600000 -ver2:0.200000 0.600000 -ver3:-0.200000 1.000000 -ver4:0.200000 1.000000 -- Segundo entorno valor de k inicial: 5 ~ 30 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política valor de k final segundo bucle: 160 Iteraciones del segundo entorno: 6 m1=1,m2=2 No Se ha alcanzado el equilibrio Tiempo que tarda: 0 segundos Otra forma de ver que no existe equilibrio, que corrobora el resultado obtenido con el algoritmo: se puede observar que C(p1, R) siempre que se interseca con C(p2, S) para determinados R ≥ d(p1, B’), S ≥ d(p2, B’), existe algún punto de la intersección en B. Por lo que, para cualquier posición t2 del segundo jugador en B’, se cumplirá que C(p1, d(p1, t2)) ∩ C(p2, d(p2, t2)) contendrá a algún punto de B, porque R = d(p1, t2) ≥ d(p1, B’), S = d(p2, t2) ≥ d(p2, B’) , y C(p1, d(p1, t2)) ∩ C(p2, d(p2, t2)) ≠ Ø (t2 se encuentra en la intersección). Por lo que el segundo jugador, podrá conseguir ambos puntos de la nube situándose en algún punto de B en esa intersección, por tanto cualquier posición 1 1 (t1, t2) con Π (t1, t2) < 2 ó Π (t1, t2) < 2 no es de equilibrio. Por lo que se llega a la conclusión de que en este ejemplo no existe el equilibrio. Figura 2: Ejemplo de situación de no existencia de equilibrio ~ 31 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Ejemplo 2: Las posiciones iniciales son x0, x1 (centros de los entornos) y los puntos p1, p2, son los votantes. Siendo: x0 = (0,0) x1 = (3,0) p0 = (3,9) p1 = (3,-9) r=1 r’ = 0.5 k=5 Salida del programa: n vale 2 Centro y radio del primer entorno: 0.000000 0.000000, 1.000000 Centro y radio del segundo entorno: 3.000000 0.000000, 0.500000 valor de k inicial: 5 valor de k final primer bucle: 40 Iteraciones del primer entorno: 4 Cuadrados solución: Cuadrado 1041 ver1:0.300000 -1.000000 -- ~ 32 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver2:0.350000 -1.000000 -ver3:0.300000 -0.950000 -ver4:0.350000 -0.950000 -- Cuadrado 1080 ver1:0.300000 0.950000 -ver2:0.350000 0.950000 -ver3:0.300000 1.000000 -ver4:0.350000 1.000000 -- Segundo entorno valor de k inicial: 5 valor de k final segundo bucle: 5 Iteraciones del segundo entorno: 1 Cuadrados solución: Cuadrado 1 ver1:2.500000 -0.500000 -ver2:2.700000 -0.500000 -ver3:2.500000 -0.300000 -ver4:2.700000 -0.300000 -- ~ 33 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Cuadrado 2 ver1:2.500000 -0.300000 -ver2:2.700000 -0.300000 -ver3:2.500000 -0.100000 -ver4:2.700000 -0.100000 -- Cuadrado 3 ver1:2.500000 -0.100000 -ver2:2.700000 -0.100000 -ver3:2.500000 0.100000 -ver4:2.700000 0.100000 -- Cuadrado 4 ver1:2.500000 0.100000 -ver2:2.700000 0.100000 -ver3:2.500000 0.300000 -ver4:2.700000 0.300000 -- Cuadrado 5 ver1:2.500000 0.300000 -ver2:2.700000 0.300000 -ver3:2.500000 0.500000 -ver4:2.700000 0.500000 -- ~ 34 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Cuadrado 6 ver1:2.700000 -0.500000 -ver2:2.900000 -0.500000 -ver3:2.700000 -0.300000 -ver4:2.900000 -0.300000 -- Cuadrado 7 ver1:2.700000 -0.300000 -ver2:2.900000 -0.300000 -ver3:2.700000 -0.100000 -ver4:2.900000 -0.100000 -- Cuadrado 8 ver1:2.700000 -0.100000 -ver2:2.900000 -0.100000 -ver3:2.700000 0.100000 -ver4:2.900000 0.100000 -- Cuadrado 9 ver1:2.700000 0.100000 -ver2:2.900000 0.100000 -ver3:2.700000 0.300000 -- ~ 35 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver4:2.900000 0.300000 -- Cuadrado 10 ver1:2.700000 0.300000 -ver2:2.900000 0.300000 -ver3:2.700000 0.500000 -ver4:2.900000 0.500000 -- Cuadrado 11 ver1:2.900000 -0.500000 -ver2:3.100000 -0.500000 -ver3:2.900000 -0.300000 -ver4:3.100000 -0.300000 -- Cuadrado 12 ver1:2.900000 -0.300000 -ver2:3.100000 -0.300000 -ver3:2.900000 -0.100000 -ver4:3.100000 -0.100000 -- Cuadrado 13 ver1:2.900000 -0.100000 -ver2:3.100000 -0.100000 -- ~ 36 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver3:2.900000 0.100000 -ver4:3.100000 0.100000 -- Cuadrado 14 ver1:2.900000 0.100000 -ver2:3.100000 0.100000 -ver3:2.900000 0.300000 -ver4:3.100000 0.300000 -- Cuadrado 15 ver1:2.900000 0.300000 -ver2:3.100000 0.300000 -ver3:2.900000 0.500000 -ver4:3.100000 0.500000 -- Cuadrado 16 ver1:3.100000 -0.500000 -ver2:3.300000 -0.500000 -ver3:3.100000 -0.300000 -ver4:3.300000 -0.300000 -- Cuadrado 17 ver1:3.100000 -0.300000 -- ~ 37 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver2:3.300000 -0.300000 -ver3:3.100000 -0.100000 -ver4:3.300000 -0.100000 -- Cuadrado 18 ver1:3.100000 -0.100000 -ver2:3.300000 -0.100000 -ver3:3.100000 0.100000 -ver4:3.300000 0.100000 -- Cuadrado 19 ver1:3.100000 0.100000 -ver2:3.300000 0.100000 -ver3:3.100000 0.300000 -ver4:3.300000 0.300000 -- Cuadrado 20 ver1:3.100000 0.300000 -ver2:3.300000 0.300000 -ver3:3.100000 0.500000 -ver4:3.300000 0.500000 -- Cuadrado 21 ~ 38 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver1:3.300000 -0.500000 -ver2:3.500000 -0.500000 -ver3:3.300000 -0.300000 -ver4:3.500000 -0.300000 -- Cuadrado 22 ver1:3.300000 -0.300000 -ver2:3.500000 -0.300000 -ver3:3.300000 -0.100000 -ver4:3.500000 -0.100000 -- Cuadrado 23 ver1:3.300000 -0.100000 -ver2:3.500000 -0.100000 -ver3:3.300000 0.100000 -ver4:3.500000 0.100000 -- Cuadrado 24 ver1:3.300000 0.100000 -ver2:3.500000 0.100000 -ver3:3.300000 0.300000 -ver4:3.500000 0.300000 -- ~ 39 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Cuadrado 25 ver1:3.300000 0.300000 -ver2:3.500000 0.300000 -ver3:3.300000 0.500000 -ver4:3.500000 0.500000 -- m1=1,m2=1 Se ha alcanzado el equilibrio Tiempo que tarda: 0 segundos Figura 3: Ejemplo de infinitas posiciones de equilibrio no cumpliéndose la condición suficiente Nótese que en este ejemplo no se tiene la condición suficiente de la proposición 2, ya que se cumple que d(p1, B)= d(p2, B) = 3 < d(p1, B’) = d(p2, B’) = , y que B11 ∩ B12 = Ø (ver figura 3), y aún así pueden existir infinitas posiciones de equilibrio, demostrando de esta forma que dicha condición no es necesaria. ~ 40 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política 4.2 UN EJEMPLO DE APLICACIÓN A LA POLÍTICA NACIONAL Se utilizará un ejemplo de la política de España para poder poner en práctica tanto el modelo como el algoritmo explicados en los capítulos anteriores. En este caso la simulación se basará de forma parcial en datos de una encuesta del CIS. El objetivo es encontrar una posición óptima para el partido p, situado inicialmente en el punto x0, dentro de una región limitada. Esta región es un círculo con centro en x0 y radio en r. La posición óptima será la que permita a p obtener el máximo número de votantes. Siguiendo lo explicado en capítulos anteriores, se va a considerar: El plano de políticas que se define como el presupuesto total comprometido para los programas de Educación y Sanidad, cada uno de ellos expresado como el porcentaje total del gasto del gobierno. Estos números se han obtenido de las políticas de gasto de los Presupuestos Generales del Estado, en donde se listan 26 categorías. Las políticas seguidas por el primer partido (PSOE) y el segundo partido (PP), han sido determinadas con la media de los porcentajes dedicados a esos dos programas calculadas a partir del gasto medio durante dos años de gobierno del PSOE (2005, 2006) y los 8 años de gobierno del PP (1997, 2004): p = (0.6, 1.4) y q =(1.6, 8.9). El entorno de flexibilidad de cada partido. Las preferencias políticas de los votantes. En la siguiente figura se muestra una representación gráfica de las posiciones de los votantes así como las posiciones de los partidos. En este caso se consideran las siguientes categorías: o Votantes cuyas preferencias son una mayor inversión en Educación y Sanidad. (Puntos dispersos) ~ 41 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política o Votantes que están de acuerdo con una de las políticas, pero que preferirían o bien una mayor o bien una menor inversión en la otra. (Puntos alineados en bandas estrechas) o Votantes que están totalmente de acuerdo con las inversiones actuales del Gobierno (El grupo de puntos en la parte inferior izquierda ) Figura 4: Representación gráfica de la población simulada Los datos de entrada a tener en cuenta son: x0 = (0.6, 1.4) x1 = (1.6, 8.9) r=1 r’= 0.8 k=5 El número de votantes que se va a usar es de 100 votantes. ~ 42 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Salida del programa: n vale 100 valor de k inicial del primer entorno: 5 valor de k final primer bucle: 40 Cuadrados solución: Cuadrado 560 ver1:0.250000 2.350000 -ver2:0.300000 2.350000 -ver3:0.250000 2.400000 -ver4:0.300000 2.400000 -- Cuadrado 600 ver1:0.300000 2.350000 -ver2:0.350000 2.350000 -ver3:0.300000 2.400000 -ver4:0.350000 2.400000 -- Cuadrado 640 ver1:0.350000 2.350000 -ver2:0.400000 2.350000 -ver3:0.350000 2.400000 -ver4:0.400000 2.400000 -- ~ 43 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Cuadrado 680 ver1:0.400000 2.350000 -ver2:0.450000 2.350000 -ver3:0.400000 2.400000 -ver4:0.450000 2.400000 -- Cuadrado 720 ver1:0.450000 2.350000 -ver2:0.500000 2.350000 -ver3:0.450000 2.400000 -ver4:0.500000 2.400000 -- Cuadrado 760 ver1:0.500000 2.350000 -ver2:0.550000 2.350000 -ver3:0.500000 2.400000 -ver4:0.550000 2.400000 -- Cuadrado 800 ver1:0.550000 2.350000 -ver2:0.600000 2.350000 -ver3:0.550000 2.400000 -- ~ 44 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver4:0.600000 2.400000 -- Cuadrado 840 ver1:0.600000 2.350000 -ver2:0.650000 2.350000 -ver3:0.600000 2.400000 -ver4:0.650000 2.400000 -- Cuadrado 880 ver1:0.650000 2.350000 -ver2:0.700000 2.350000 -ver3:0.650000 2.400000 -ver4:0.700000 2.400000 -- Iteraciones del primer entorno: 4 valor de k inicial del segundo entorno: 5 Cuadrados solución: Cuadrado 324 ver1:1.120000 8.219999 -ver2:1.160000 8.219999 -ver3:1.120000 8.259999 -ver4:1.160000 8.259999 -- ~ 45 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política Cuadrado 363 ver1:1.160000 8.179999 -ver2:1.200000 8.179999 -ver3:1.160000 8.219999 -ver4:1.200000 8.219999 -- Cuadrado 403 ver1:1.200000 8.179999 -ver2:1.240000 8.179999 -ver3:1.200000 8.219999 -ver4:1.240000 8.219999 -- Cuadrado 442 ver1:1.240000 8.139999 -ver2:1.280000 8.139999 -ver3:1.240000 8.179999 -ver4:1.280000 8.179999 -- Cuadrado 443 ver1:1.240000 8.179999 -ver2:1.280000 8.179999 -ver3:1.240000 8.219999 -- ~ 46 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver4:1.280000 8.219999 -- Cuadrado 482 ver1:1.280000 8.139999 -ver2:1.320000 8.139999 -ver3:1.280000 8.179999 -ver4:1.320000 8.179999 -- Cuadrado 483 ver1:1.280000 8.179999 -ver2:1.320000 8.179999 -ver3:1.280000 8.219999 -ver4:1.320000 8.219999 -- Cuadrado 521 ver1:1.320000 8.099999 -ver2:1.360000 8.099999 -ver3:1.320000 8.139999 -ver4:1.360000 8.139999 -- Cuadrado 522 ver1:1.320000 8.139999 -ver2:1.360000 8.139999 -- ~ 47 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver3:1.320000 8.179999 -ver4:1.360000 8.179999 -- Cuadrado 561 ver1:1.360000 8.099999 -ver2:1.400000 8.099999 -ver3:1.360000 8.139999 -ver4:1.400000 8.139999 -- Cuadrado 562 ver1:1.360000 8.139999 -ver2:1.400000 8.139999 -ver3:1.360000 8.179999 -ver4:1.400000 8.179999 -- Cuadrado 601 ver1:1.400000 8.099999 -ver2:1.440000 8.099999 -ver3:1.400000 8.139999 -ver4:1.440000 8.139999 -- Cuadrado 602 ver1:1.400000 8.139999 -- ~ 48 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política ver2:1.440000 8.139999 -ver3:1.400000 8.179999 -ver4:1.440000 8.179999 -- Cuadrado 641 ver1:1.440000 8.099999 -ver2:1.480000 8.099999 -ver3:1.440000 8.139999 -ver4:1.480000 8.139999 -- Cuadrado 681 ver1:1.480000 8.099999 -ver2:1.520000 8.099999 -ver3:1.480000 8.139999 -ver4:1.520000 8.139999 -- valor de k final segundo bucle: 40 Iteraciones del segundo entorno: 4 m1=42,m2=58 Se ha alcanzado el equilibrio Tiempo que tarda: 20 segundos ~ 49 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Aplicación del algoritmo a la competición política En este caso, se puede observar que se ha llegado al equilibrio, ya que el resultado de la suma de m1 y la de m2 es igual al número de votantes. Se observa también que en las posiciones de equilibrio, el partido ganador sería el primer partido, es decir el PSOE, al ser la ganancia del segundo partido en estas posiciones: m1=42<50. Esta situación se podría revertir aumentado el radio de flexibilidad del segundo partido, si dejamos igual los demás inputs. ~ 50 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Conclusiones Capítulo 5 Conclusiones En este proyecto se han usado técnicas y herramientas de la Geometría Computacional que se pueden incorporar para la resolución de diversos problemas de competición política dentro de la Teoría de Juegos. Con este fin se ha creado un algoritmo eficiente que ayuda a localizar la política óptima de un partido en una competición electoral discreta. La flexibilidad del partido permite cambiar su posición en el plano de la política dentro de un margen para poder incrementar el número de votos, teniendo en cuenta que la afinidad entre los votantes y los partidos se ha calculado con la distancia euclídea. En este proyecto se ha tenido en cuenta un modelo bidimensional y se han desarrollado distintas estrategias geométricas para encontrar las posiciones de equilibrio, si es que existen. Como se ha visto en anteriores capítulos, puede haber casos en los que la existencia de las posiciones de equilibrio, no sólo son únicas sino que son regiones del plano, lo que quiere decir, que hay infinitas posiciones. Esto añade al juego mayores posibilidades y contrasta con los resultados de las posiciones únicas de equilibrio, si se da el caso, en las que los partidos deberían adquirir una postura equivalente, típicos de los juegos de competición multidimensionales sin restricciones de entorno. Este algoritmo ha sido programado en C, y ha sido aplicado con éxito a una simulación de la competición electoral en el entorno de la política española. Los datos de los votantes usados en este caso se han obtenido de las encuestas de opinión y los barómetros del CIS, y se han añadido, interpolándolas con los datos de las encuestas, algunas otras características electorales adicionales. Los distintos estudios y simulaciones relacionados con la Teoría Espacial del Voto han tenido que hacer frente, generalmente, a los siguientes obstáculos: ~ 51 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Conclusiones La cantidad de datos cualitativos sobre la opinión política de los ciudadanos normalmente es muy pequeña. Los partidos políticos son reacios a realizar compromisos cuantitativos en sus programas electorales, especialmente en los temas relacionados con el gasto público y la inversión. En algunas ocasiones, los ciudadanos carecen de la preparación suficiente para entender cuestiones de aspecto económico o no están interesados en esos temas. Por todo ello, se ha intentado para la realización de este proyecto contactar con los responsables de la realización de los programas electorales de los dos principales partidos políticos del país. En el caso del PP, desde la Secretaría General del mismo remitieron al Sr. Esteban González Pons, vicesecretario general de Estudios y Programas, sin obtener respuesta alguna. En el otro caso, PSOE, remitieron al Sr. Juan Cruz Aragoneses, responsable de la Secretaría de Educación, Formación, Estudios y Programas. El resultado fue el mismo que en el PP. Teniendo en cuenta estas limitaciones, se ha intentado solucionar estos problemas generando los datos omitidos a través de la simulación comentada previamente. Los resultados se pueden resumir en lo siguiente: Cuando se prepara una campaña electoral, tener un conocimiento previo de las opiniones de los ciudadanos podría ayudar a los partidos a elegir la oferta electoral óptima. Esta idea se demuestra en este proyecto, ya que si se supone que el gasto en Educación y en Sanidad es una prioridad alta para la población, entonces se observa que con una variación de 0.9% en las inversiones propuestas por el partido perdedor podría haber hecho cambiar el resultado de las elecciones en su favor. Este ejemplo se puede hacer extensible a una gran cantidad de entornos políticos y de marcos económicos. ~ 52 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Conclusiones Ya que la cantidad de aspectos que pueden influenciar la intención de voto de la población es muy numerosa, no se ha intentado analizarlos en su totalidad. El estudio se ha restringido a aquellos elementos que son más importantes o relevantes para los votantes en unas elecciones determinadas. No es lo mismo unas elecciones generales que unas elecciones autonómicas. A pesar de este análisis, es difícil crear un modelo realista de las decisiones de los votantes. Por otra parte, la naturaleza de las consideraciones políticas y la incertidumbre de la toma de decisiones de los ciudadanos complican la tarea. Sin embargo, este proyecto modela de forma correcta la reacción de los votantes a las decisiones políticas más importantes, suponiendo que tienen tanto la preparación necesaria como el interés necesario para entender la información. Como línea futura de trabajo, se podría restringir el análisis a la parte de la población que no está decidida sobre su voto, si es que se puede identificar de forma correcta. Así mismo, se puede expandir el punto de vista para tener en cuenta no solo dos temas, sino más de dos. ~ 53 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Conclusiones ~ 54 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias Capítulo 6 Referencias [ABEL06] Abellanas, M., Lillo, I., López, M., Rodrigo, J., (2006). Electoral strategies in a dynamical democratic system: geometric models. European Journal of Operational Research, 175, 870-878. [AURE00] Aurenhammer, R., Klein, R., (2000). Voronoi diagrams. Sack, J.R. and Urrutia, J. (eds). Handbook of Computational Geometry. Elsevier, Amsterdam. [DEBER97] De Berg, M., van Kreveld, M., Overmars, M., Schwarzkopf, O., (1997). Computational Geometry: Algorithms and Applications. Springer, New York. [DOWN57] Downs, A., (1957). An economic theory of democracy. Harper & Row, New York [ENEL84] Enelow J., Hinich M., (1984). The Spatial Theory of Voting: An Introduction. Cambridge University Press. Cambridge [WATS07] Watson, J., (2007). Strategy. An Introduction to Game Theory. W.W. Norton & Company, New York [RODR08] Rodrigo J., Lantarón S., López M., (2009). Un algoritmo para evaluar la influencia de la cultura política de los votantes en las decisiones de voto en España. Revista de Estudios Políticos, 2009 ABR-JUN; (144) ~ 55 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias http://www.cis.es http://www.cis.es/cis/export/sites/default/Archivos/Indicadores/documentos_html/TresProblemas.html ~ 56 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias 6.1 Anexo /* Programa que pone en práctica el algoritmo de búsqueda del equilibrio en competiciones políticas. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include<conio.h> #include <time.h> #define tol 1e-6 // Declaración de funciones float dist(float p[2], float q[2]); void ordenar(float **L, int n, char * situ, float *P1); int pertenece(float A[2][2],float P[2]); float mini(float a,float b); float prod_vect(float* a, float *b); void ordenar2(float **L, int n,float * P, char * situ); int arreglo (float ** cir, int n, float * Q, float R); ~ 57 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias int* min_inter(int *inter_min, int n); FILE * ps; //Declaración de fichero de salida FILE * ps2; //Declaración de fichero de salida void main() { //Declaración e inicialización de variables int n=0,i,j,k, m=0, p=0, z=0,l, *inter_min,*inter_max,*minima,dimen,m1,m2, k_ini,auxc ; float P[2]={0,0},Q[2],R1,R2,aux[2], **V,**V2, *XX, *YY,d, ver1[2],ver2[2],ver3[2],ver4[2], distancia1, distancia2, distancia3, distancia4, minidist,maxidist ; FILE * pe; int *cuad1,*cuad2, tiempo1, tiempo2, contador=0; //Apertura de fichero pe = fopen("datosen_caso5.txt", "r"); ps = fopen("sal.txt", "w"); ps2 = fopen("resultados.txt", "w"); while (!feof(pe)) { fscanf(pe, "%f", &aux[0]); n++; ~ 58 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias } n=(n-7)/2;//Número de votantes tiempo1 = (int)time(NULL); printf("n vale %d\n",n); fprintf(ps2,"n vale %d\n",n); rewind(pe); fscanf(pe,"%f %f %f",&P[0], &P[1],&R1); fscanf(pe,"%f %f %f",&Q[0], &Q[1],&R2); fscanf(pe, "%d", &k); k_ini = k; //Se guarda la variable k en k_ini para poder usarla en el segundo entorno // printf ("radio %lf\n", R1); XX = (float *)malloc((1)*sizeof(float)); YY = (float *)malloc((1)*sizeof(float)); inter_min = (int *)malloc(4*sizeof(int)); inter_max = (int *)malloc(4*sizeof(int)); cuad1 = (int *)malloc(4*sizeof(int)); ~ 59 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias cuad2 = (int *)malloc(4*sizeof(int)); V = (float **)malloc(n*sizeof(float*)); V2 = (float **)malloc(n*sizeof(float*)); for(p=0;p<n;p++) { V[p]=(float*)malloc(6*sizeof(float)); } for(p=0;p<n;p++) { V2[p]=(float*)malloc(6*sizeof(float)); } for(p=0;p<n;p++) { for(z=0;z<2;z++) { fscanf(pe,"%f",&V[p][z]); // printf ("%lf\n", V[p][z]); V2[p][z]=V[p][z]; } } fprintf (ps2,"\nvalor de k inicial del primer entorno: %d\n", k); printf("primer bucle\n"); ~ 60 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias while(1) { printf ("\nvalor de k: %d\n", k); contador++; fprintf (ps, "\nvalor de k: %d\n", k); free(XX);free(YY);free(cuad1); XX = (float *)malloc((k+1)*sizeof(float)); YY = (float *)malloc((k+1)*sizeof(float)); cuad1 = (int *)malloc((k*k)*sizeof(int)); d=2*R1/k; dimen=(int)pow(k,2)*n; free(inter_min); free(inter_max); inter_min = (int *)malloc(dimen*sizeof(int)); inter_max = (int *)malloc(dimen*sizeof(int)); for (i=0;i<=k;i++) { XX[i]=P[0]-R1+i*d; YY[i]=P[1]-R1+i*d; } ~ 61 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias fprintf (ps,"Puntos:\n"); for (i=0;i<=k;i++)fprintf(ps,"%f\n ",XX[i]); for (j=0;j<=k;j++)fprintf(ps,"%f\n ",XX[j]); m=0; //Variable para indicar el cuadrado //Primer paso del algoritmo for (i=0;i<k;i++) { for (j=0;j<k;j++) { //Vértices de los cuadraditos ver1[0]=XX[i];ver1[1]=YY[j]; ver2[0]=XX[i+1];ver2[1]=YY[j]; ver3[0]=XX[i];ver3[1]=YY[j+1]; ver4[0]=XX[i+1];ver4[1]=YY[j+1]; //para cada cuadradito printf("\nCuadrado %d\n",m+1); fprintf(ps,"\nCuadrado %d\nver1:%f %f -\n",m+1,ver1[0],ver1[1]); fprintf(ps,"ver2:%f %f --\n",ver2[0],ver2[1]); fprintf(ps,"ver3:%f %f --\n",ver3[0],ver3[1]); ~ 62 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias fprintf(ps,"ver4:%f %f -- \n\n",ver4[0],ver4[1]); if (dist(P,ver1)<= R1 || dist(P,ver2)<= R1||dist(P,ver3)<= R1||dist(P,ver4)<= R1) { //Está dentro fprintf(ps,"\n Está dentro\n"); //Segundo paso del algoritmo for(p=0;p<n;p++) { fprintf (ps,"\nVotante %d:\n", p+1); //Cálculo de distancias a cada vértice para cada votante distancia1 = dist(V[p], ver1); maxidist=minidist=distancia1; ~ 63 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias distancia2 = dist(V[p], ver2); minidist=mini(minidist,distancia2); if(distancia2>maxidist)maxidist=distancia2; distancia3 = dist(V[p], ver3); minidist=mini(minidist,distancia3); if(distancia3>maxidist)maxidist=distancia3; distancia4 = dist(V[p], ver4); minidist=mini(minidist,distancia4); if(distancia4>maxidist)maxidist=distancia4; fprintf (ps,"\n%lf\n", fprintf (ps,"%lf\n", fprintf (ps,"%lf\n", distancia1); distancia2); distancia3); ~ 64 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias fprintf (ps,"%lf\n", fprintf (ps,"maxi:%lf distancia4); mini:%lf\n", maxidist,minidist); V[p][2]=minidist; V2[p][2]=maxidist; }//end bucle votantes //Obtención de las intersecciones máximas con la distancia mínima y con la distancia máxima fprintf(ps,"Llamada a arreglo con distmin\n"); inter_min[m]=arreglo(V,n,Q,R2); fprintf(ps,"Llamada a arreglo con distmax\n"); inter_max[m]=arreglo(V2,n,Q,R2); m++; }//end if else //Caso en el que el cuadrado no está dentro, es necesario contabilizarlo (m++)y poner en inter_min e inter_max unos datos que no molesten ~ 65 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias {inter_min[m]=n+1;inter_max[m]=n+1;m++; fprintf(ps,"\nEsta fuera\n");} }//end for 2 }//end for 1 //Hallar el mínimo de las intersecciones máximas con la distancia mínima fprintf(ps,"\nintersecciones distan min \n"); for(i=0;i<m;i++)fprintf(ps,"%d ",inter_min[i]); //Hallar el mínimo de las intersecciones máximas con la distancia máxima fprintf(ps,"\nintersecciones distan max \n"); for(i=0;i<m;i++)fprintf(ps,"%d ",inter_max[i]); minima = min_inter(inter_min, m); for(i=0;i<2+minima[1];i++)fprintf(ps,"%d ",minima[i]); /* Buscar dónde coinciden el mínimo de las intersecciones máximas con la distancia mínima y el mínimo de las intersecciones máximas con la distancia máxima*/ ~ 66 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias m1=minima[0];auxc=0; j=0; for(i=2;i<2+minima[1];i++) if (m1==inter_max[minima[i]]) {auxc=1; cuad1[j]=minima[i];//tamaño k*k j++; }//Se sale si se ha encontrado la coincidencia fprintf(ps,"minima: %d\n", minima[0]); if(auxc)break; k=2*k; //Si no se ha encontrado coincidencia, se refina la variable k fprintf(ps,"k=%d\n",k); //exit(0); }//fin while fprintf (ps2,"\nvalor de k final primer bucle: %d\n", k); fprintf(ps,"sale del primer while"); //exit(0); ~ 67 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias m=0;l=0; for (i=0;i<k;i++) { for (j=0;j<k;j++) { //Vértices de los cuadraditos ver1[0]=XX[i];ver1[1]=YY[j]; ver2[0]=XX[i+1];ver2[1]=YY[j]; ver3[0]=XX[i];ver3[1]=YY[j+1]; ver4[0]=XX[i+1];ver4[1]=YY[j+1]; //para cada cuadradito if(m==cuad1[l]) { fprintf(ps2,"\nCuadrado %d\nver1:%f %f -\n",m+1,ver1[0],ver1[1]); fprintf(ps2,"ver2:%f %f -- fprintf(ps2,"ver3:%f %f -- fprintf(ps2,"ver4:%f %f -- \n",ver2[0],ver2[1]); \n",ver3[0],ver3[1]); \n\n",ver4[0],ver4[1]); l++; } m++; ~ 68 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias } } fprintf (ps2,"\nIteraciones del primer entorno: %d\n", contador); // Segundo entorno k=k_ini; //Se usa el valor de la variable k leído en el fichero contador =0; printf("segundo bucle"); fprintf (ps2,"\nvalor de k inicial del segundo entorno: %d\n", k); while(1) { printf ("\nvalor de k: %d\n", k); contador ++; fprintf (ps, "\nvalor de k: %d\n", k); free(XX);free(YY);free(cuad2); XX = (float *)malloc((k+1)*sizeof(float)); YY = (float *)malloc((k+1)*sizeof(float)); d=2*R2/k; dimen=(int)pow(k,2)*n; free(inter_min); free(inter_max); inter_min = (int *)malloc(dimen*sizeof(int)); inter_max = (int *)malloc(dimen*sizeof(int)); cuad2 = (int *)malloc((k*k)*sizeof(int)); ~ 69 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias for (i=0;i<=k;i++) { XX[i]=Q[0]-R2+i*d; YY[i]=Q[1]-R2+i*d; } fprintf (ps,"Puntos:\n"); for (i=0;i<=k;i++)fprintf(ps,"%f\n ",XX[i]); for (j=0;j<=k;j++)fprintf(ps,"%f\n ",XX[j]); m=0; //Indicar el cuadrado en el que se encuentra //Primer paso del algoritmo for (i=0;i<k;i++) { for (j=0;j<k;j++) { //Hallar los vértices de los cuadraditos ver1[0]=XX[i];ver1[1]=YY[j]; ver2[0]=XX[i+1];ver2[1]=YY[j]; ver3[0]=XX[i];ver3[1]=YY[j+1]; ver4[0]=XX[i+1];ver4[1]=YY[j+1]; ~ 70 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias //para cada cuadradito fprintf(ps,"\nCuadrado %d\nver1:%f %f -\n",m+1,ver1[0],ver1[1]); fprintf(ps,"ver2:%f %f --\n",ver2[0],ver2[1]); fprintf(ps,"ver3:%f %f --\n",ver3[0],ver3[1]); fprintf(ps,"ver4:%f %f -- \n\n",ver4[0],ver4[1]); if (dist(Q,ver1)<= R2 || dist(Q,ver2)<= R2||dist(Q,ver3)<= R2||dist(Q,ver4)<= R2) { fprintf(ps,"\n Está dentro\n"); //Segundo paso del algoritmo for(p=0;p<n;p++) { fprintf (ps,"\nVotante %d:\n", p+1); //Calcular distancias a cada vértice para cada votante ~ 71 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias distancia1 = dist(V[p], ver1); maxidist=minidist=distancia1; distancia2 = dist(V[p], ver2); minidist=mini(minidist,distancia2); if(distancia2>maxidist)maxidist=distancia2; distancia3 = dist(V[p], ver3); minidist=mini(minidist,distancia3); if(distancia3>maxidist)maxidist=distancia3; distancia4 = dist(V[p], ver4); minidist=mini(minidist,distancia4); if(distancia4>maxidist)maxidist=distancia4; fprintf distancia1); ~ 72 ~ (ps,"\n%lf\n", UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias fprintf (ps,"%lf\n", fprintf (ps,"%lf\n", fprintf (ps,"%lf\n", fprintf (ps,"maxi:%lf distancia2); distancia3); distancia4); mini:%lf\n", maxidist,minidist); V[p][2]=minidist; V2[p][2]=maxidist; }//end bucle votantes //Obtención de las intersecciones máximas con la distancia mínima y con la distancia máxima inter_min[m]=arreglo(V,n,P,R1); inter_max[m]=arreglo(V2,n,P,R1); m++; }//end if else //Caso en el que el cuadrado no está dentro, es necesario contabilizarlo (m++)y poner en inter_min e inter_max unos datos que no molesten ~ 73 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias {inter_min[m]=100;inter_max[m]=100;m++; fprintf(ps,"\nEsta fuera\n");} }//end for 2 }//end for 1 //Hallar el mínimo de las intersecciones máximas con la distancia mínima fprintf(ps,"\nintersecciones distan min \n"); for(i=0;i<m;i++)fprintf(ps,"%d ",inter_min[i]); //Hallar el mínimo de las intersecciones máximas con la distancia máxima fprintf(ps,"\nintersecciones distan max \n"); for(i=0;i<m;i++)fprintf(ps,"%d ",inter_max[i]); //Obtención del mínimo de las intersecciones máximas minima = min_inter(inter_min, m); /* Buscar dónde coinciden el mínimo de las intersecciones máximas con la distancia mínima y el mínimo de las intersecciones máximas con la distancia máxima*/ ~ 74 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias m2=minima[0];auxc=0;j=0; for(i=2;i<2+minima[1];i++) if (m2==inter_max[minima[i]]) {auxc=1; cuad2[j]=minima[i];//tamaño k*k j++;}//Se sale si se ha encontrado la coincidencia fprintf(ps,"minima: %d\n", minima[0]); if (auxc)break; k=2*k; //Si no se ha encontrado coincidencia, se refina la variable k //exit(0); } m=0;l=0; for (i=0;i<k;i++) { for (j=0;j<k;j++) { //Vértices de los cuadraditos ver1[0]=XX[i];ver1[1]=YY[j]; ver2[0]=XX[i+1];ver2[1]=YY[j]; ver3[0]=XX[i];ver3[1]=YY[j+1]; ver4[0]=XX[i+1];ver4[1]=YY[j+1]; ~ 75 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias //para cada cuadradito if(m==cuad2[l]) { fprintf(ps2,"\nCuadrado %d\nver1:%f %f -\n",m+1,ver1[0],ver1[1]); fprintf(ps2,"ver2:%f %f -- fprintf(ps2,"ver3:%f %f -- fprintf(ps2,"ver4:%f %f -- \n",ver2[0],ver2[1]); \n",ver3[0],ver3[1]); \n\n",ver4[0],ver4[1]); l++; } m++; } } fprintf (ps2,"\nvalor de k final segundo bucle: %d\n", k); fprintf (ps2,"\nIteraciones del segundo entorno: %d\n", contador); fprintf(ps2,"\nm1=%d,m2=%d\n",m1,m2); ~ 76 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias if (m1+m2 == n) { fprintf (ps2,"\nSe ha alcanzado el equilibrio\n"); } else { fprintf (ps2,"\nNo Se ha alcanzado el equilibrio\n"); } tiempo2 = (int)time(NULL); fprintf(ps2,"Tiempo que tarda: %d segundos", tiempo2-tiempo1); } //FUNCIONES float prod_vect(float* a, float *b) { return(a[0]*b[1]-b[0]*a[1]); } int pertenece(float A[2][2],float P[2]) { if(prod_vect(A[0],P)*prod_vect(A[0],A[1])>0&&prod_vect(P,A[1])*prod _vect(A[0],A[1])>0) ~ 77 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias return 1; else return 0; } float mini(float a,float b) { if(a<b)return a; return b; } float dist(float p[2], float q[2]) { return sqrt((q[0]-p[0])*(q[0]-p[0])+(q[1]-p[1])*(q[1]-p[1])); } void ordenar(float **L, int n, char * situ, float *P1) { int i,j,logic=0; float * ang,aux,coseno; char aux_pos; ang=(float*)malloc(n*sizeof(float)); if(ang==NULL){printf("Error de localizacion ordenar");} //ordenar angularmente respecto P en sentido horario ~ 78 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias //primero formar el ángulo PP1 y PX for(i=0;i<n;i++) { coseno=(P1[0]*L[i][0]+P1[1]*L[i][1])/(sqrt(P1[0]*P1[0]+P1[1]*P1[1])*sqrt(L[i][ 0]*L[i][0]+L[i][1]*L[i][1])); ang[i]=acos(coseno); } for(i=n-1;i>=1;i--) { logic=1; for(j=1;j<=i;j++) { if(ang[j-1]>ang[j]) { aux=ang[j]; ang[j]=ang[j-1]; ang[j-1]=aux; aux=L[j][0]; L[j][0]=L[j-1][0]; L[j-1][0]=aux; aux=L[j][1]; L[j][1]=L[j-1][1]; L[j-1][1]=aux; aux_pos=situ[j]; ~ 79 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias situ[j]=situ[j-1]; situ[j-1]=aux_pos; logic=0; } } if (logic)return; } } //***************************************************************** ****** //FUNCIÓN ARREGLO CÍRCULOS int arreglo (float ** cir, int n, float * Q, float R) { char *situ; int i,j,m=0,x,perte[2],k,n_arcos,pos,hay_mas_arcos,c; int f=0,maxinter; int contador_sc,contador_contQ; float Ri,Rj,A[2],B[2],discri,num1,num2,den1, den2; float aux[2],X1[2],X2[2],**L,**FINAL; L=(float **)malloc(3*n*sizeof(float*)); situ=(char*)malloc(3*n*sizeof(char)); //mas_pos=(int*)malloc(2*n*sizeof(int)); FINAL=(float **)malloc(3*n*sizeof(float*)); ~ 80 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias // ARCOS=(float **)malloc(3*n*sizeof(float*)); if(L==NULL||situ==NULL||FINAL==NULL){printf("Error localizacion 1");exit(0);} for(i=0;i<3*n;i++) { L[i]=(float*)malloc(2*sizeof(float)); if(L[i]==NULL){printf("Error de localizacion 2"); exit(0);} } for(i=0;i<3*n;i++) { FINAL[i]=(float*)malloc(6*sizeof(float)); //ARCOS[i]=(float*)malloc(7*sizeof(float)); if(FINAL[i]==NULL) { printf("Error de localizaci%cn 3", 162); exit(0); } } for(i=0;i<n;i++) { ~ 81 ~ de UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias for(j=0;j<2;j++) { // printf("%lf\n",cir[i][j]); } } //printf("Q:centro y radio: %f %f %f\n", Q[0],Q[1],R); contador_sc=0;contador_contQ=0; for(i=0;i<n;i++) { //intersecar el círculo i con la Q //nos quedamos con el arco interior a Q //calculamos si hay intersección entre círculo de radio R y centro Q // y círculo de centro cir_i y radio Ri Ri=cir[i][2]; discri = -(pow(cir[i][1]-Q[1],2))*(pow(pow((cir[i][0]-Q[0]),2)+ pow((cir[i][1]-Q[1]),2)-pow(Ri,2),2)-2*(pow((cir[i][0]-Q[0]),2)+ pow((cir[i][1]- Q[1]),2)+pow(Ri,2))*pow(R,2)+pow(R,4)); fprintf(ps,"\n\nc%crculo: %d\n",161, i+1); fprintf(ps,"centro y radio: %f %f %f\n", cir[i][0],cir[i][1],Ri); fprintf(ps,"discri: %f\n",discri); ~ 82 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias if (Q[1]==cir[i][1]){printf("ordenada coincidente %f en i= %d",Q[0],i);exit(0);} if(discri<0) { fprintf(ps,"contiene a Q en i=%d",i); contador_sc++; if(dist(cir[i],Q)<=Ri-R)contador_contQ++; if (i==n-1&& contador_sc==n)return contador_contQ; } // else if(discri==0); else { //printf("entra discri >=0"); den1 = pow(cir[i][0]-Q[0],2) + pow(cir[i][1]-Q[1],2); den2 = (pow(cir[i][0]-Q[0],2)+ pow(cir[i][1]- Q[1],2))*(cir[i][1]-Q[1]); num1 = pow(cir[i][0],3)- pow(cir[i][0],2)*Q[0]+Q[0]*(pow(Q[0],2)+pow((cir[i][1]-Q[1]),2)+pow(Ri,2)pow(R,2))+cir[i][0]*(-pow(Q[0],2)+pow((cir[i][1]-Q[1]),2)pow(Ri,2)+pow(R,2)); num2 = pow(cir[i][1],4)- 2*pow(cir[i][1],3)*Q[1]+2*cir[i][1]*Q[1]*(pow(Q[1],2)+pow(Ri,2)-pow(R,2))- ~ 83 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias pow(Q[1],2)*(pow((cir[i][0]-Q[0]),2)+pow(Q[1],2)+pow(Ri,2)pow(R,2))+pow(cir[i][1],2)*(pow((cir[i][0]-Q[0]),2)-pow(Ri,2)+pow(R,2)); // printf("den1 den2 %f %f ...... num1 num2 %f %f",den1,den2,num1,num2); A[0]=(num1-sqrt(discri))/(2*den1); A[1]=(num2+(cir[i][0]-Q[0])*sqrt(discri))/(2*den2); B[0]=(num1+sqrt(discri))/(2*den1); B[1]=(num2-(cir[i][0]-Q[0])*sqrt(discri))/(2*den2); //printf("ptos corte %f %f ....... %f %f",A[0],A[1],B[0],B[1]); //A debe ser el punto derecho y B el izquierdo if (((Q[0]-cir[i][0])*(A[1]-cir[i][1])-(Q[1]-cir[i][1])*(A[0]cir[i][0]))>0) { aux[0]=A[0]; aux[1]=A[1]; A[0]=B[0]; A[1]=B[1]; B[0]=aux[0]; B[1]=aux[1]; } L[0][0]=A[0];L[0][1]=A[1];situ[0]='D'; L[1][0]=B[0];L[1][1]=B[1];situ[1]='I'; k=2; ~ 84 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias x=0; //intersecar el resto de círculos con el AB for(j=0;j<n;j++) { if (j==i) continue; Rj=cir[j][2]; //intersecar círculo j con arco AB discri = cir[j][1],2))*(pow(pow((cir[i][0]-cir[j][0]),2)+ -(pow(cir[i][1]pow((cir[i][1]-cir[j][1]),2)- pow(Ri,2),2)-2*(pow((cir[i][0]-cir[j][0]),2)+ pow((cir[i][1]- cir[j][1]),2)+pow(Ri,2))*pow(Rj,2)+pow(Rj,4)); if(discri<0&& dist(cir[i],cir[j])<Rj) {x++;}//contiene a vi else if(discri<0);//disjuntos. No hacemos nada else if(discri==0);//tangentes exteriores. Tampoco hacemos nada else { ~ 85 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias //intersecar círculo j con círculo i y ver pertenencia al arco AB den1 = pow(cir[i][0]-cir[j][0],2) + pow(cir[i][1]cir[j][1],2); den2 = (pow(cir[i][0]-cir[j][0],2)+ pow(cir[i][1]- cir[j][1],2))*(cir[i][1]-cir[j][1]); num1 = pow(cir[i][0],3)- pow(cir[i][0],2)*cir[j][0]+cir[j][0]*(pow(cir[j][0],2)+pow((cir[i][1]cir[j][1]),2)+pow(Ri,2)-pow(Rj,2))+cir[i][0]*(-pow(cir[j][0],2)+pow((cir[i][1]cir[j][1]),2)-pow(Ri,2)+pow(Rj,2)); num2 = pow(cir[i][1],4)- 2*pow(cir[i][1],3)*cir[j][1]+2*cir[i][1]*cir[j][1]*(pow(cir[j][1],2)+pow(Ri,2)pow(Rj,2))-pow(cir[j][1],2)*(pow((cir[i][0]cir[j][0]),2)+pow(cir[j][1],2)+pow(Ri,2)pow(Rj,2))+pow(cir[i][1],2)*(pow((cir[i][0]-cir[j][0]),2)-pow(Ri,2)+pow(Rj,2)); X1[0]=(num1-sqrt(discri))/(2*den1); X1[1]=(num2+(cir[i][0]-cir[j][0])*sqrt(discri))/(2*den2); X2[0]=(num1+sqrt(discri))/(2*den1); X2[1]=(num2-(cir[i][0]-cir[j][0])*sqrt(discri))/(2*den2); // printf("ptos corte cir i con cir j %f %f ....... %f %f",X1[0],X1[1],X2[0],X2[1]); //vemos pertenencia al arco AB ~ 86 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias if(((B[0]-A[0])*(X1[1]-A[1])-(B[1]A[1])*(X1[0]-A[0]))<0) perte[0]=1; else perte[0]=0; if(((B[0]-A[0])*(X2[1]-A[1])-(B[1]-A[1])*(X2[0]-A[0]))<0) perte[1]=1; else perte[1]=0; // printf("\npertenece x1:%d x2:%d\n",perte[0],perte[1]); if(perte[0]==1&&perte[1]==0) { //X1 PERTENECE AL ARCO AB //NOS QUEDAMOS ARCO AX1 Ó X1B if((A[0]-cir[j][0])*(A[0]cir[j][0])+(A[1]-cir[j][1])*(A[1]-cir[j][1])<Rj*Rj) { L[k][0]=A[0];L[k][1]=A[1];situ[k]='D'; L[k+1][0]=X1[0];L[k+1][1]=X1[1];situ[k+1]='I'; k=k+2; } else { ~ 87 ~ CON EL UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias L[k+1][0]=B[0];L[k+1][1]=B[1];situ[k+1]='I'; L[k][0]=X1[0];L[k][1]=X1[1];situ[k]='D'; k=k+2; } } else if(perte[0]==0&&perte[1]==0) { //nos quedamos con el arco AB si éste es interior a cir[j] if((A[0]-cir[j][0])*(A[0]cir[j][0])+(A[1]-cir[j][1])*(A[1]-cir[j][1])<cir[j][2]*cir[j][2]) { // printf("Nos arco AB"); L[k][0]=A[0];L[k][1]=A[1];situ[k]='D'; L[k+1][0]=B[0];L[k+1][1]=B[1];situ[k+1]='I'; k=k+2; } } ~ 88 ~ quedamos con UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias else if(perte[0]==0&&perte[1]==1) { //X2 PERTENECE AL ARCO AB //NOS QUEDAMOS CON ARCO AX2 Ó X2B if((A[0]-cir[j][0])*(A[0]cir[j][0])+(A[1]-cir[j][1])*(A[1]-cir[j][1])<Rj*Rj) { L[k][0]=A[0];L[k][1]=A[1];situ[k]='D'; L[k+1][0]=X2[0];L[k+1][1]=X2[1];situ[k+1]='I'; k=k+2; } else { L[k+1][0]=B[0];L[k+1][1]=B[1];situ[k+1]='I'; L[k][0]=X2[0];L[k][1]=X2[1];situ[k]='D'; k=k+2; } } else if(perte[0]==1&&perte[1]==1) ~ 89 ~ EL UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias { //Sea x1 el derecho y x2 el izquierdo respecto Vi if (((X1[0]-cir[i][0])*(X2[1]- cir[i][1])-(X1[1]-cir[i][1])*(X2[0]-cir[i][0]))<0) { aux[0]=X1[0]; aux[1]=X1[1]; X1[0]=X2[0]; X1[1]=X2[1]; X2[0]=aux[0]; X2[1]=aux[1]; } if((A[0]-cir[j][0])*(A[0]cir[j][0])+(A[1]-cir[j][1])*(A[1]-cir[j][1])<Rj*Rj &&(B[0]-cir[j][0])*(B[0]cir[j][0])+(B[1]-cir[j][1])*(B[1]-cir[j][1])<Rj*Rj) { L[k][0]=A[0];L[k][1]=A[1];situ[k]='D'; L[k+1][0]=X1[0];L[k+1][1]=X1[1];situ[k+1]='I'; k=k+2; ~ 90 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias L[k][0]=B[0];L[k][1]=B[1];situ[k]='I'; L[k+1][0]=X2[0];L[k+1][1]=X2[1];situ[k+1]='D'; k=k+2; } else { L[k][0]=X1[0];L[k][1]=X1[1];situ[k]='D'; L[k+1][0]=X2[0];L[k+1][1]=X2[1];situ[k+1]='I'; k=k+2; } }//fin if perte }//fin if di_j }//fin for j ordenar2(L,k,cir[i],situ); c=m=x; n_arcos=0; for(j=0;j<k;j++) if(situ[j]=='D') ~ 91 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias { c++; if(c>m) { m=c; pos=j; n_arcos=0; hay_mas_arcos=0; } else if(c==m) { // mas_pos[n_arcos]=pos; n_arcos++; pos=j; hay_mas_arcos=1; } } else c--; FINAL[f][0]=i ;FINAL[f][1]=L[pos][0] ;FINAL[f][2]=L[pos][1] ;FINAL[f][3]=L[pos+1][0] ;FINAL[f][4]= L[pos+1][1];FINAL[f][5]= m; f++; ~ 92 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias } }//fin for i //Cálculo del máximo de las intersecciones maxinter=0;k=0; for(i=0;i<f;i++) if(FINAL[i][5]>maxinter)maxinter=FINAL[i][5]; //Copiamos en ARCOS las filas de FINAL con máxima intersección //printf("Se captan %d votantes\n",maxinter); free(L);free(situ);free(FINAL); return maxinter; } void ordenar2(float **L, int n,float * P, char * situ) { int i,j,logic=0; float * ang,aux,coseno,auxiliar[2]; char aux_pos; ang=(float*)malloc(n*sizeof(float)); if(ang==NULL){printf("Error de localizacion ordenar2");/*exit(0)*/;} ~ 93 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias //ordenar angularmente respecto P(centro del circulo i) en sentido antihorario //primero formar el ángulo PA y PX for(i=0;i<n;i++) { coseno=((L[0][0]-P[0])*(L[i][0]-P[0])+(L[0][1]-P[1])*(L[i][1]P[1]))/(sqrt((L[0][0]-P[0])*(L[0][0]-P[0])+(L[0][1]-P[1])*(L[0][1]P[1]))*sqrt((L[i][0]-P[0])*(L[i][0]-P[0])+(L[i][1]-P[1])*(L[i][1]-P[1]))); ang[i]=acos(coseno); if(coseno>1)ang[i]=0;//a veces sale 1.0000000001, estamos evitando un fallo por esa posibilidad //a continuación, para evitar que si el ángulo>180, tome como solución el complementario auxiliar[0]=P[0]-(L[0][0]-P[0]); auxiliar[1]=P[1]-(L[0][1]-P[1]);; if((auxiliar[0]-L[0][0])*(L[i][1]-L[0][1])-(auxiliar[1]-L[0][1])*(L[i][0]L[0][0])>0) ang[i]=-ang[i]+2*3.14159; } for(i=n-1;i>=1;i--) { logic=1; for(j=1;j<=i;j++) { ~ 94 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias if(ang[j-1]>ang[j]) { aux=ang[j]; ang[j]=ang[j-1]; ang[j-1]=aux; aux=L[j][0]; L[j][0]=L[j-1][0]; L[j-1][0]=aux; aux=L[j][1]; L[j][1]=L[j-1][1]; L[j-1][1]=aux; aux_pos=situ[j]; situ[j]=situ[j-1]; situ[j-1]=aux_pos; logic=0; } } if (logic){free(ang);return;} } } int* min_inter(int *inter_min, int n) { int *m; int i ,cont=0; m = (int *)malloc((n+2)*sizeof(int*)); ~ 95 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias if (m==NULL){printf("Error de localizacion min_inter");exit(0);} m[0]=inter_min[0]; for (i=1;i<n;i++) if(inter_min[i]<m[0]) m[0]=inter_min[i]; //comprobamos en qué posiciones se alcanza el mínimo for (i=0;i<n;i++) if (m[0]==inter_min[i]) { m[cont+2]=i; cont++; } m[1]=cont; return m; } ~ 96 ~ UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ORGANIZACIÓN INDUSTRIAL Referencias FIN ~ 97 ~