domingo, 17 de junio de 2012

Macros recursivas con uso de Solver

Macros recursivas con uso de Solver

Solver es parte de una serie de comandos a veces denominados herramientas de análisis. Con Solver, podemos buscar el valor óptimo para una fórmula determinada, la cual puede ser secuencia de valores, referencias de celda,  funciones u operadores de una celda que producen juntos un valor nuevo.
Una formula comienza siempre con el signo igual (=), denominada celda objetivo, en una hoja de cálculo. Solver funciona en un grupo de celdas que estén relacionadas, directa o indirectamente, con la fórmula de la celda objetivo.
Solver ajusta los valores en las celdas cambiantes que se especifiquen, denominadas celdas ajustables, para generar el resultado especificado en la fórmula de la celda objetivo. También pueden aplicarse restricciones, o sea,  limitaciones al problema, se puede aplicar restricciones a celdas ajustables, la celda de destino u otras celdas que estén directa o indirectamente relacionadas con la celda de destino.
Con Solver, podemos  dar solución a  variados problemas de optimización, entre ellos por ejemplo la  maximización de la utilidad.

Ahora un ejemplo para utilizar Solver y encontrar el Optimo de Pareto

¿Qué es un Óptimo de Pareto? Profundizando los análisis de las Curvas de Indiferencia y de la Caja de Edgeworth, el economista, político y sociólogo italianoVilfredo Pareto (1848-1923) desarrolló el concepto de Óptimo para aquella situación en la cual se cumple que no es posible beneficiar a una persona sin perjudicar a otra. En la búsqueda de un equilibrio con mejor bienestar, ambos agentes aceptan el intercambio hasta el punto en que este deja de generar beneficios.

Una forma de encontrar el óptimo de Pareto, es utilizando Microsoft Excel, utilizando la herramienta SOLVER con la ayuda del VBA, específicamente con el uso de Macros Recursivas.

Macros Recursivas
Recursividad, es un concepto fundamental en computación, es una alternativa diferente para implementar estructuras de repetición (ciclos). La recursividad se puede utilizar en toda situación en la cual la solución puede ser expresada como una secuencia de movimientos o pasos con reglas no ambiguas.
Se dice que una función (Function) es recursiva o que un procedimiento Sub es recursivo si se llama a sí mismos. Un ejemplo sencillo de cómo calcular el factorial de un número es el siguiente:

Function Factorial (N As Integer) As Long
                If N = 0 Then
                               Factorial = 1  ‘esto debido  a que 0!=1
                Else
                               Factorial = N * Factorial(N-1) ‘se llama así misma, pero en un número menor
                End if
End Function

Encontrando el optimo de Pareto:
Caso: Tenemos dos agentes en la economía, ambos tienen la misma función de utilidad que depende de solo dos bienes U(x1,x2) = x1*x2.  Inicialmente los consumos corresponden
Agente A (X1,X2)=(1,2) y el Agente B (X1,X2)=(2,1). Se sabe además que los precios relativos son igual a 1.

Utilizando Solver podemos encontrar el óptimo de consumo de estos agentes, o sea, el óptimo de Pareto. Para encontrar el óptimo se debe cumplir la siguiente condición, que es parte de la celda objetivo de Solver.


La macro utilizada para calcular lo anterior es la siguiente:
Sub MacroSolverr()

    SolverAceptar definirCelda:="$B$12", valorMáxMín:=3, valorDe:="0", _
        celdasCambiantes:="$B$4,$B$5,$B$8,$B$9"
    SolverAgregar referenciaCelda:="$F$5", relación:=2, Formula:="3"
    SolverAgregar referenciaCelda:="$F$6", relación:=2, Formula:="3"
    SolverAgregar referenciaCelda:="$E$9", relación:=2, Formula:="$E$8"
    SolverAgregar referenciaCelda:="$E$10", relación:=2, Formula:="$E$8"
    SolverAceptar definirCelda:="$B$12", valorMáxMín:=3, valorDe:="0", _
        celdasCambiantes:="$B$4,$B$5,$B$8,$B$9"
    SolverResolver
End Sub

Para utilizar esta macro, y otras macros que utilizan la herramienta Solver es necesario tener activado las funciones de Solver, para ello deben ir al Visual Basic en parte superior donde dice Herramientas->Referencias y activar la casilla SOLVER.


 Para graficar el óptimo de Pareto, y muchos otros tipos de gráficos, existe el complemento QIMacros para Excel, donde fácilmente puedes obtener el grafico que necesitas. Este complemento también debe ser activado para que pueda ser utilizado una vez se ha descargado. Para activar sus funciones se realiza el mismo procedimiento que para Solver:
 Esta herramienta utilizando macros permite graficar con solo seleccionar los datos correspondientes.
 Volviendo al ejemplo, si seleccionamos los datos estimados y utilizamos QImacros, específicamente, donde dice “Pareto” obtenemos el grafico siguiente, que muestra el optimo de nuestra función optimizada con Solver.
Al utilizar las Macros en Excel podemos apreciar muchas de sus ventajas, algunas de ellas son:
Realizar programas a medida
Rápido y fácil manejo 
Realización de tareas y cálculos complejos,
Aumento de eficacia y eficiencia 


No hay comentarios:

Publicar un comentario