Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Escuela de Ingeniería y Ciencias IN58B “Análisis de Tarifas Dinámicas en Compañías Aéreas” CURSO : IN58B SECCIÓN : 01 PROFESOR : MARCEL GOIC. FECHA DE ENTREGA : 16 / 11 / 2004 INTEGRANTE MARIO SALGADO R. : OSCAR UNANUE DAVID VILLASECA IN58B-Ingeniería en Marketing Tarea # 3 Determinación de Precio Bajo/Alto/Oportunista El problema de la determinación de precios de los pasajes de las líneas aéreas es un problema no trivial. Existen un buen número de variables a determinar y el modelo puede ser tan complejo como uno lo desee (o más bien, dependiendo del dinero que se desea gastar en la investigación y análisis de éstos modelos). Ahora bien, dado los datos del archivo Excel que contiene las reservas de 20 vuelos, sus horarios, tarifa y otros datos relevantes nuestra solución ante el problema fue la siguiente: Para determinar la distribución de la llegada de clientes con intenciones de Baja/Alta/Oportunista utilizamos el software StatFit2, el cual nos arrojó los siguientes ajustes: Clientes “Baja”: 2 IN58B-Ingeniería en Marketing Tarea # 3 Clientes “Alta”: 3 IN58B-Ingeniería en Marketing Tarea # 3 Cliente “Oportunistas”: Ahora bien, dado que los ajustes aquí vistos no son de los mejores que existan, decidimos cambiar de enfoque ante el problema y aprovechando la cantidad de datos y estadísticas que poseíamos nos pusimos a trabajar en una simulación. Para esto hicimos un programa en Perl que fuera capaz de ir cambiando cada vez el número de clientes en los cuales la tarifa iba a cambiar de “baja” a “alta”. El programa fue el siguiente: #!/usr/bin/perl @promedio; for($j=1;$j<21;$j++){ $archivo="datos".$j.".csv"; open(arch,$archivo); @data=<arch>; close(arch); 4 IN58B-Ingeniería en Marketing Tarea # 3 $max=0; $i_max=0; $corte=0; $veces=scalar @data; print "$j\n"; for($i=1;$i<=$veces;$i++){ $utilidad=0; foreach $data (@data){ chomp($data); ($n,$hora,$disp,$plata,$boolean,$resto)=split(/;/,$data); if($n < $i && ($disp eq "Alta" || $disp eq "Baja") && $boolean eq "Si Vuela"){ $utilidad=$utilidad+$plata; } if($n >= $i && $disp eq "Alta" && $boolean eq "Si Vuela"){ $utilidad=$utilidad+$plata; } } if ($max < $utilidad){ $max=$utilidad; $i_max=$i; } #print "utilidad:$utilidad en: $i\n" } print "utilidad maxima:$max con corte en: $i_max\n"; push(@promedio,$i_max); } $resultado=0; foreach $num (@promedio){ $resultado=$resultado+$num; } $resultado=$resultado/20; print "resultado final: $resultado\n"; EL programa al ser compilado arrojo los siguientes resultados: [21:02:29] mana $ ./optimo.pl 1 utilidad maxima:8160250 con corte 2 utilidad maxima:8675000 con corte 3 utilidad maxima:7824000 con corte 4 utilidad maxima:8105250 con corte 5 utilidad maxima:8283750 con corte 6 utilidad maxima:8606500 con corte 7 utilidad maxima:8373000 con corte 8 en: 43 en: 50 en: 49 en: 49 en: 42 en: 49 en: 50 5 IN58B-Ingeniería en Marketing utilidad maxima:8620000 9 utilidad maxima:8304500 10 utilidad maxima:8016000 11 utilidad maxima:7824000 12 utilidad maxima:8263000 13 utilidad maxima:7590500 14 utilidad maxima:8318000 15 utilidad maxima:8441500 16 utilidad maxima:8373000 17 utilidad maxima:8585750 18 utilidad maxima:8304500 19 utilidad maxima:7837500 20 utilidad maxima:7789750 resultado final: 48.25 Tarea # 3 con corte en: 49 con corte en: 50 con corte en: 45 con corte en: 49 con corte en: 50 con corte en: 50 con corte en: 43 con corte en: 50 con corte en: 49 con corte en: 50 con corte en: 50 con corte en: 48 con corte en: 50 Por lo que determinamos que el precio pasará de “bajo” a “alto” cuando hayan comprado 48 personas sus asientos. En el caso del “oportunista” decidimos realizar una inspección de las tablas. Al hacer esto, nos dimos cuenta de que se necesitaban alrededor de 10 “oportunistas” por vuelo para que se vendieran los 100 cupos del avión. Los oportunistas llegan a una media de 112mins, por lo que dado que necesitamos 10 tendremos que cambiar el precio 1120mins antes de que finalice la venta de boletos. Con esto nos aseguramos de que por lo menos lleguen 10 oportunistas y así poder completar la venta de los tickets. 6 IN58B-Ingeniería en Marketing Tarea # 3 Caso Sobreventa de Boletos En el caso de la sobreventa de boletos, se vio que en promedio no vuelan 12 personas en cada vuelo, por lo que estamos perdiendo capacidad de sobreventa. Cuando analizamos con mayor detención en cuales circunstancias los pasajeros no volaban nos percatamos de que era de lo más randomico posible, es decir no dependía de ninguna otra variable sino tan solo de si misma ( i.e variable independiente). Dado el precio que hay que recompensar a un cliente si este llega al vuelo y se encuentra sobrevendido, decidimos dejarlo en 9 el número de pasajes a sobrevender, ya que se observó un mínimo de 7 personas que no vuela y un máximo de 20, pero la tendencia es mas a 12 (preferimos ser precavidos que estar compensando en casi el doble a los pasajeros). Conclusiones Al finalizar este informe nos sorprende la complejidad del asunto, ya que en un principio no aparentaba a ser demasiado complejo el problema a optimizar. También nos llamó la atención que el Booking de pasajes no siguiera una Poisson o una Expotencial, sino más bien otras distribuciones un tanto desconocidas para nosotros. La simulación parece ser un buen modelo a seguir en casos que no se tiene la certeza de los comportamientos de los clientes, ni la frecuencia o distribuciones que realmente los representan. Si bien en nuestro caso parece ser bastante cauta nuestra aproximación al problema, creemos fielmente de que el modelo puede ser mejorado con reglas más complejas de decisión pero como una primera instancia de análisis nos parece bastante buena. Esperamos que también tenga un buen resultado en los 5 tests de vuelos como esperamos. □ 7