Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- subroutine writeEMSRData(EMSRData, clases, sigmaA, muA)
- real(8), dimension(5,180), intent(out) :: EMSRData
- real(8), dimension(5,10), intent(inout) :: clases
- real(8), intent(in) :: sigmaA, muA
- real(8) :: integral
- !Inicializamos a 0 las matrices
- EMSRData = 0
- clases = 0
- !CREAMOS LA TABLA DE DATOS GENERALES TAL QUE
- ! Clase/precio/sigma/mu/cambios/precio cambios/VIP/FT/Selec. asiento/Maletas
- clases(1,:) = (/1.0, 180.0, real(sigmaA), real(muA), 1.0, 0.0, 1.0, 1.0, 1.0, 2.0/)
- clases(2,:) = (/2.0, 140.0, 3.0, 15.0, 1.0, 60.0, 0.0, 1.0, 1.0, 1.0/)
- clases(3,:) = (/3.0, 100.0, 5.0, 19.0, 1.0, 60.0, 0.0, 0.0, 1.0, 1.0/)
- clases(4,:) = (/4.0, 70.0, 10.0, 21.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0/)
- clases(5,:) = (/5.0, 35.0, 12.0, 40.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0/)
- !CREAMOS LA TABLA DE DATOS EMSR, TAL QUE
- ! Clase i/Asiento j de la clase i/EMSR del asiento
- do i = 1, 5 !-- CLASE
- do j = 1, 180 !-- ASIENTO
- EMSRData(i,j) = calcIntegral(j, clases(i,3),clases(i,4)) * clases(i,2)
- end do
- end do
- end subroutine
- subroutine trimData(EMSRData, EMSRFinal)
- real(8), dimension(5,180), intent(inout) :: EMSRData
- real(8), dimension(2,180), intent(inout) :: EMSRFinal
- integer, dimension(2) :: vectorTemporal
- !Creamos un bucle con 180 iteraciones, en el que se halle la posición del mayor valor
- ! de la matriz EMSRData, guarde el valor EMSR en la matriz EMSRFinal con la correspondiente clase,
- ! y estableza 0 como nuevo valor en la posición obtenida en la matriz EMSRData.
- do i = 1, 180
- vectorTemporal = MAXLOC(EMSRData)
- EMSRFinal(1, i) = vectorTemporal(1)
- EMSRFinal(2, i) = EMSRData(vectorTemporal(1), vectorTemporal(2))
- EMSRData(vectorTemporal(1), vectorTemporal(2)) = 0
- end do
- end subroutine
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement