Está en la página 1de 3

INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

CARRERA: Licenciatura en Informática

MATERIA: Sistemas de Información II

TEMA: Heurística de diseño.

ALUMNO: Uziel Esau Mercado Pérez

No. Ctrl: 07050020

MAESTRO: Ruth Mayeli Ponce Rosales

Aguascalientes, Ags. A 30 de Agosto del 2010


HEURÍSTICA DE DISEÑO.

La Heurística es un método de resolver problemas utilizando técnicas de ensayo y error. El


diseño heurístico de programas provee de un marco para resolver el problema en
contraposición con un conjunto fijo de reglas que no pueden variar.

 Una vez que se ha desarrollado una estructura de programa, se puede conseguir una
modularidad efectiva aplicando los principios de diseño y manipulando la estructura
resultante de acuerdo con este conjunto de heurísticas.

Estas heurísticas de diseño consisten en los siguientes pasos:

1.- Evaluar la estructura de programa preliminar para reducir el acoplamiento y mejorar la


cohesión. Los módulos pueden expandirse o reducirse siempre que se mejore la
independencia de los módulos. A menudo se produce un módulo expandido cuando en dos o
más módulos existe un componente de procesamiento común y puede redefinirse como un
módulo cohesivo aparte.

2.- Intentar minimizar las estructuras con alto grado de salida, fomentar un alto grado de
entrada conforme aumente la profundidad. La estructura de control no debe ser demasiado
ancha, si no que se opta por estructuras con varias capas de control y gran utilización de los
módulos inferiores.

3.- Mantener el efecto de un módulo dentro del ámbito de control de ese módulo. El ámbito
del efecto de un módulo m se define por todos los módulos que quedan afectados por una
decisión tomada en el módulo m. El ámbito de control del módulo m está formado por todos
sus módulos subordinados.

4.- Evaluar los interfaces de los módulos para reducir la complejidad y la redundancia y
mejorar la consistencia. Quiere decir que se debe revisar la información que se pasa en los
interfaces para pasar únicamente la información necesaria.

5.- Definir módulos cuyas funciones sean predecibles, para evitar módulos que sean
demasiado restrictivos. Los módulos deben tener una apariencia de caja negra, ocultando los
detalles de procedimiento.

6.- Fomentar módulos con entrada única y salida única, evitando las “conexiones
patológicas”. El software es más fácil de comprender y mantener, si a los módulos se entra
por el principio y se sale por el final.

7.- Empaquetar el software de acuerdo con las restricciones del diseño y los requisitos de
portabilidad.
¿Cuándo Utilizar Heurísticas?

 Problemas para los cuales no existen soluciones algorítmicas conocidas (ill-structured


problems).
 Problemas cuya resolución consume demasiado tiempo (eje: programación entera).
 Cuando la meta no es encontrar una solución óptima si no una solución satisfactoria.

HEURÍSTICAS: VENTAJAS Y LIMITACIONES.

 Principales Ventajas:
- Simples de entender y fáciles de
implementar.
- Ahorran tiempo de formulación y de
computación.
- A menudo producen soluciones
aceptables.
 Principal Limitación.
- No garantizan solución óptima.

TIPOS DE HEURÍSTICAS GENERALES.

 Random: Elegir soluciones aleatorias.


 Greedy: En cada paso asigna un valor a cada variable, la elección es la que minimiza el
incremento en la función objetivo (para minimización).
 Exchanging Heuristics: Genera una mejor solución modificado de algún modo la
solución existente.
 Busqueda Tabu: Basado en estrategia de búsqueda inteligente, uso de memoria
adaptativa, responsive exploration.
 Algoritmos Geneticos: Genera población de soluciones (individuales) los que
recombina para obtener mejores soluciones (hijos).
 Population Heuristics: Reproducción, mutación, crossover.
 Metaheurísticas: Estrategía maestra que guía y modifica otras heurísticas. Algoritmos
genéticos simulated, annealing, búsqueda tabu.

También podría gustarte