escuela técnica superior de ingeniería (icai) - IIT

Anuncio
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), t1B
Π2 (t1, t*2) ≤ Π2 (t*1, t*2), t2B’
~ 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 t1j=1k B1j , t2j=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 = 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) 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 ~
Descargar