Está en la página 1de 10

UCProg Análisis

UCProg

UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE INGENIERÍA CIENCIAS FÍSICAS Y MATEMÁTICAS

CARRERA DE INGENIERÍA EN INFORMÁTICA

GRUPO DE DESARROLLO DE SOFTWARE

AGENCIA MATRIMONIAL

Julián Rosero

José Pillajo

Cristian Pujota

2019

1
UCProg Análisis

CARTA DE PRESENTACIÓN

Ing. Rosas Mauro Leonardo


DOCENTE DE ALGORITMOS

De nuestra consideración:

Por medio de la presente, presentamos el proyecto AGENCIA MATRIMONIAL, que ha sido


desarrollo por el equipo de trabajo conformado por el grupo UCProg de la Universidad
Central del Ecuador en Facultad De Ingeniería, Ciencia Físicas y Matemáticas de la carrera
Ingeniería en Informática conformado por Julián Rosero, José Pillajo, Cristian Pujota.

AGENCIA MATRIMONIAL es un juego colectivo basado en la búsqueda de la mejor


selección de parejas en un grupo de personas conformado por hombres y mujeres
equitativamente.

El proyecto que comenzó a ejecutarse el 20 de mayo del año 2019, propone un trabajo
coordinado de los integrantes del grupo UCProg y el mismo se desarrollara por un tiempo
aproximado de 2 meses, con una visión clara de que el proyecto cumpla con su objetivo
principal de brindar entretenimiento y evidenciar la implementación de los parámetros
establecidos. En consecuencia, queremos dar a Uds. La bienvenida a este proyecto, con la
certeza de que este proyecto cumple con sus objetivos.

Sin otro particular, Atentos saludos

____________________ _____________________ ____________________


Cristian Pujota Jose Pillajo Julian Rosero

2
UCProg Análisis

RESUMEN EJECUTIVO

El presente proyecto se ha elaborado con la finalidad de programar en lenguaje Java un


juego interactivo para la asignatura de Algoritmos en la Universidad Central de Ecuador.

Este proyecto pretende ser de entretenimiento y contener los conceptos estudiados en


clases para el desarrollo de programas; Se fundamenta principalmente en el enlace de las
características de un grupo de personas el cual dependiendo de su conexión se analizan las
preferencias y se agrupan de tal modo que ninguna selección represente una
disconformidad con el resultado. Estos conceptos se utilizan mucho en organizaciones en
las cuales se busca asignar a un grupo de personas a plantas de trabajo,
residentes/hospitales, compañeros de habitación, entre otros.

Este proyecto es una contribución teórica y práctica para implementar el aprendizaje de los
estudiantes universitarios encargados de programar el juego. Básicamente nuestro proyecto
contiene 4 cuatro capítulos a desarrollarse, Cada uno de los capítulos se analiza temas
necesarios para determinar el desarrollo óptimo y ejecutable del proyecto, además de las
condiciones en las que se desarrolla el proyecto se pueda garantizar una buena aceptación
por parte del usuario.

3
UCProg Análisis

ÍNDICE

Contenido
1. INTRODUCCIÓN.................................................................................................................................5
1.1 Objetivos Generales.....................................................................................................................5
1.2 Objetivos Específicos...................................................................................................................5
2. METODOLOGÍA..................................................................................................................................5
3. DESCRIPCIÓN DEL PROBLEMA...........................................................................................................5
3.1 Antecedentes...............................................................................................................................5
3.3 Justificación.................................................................................................................................6
3.4 Beneficios del Sistema.................................................................................................................6
3.4.1 Benéficos tangibles...............................................................................................................6
3.4.2 beneficios intangibles...........................................................................................................6
4. ANÁLISIS............................................................................................................................................7
4.1 Revisión de documentos..............................................................................................................7
4.2 Requerimientos para el sistema..................................................................................................8
5. RECOMENDACIONES.........................................................................................................................9
6. CONCLUSIONES.................................................................................................................................9

4
UCProg Análisis

1. INTRODUCCIÓN
1.1 Objetivos Generales
 Desarrollar un programa jugable en JAVA que implemente los conceptos
establecidos y estudiados en clases.

1.2 Objetivos Específicos


 Sintetizar los temas vistos en la asignatura de Algoritmos y que permitirán un
adecuado desarrollo del proyecto
 Identificar las falencias del proyecto a medida que avanza su desarrollo.
 Obtener un programa admisible que solucione el problema establecido.

2. METODOLOGÍA

Para el desarrollo del programa se inició con la lectura del problema de los matrimonios
estables, con lo cual se fundamentó el algoritmo para la solución de este problema. Era
importante realizar una revisión al contexto e identificar las mejoras para el diseño del
programa. Para tal fin, se realizó un conversatorio entre los integrantes del grupo para
analizar la mejor forma de plasmar este problema a un entorno de videojuegos, se presentó
la propuesta de realizar un juego de forma colectiva ya que se podría obtener datos de
personas reales y evaluar si sus resultados cumplen con el objetivo. Este conversatorio
también sirvió para evaluar diferentes temas, entre ellos, el entorno visual y su interacción
con el usuario.

Para cumplir con los objetivos del proyecto, se estableció principalmente desarrollar un
algoritmo que solventara el problema mientras que los otros miembros del equipo trabajaran
en el entorno grafico el cual debería corresponder con el contexto de un videojuego y la
implementación de la solución del problema de forma interactiva (jugable). En este informe
se explicarán los objetivos logrados durante los dos meses de trabajo en el proyecto.

3. DESCRIPCIÓN DEL PROBLEMA


3.1 Antecedentes

A mediados del siglo XIX, en Estados Unidos, los estudiantes de medicina al iniciar sus
pasantías como residentes eran enviados a distintos hospitales de los cuales recibían
ofertas y por miedo a que no pudieran obtener un mejor lugar o el de su preferencia
aceptaban las ofertas que llegaban sin fecha y en distinto orden. Esto causaba muchos
problemas ya que por lo general eran asignados a hospitales en los cuales no estaban

5
UCProg Análisis

interesados, además que los hospitales hacían sus ofertas desde mucho tiempo antes de
que culminaran sus estudios lo cual representaba un problema ya que no aseguraban que
al culminar su carrera cuenten con el perfil que buscan.

Para regular esta situación, F. J. Mullin, decano de estudiantes de la facultad de medicina


de la Universidad de Chicago, propuso la creación de un organismo intermedio, gracias al
cual ningún estudiante recibiera ofertas directas de los hospitales. La idea era que cada
estudiante en su último curso de estudios, enviara al organismo una lista de los hospitales a
los que le gustaría ir (poniendo en primer lugar el hospital en el que m ́as interesados
estuvieran). Los hospitales debían realizar lo mismo, enviar una lista de los alumnos en los
que estaban interesados a dicho organismo.

La idea de este trabajo surge a raíz de lo anterior, ya que Mullin necesitaba un algoritmo a
la hora de emparejar a los estudiantes con los hospitales. Tras varios años realizando
algoritmos no del todo satisfactorios, en 1951, se diseñó el llamado NRMP (Programa
Nacional de emparejamiento de residentes) que es el encargado de definir los algoritmos
que se siguen utilizando actualmente.

3.3 Justificación
El desarrollo de este programa busca implementar la solución de un problema de la vida
real de una forma interactiva y jugable en la cual se pueda evidenciar los conocimientos
adquiridos en la materia de algoritmos además de establecer e implementar algoritmos
esenciales para el desarrollo de problemas que se presentan en la vida diaria y enfoca al
ejercicio de nuestra carrera en un ámbito profesional.

El problema de la agencia matrimonial puede presentarse también en una empresa como


una variante ya que en una organización se pueden evidenciar este tipo de situación de
emparejamiento, por lo cual obtener un panorama de como son los problemas a los que se
enfrenta un ingeniero informático es un fundamental para el desarrollo de su carrera.

3.4 Beneficios del Sistema


3.4.1 Benéficos tangibles.
Se obtienen proyectos los cuales pueden servir de base para futuros trabajos los cuales se
pueden reutilizar o modificar para el uso más adecuado.

3.4.2 beneficios intangibles.


Principalmente se obtiene un beneficio académico y de experticia ya que en un proyecto de
estas características se evidencia la implementación de todo lo aprendido en el trascurso de
la carrera además de representar un arduo trabajo de investigación ya que no solo se ve

6
UCProg Análisis

enfocado en programación e implementación de algoritmos sino también en el estudio de


los distintos panoramas de la sociedad.

4. ANÁLISIS
4.1 Revisión de documentos

Inicialmente se tomó la idea fundamentada en la historia del problema de los


residentes/hospitales en los cuales se tienen un grupo de estudiantes y un grupo de
hospitales interesados unos en otros con diferentes preferencias.
Con lo cual el desarrollo del algoritmo se llevó a cabo basado en los ya existentes.

Algoritmo de Gale-Shapley
n ← no de mujeres

k ← no de parejas ya formadas

M ← mujer pretendiente

h ← hombre al que se pretende

Ω ← mujer imaginaria

k←0mientras que k < n hacer

M←k

mientras que M ̸= Ω hacer

h ← mejor elección restante de la lista de M (1)

si h prefiere a M que a su pareja actual (2) entonces

emparejar M con h

M ← pareja anterior de h (3)

fin si

si M ̸= Ω entonces

retirar a h de la lista de preferencias de M (4)

fin si

fin mientras que

k←k+1

fin mientras que

su implementación en java
public class AlgoritmoBasico {

public static int[] emparejar(int[][] MM, int[][] MH) {


int M;
int h;
int[]
VM = new int[MM.length];//Emparejamos a todas las mujeres con su primera opcion.
for (int i = 0; i < MM.length; i++) { VM[i] = 0; } //Emparejamos a todos los hombres con la mujer imaginaria
int[] VH = new int[MH.length];
for (int i = 0; i < MH.length; i++) {

7
UCProg Análisis

VH[i] = -1; } int[][] P = GetPreferencias(MH);


int k = 0;
while (k < MM.length) {
M = k;
while (M != -1) {

h = MM[M][VM[M]];
if ((P[h][M + 1] > P[h][VH[h] + 1])) {
int t = VH[h];
VH[h] = M;
M = t;
}if (M != -1) { VM[M] = VM[M] + 1;

}}
k++; }

return VM; }

public static int[][] GetPreferencias(int[][] MH) {


int[][] P = new int[MH.length][MH[0].length + 1];
for (int i = 0; i < P.length; i++) {
P[i][0] = 0;
for (int j = 1; j < P[0].length; j++) {
P[i][j] = MH[0].length - BuscarPos(MH, i, j - 1);
}}
return P; }

private static int BuscarPos(int[][] MH, int fila, int j) {


int l = 0;
for (int i = 0; i < MH[0].length; i++) {
if (MH[fila][i] == j) {
l = i; } }

return l; }

public static void mostrarEmparejamiento(int[][] MM, int[] 􏰇→ VM){

for (int i = 0; i < VM.length; i++) {


System.out.println("(" + i + "," + MM[i][VM[i]] ")"); }
}}

con este algoritmo se estableció el número de personas con el cual se ejecutaría el juego
que es de 6, 3 mujeres y 3 hombres, con el fin de buscar en base a sus preferencias unos
de otros el mejor emparejamiento posible.

Con el diseño del algoritmo finalizado se continuo con la implementación de la interfaz


gráfica en donde se buscó que el programa sea los más simple e interactivo posible
utilizando el entorno de desarrollo NetBeans .

8
UCProg Análisis

4.2 Requerimientos para el sistema


El programa se ejecuta con un grupo de 6 personas, 3 hombres y 3 mujeres, los cuales
ingresan al programa sus características las cuales se consideraron esenciales a la hora de
realizar un emparejamiento entre dos personas, el algoritmo que se uso toma en cuenta las
preferencias de cada una de las personas con respecto a las personas de su sexo opuesto,
las evalúa y busca la mejor elección tomando en cuenta que otra persona también puede
tener la misma preferencia con lo cual se consideran varias combinaciones para que en
todos los casos posibles los emparejamientos sean satisfactorios para los participantes.

El programa está limitado a tan solo un grupo de 6 personas a la vez y pueden existir casos
en los que no exista un emparejamiento optimo que satisfaga a las preferencias ingresadas
en el programa.

5. RECOMENDACIONES
Dado que en si el programa es un juego el cual busca emular el funcionamiento de una
agencia matrimonial, su implementación se hace con fines netamente académicos, por lo
general en las preferencias a la hora de elegir una pareja se consideran aspectos más
importantes no solo basados en características físicas y algunas personales, sino que
conlleva un tiempo considerable para conocer a la otra persona. Se recomienda tomar el
proyecto expuesto en este informe como un ejemplo de la implementación de la
programación para la solución de problemas orientados a la vida real y una muestra de su
potencial como herramienta para el desarrollo de aplicaciones.

6. CONCLUSIONES
El desarrollo de este proyecto resulto en una ardua investigación e implementación de todos los
conocimientos adquiridos en el transcurso de la carrera de ingeniería informática no solo enfocados
en programación sino también en contextos sociales ya que estos casos se pueden evidenciar en
muchos aspectos de la sociedad. Con esto se obtuvo un sistema capaz de desarrollar un algoritmo
que muestra un emparejamiento optimo en la mayoría de los casos de un grupo de personas
conformados por hombres y mujeres equitativamente; y mostrar su resultado de forma gráfica en
un contexto jugable en el cual el usuario, en este caso, grupo de usuarios pueden visualizar y
experimentar como sería la implementación y solución de un problema orientado a la vida real en un
sistema informático, el desarrollo del entorno grafica también resulto desafiante ya que se
implementaron nuevos conceptos en los que se basan los videojuegos actualmente con el fin de que
la experiencia de los usuarios se bastante buena. Para finalizar la realización del proyecto resulto en
una gran experiencia en el diseño y la búsqueda de algoritmos capaces de solucionar problemas

9
UCProg Análisis

cotidianos los cuales pueden continuar desarrollándose y servir de base para sistemas más
elaborados.

10

También podría gustarte