Advertisement
Guest User

Untitled

a guest
May 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. subroutine writeEMSRData(EMSRData, clases, sigmaA, muA)
  2.             real(8), dimension(5,180), intent(out) :: EMSRData
  3.             real(8), dimension(5,10), intent(inout) :: clases
  4.             real(8), intent(in) :: sigmaA, muA
  5.             real(8) :: integral
  6.  
  7.             !Inicializamos a 0 las matrices
  8.             EMSRData = 0
  9.             clases = 0
  10.  
  11.             !CREAMOS LA TABLA DE DATOS GENERALES TAL QUE
  12.             ! Clase/precio/sigma/mu/cambios/precio cambios/VIP/FT/Selec. asiento/Maletas
  13.  
  14.             clases(1,:) = (/1.0, 180.0, real(sigmaA), real(muA), 1.0, 0.0, 1.0, 1.0, 1.0, 2.0/)
  15.             clases(2,:) = (/2.0, 140.0, 3.0, 15.0, 1.0, 60.0, 0.0, 1.0, 1.0, 1.0/)
  16.             clases(3,:) = (/3.0, 100.0, 5.0, 19.0, 1.0, 60.0, 0.0, 0.0, 1.0, 1.0/)
  17.             clases(4,:) = (/4.0, 70.0, 10.0, 21.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0/)
  18.             clases(5,:) = (/5.0, 35.0, 12.0, 40.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0/)
  19.  
  20.             !CREAMOS LA TABLA DE DATOS EMSR, TAL QUE
  21.             ! Clase i/Asiento j de la clase i/EMSR del asiento
  22.  
  23.             do i = 1, 5 !-- CLASE
  24.                 do j = 1, 180 !--  ASIENTO
  25.                     EMSRData(i,j) = calcIntegral(j, clases(i,3),clases(i,4)) * clases(i,2)
  26.                 end do
  27.             end do
  28.         end subroutine
  29.  
  30.         subroutine trimData(EMSRData, EMSRFinal)
  31.             real(8), dimension(5,180), intent(inout) :: EMSRData
  32.             real(8), dimension(2,180), intent(inout) :: EMSRFinal
  33.             integer, dimension(2) :: vectorTemporal
  34.  
  35.             !Creamos un bucle con 180 iteraciones, en el que se halle la posición del mayor valor
  36.             ! de la matriz EMSRData, guarde el valor EMSR en la matriz EMSRFinal con la correspondiente clase,
  37.             ! y estableza 0 como nuevo valor en la posición obtenida en la matriz EMSRData.
  38.  
  39.             do i = 1, 180
  40.                 vectorTemporal = MAXLOC(EMSRData)
  41.                 EMSRFinal(1, i) = vectorTemporal(1)
  42.                 EMSRFinal(2, i) = EMSRData(vectorTemporal(1), vectorTemporal(2))
  43.                 EMSRData(vectorTemporal(1), vectorTemporal(2)) = 0
  44.  
  45.             end do
  46.         end subroutine
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement