├── .DS_Store ├── .github └── workflows │ └── python-package-conda.yml ├── .gitignore ├── README.md ├── data ├── .DS_Store ├── data.mat ├── gates (1).csv ├── puck_data.csv ├── pucks20 (1).csv ├── tickets_pass_totoal (1).csv ├── tickets_pass_totoal (2).csv ├── tickets_pass_totoal (3).csv └── tickets_property_ranking.csv ├── model ├── __init__.py ├── question1.py ├── question2.py ├── question3.py └── script.m ├── preprocessing ├── __init__.py ├── data_structure.py └── preprocess1.py ├── question1.pdf ├── question2.pdf ├── question3.pdf ├── result ├── .DS_Store ├── image │ ├── question1 │ │ ├── 卫星厅登机口使用情况.png │ │ ├── 卫星厅登机口航班分配情况.png │ │ ├── 宽体机登机口分配情况.png │ │ ├── 登机口航班分配情况.png │ │ ├── 窄体登机口航班分配情况.png │ │ ├── 航站楼登机口使用情况.png │ │ └── 航站楼登机口航班分配情况.png │ ├── question2 │ │ ├── 卫星厅登机口使用情况.png │ │ ├── 卫星厅登机口航班分配情况.png │ │ ├── 宽体机登机口航班分配情况.png │ │ ├── 登机口航班分配情况.png │ │ ├── 窄体机登机口航班分配情况.png │ │ ├── 航站楼登机口使用情况.png │ │ └── 航站楼登机口航班分配情况.png │ └── question3 │ │ ├── 卫星厅登机口使用情况.png │ │ ├── 卫星厅登机口航班分配情况.png │ │ ├── 宽体机登机口航班分配情况.png │ │ ├── 登机口航班分配情况.png │ │ ├── 窄体机登机口航班分配情况.png │ │ ├── 航站楼登机口使用情况.png │ │ └── 航站楼登机口航班分配情况.png ├── sample.png ├── 问题一答案.csv ├── 问题三答案.csv └── 问题二答案.csv ├── 三个问题用到的登机口.csv └── 数据结构说明.txt /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/.DS_Store -------------------------------------------------------------------------------- /.github/workflows/python-package-conda.yml: -------------------------------------------------------------------------------- 1 | name: Python Package using Conda 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-linux: 7 | runs-on: ubuntu-latest 8 | strategy: 9 | max-parallel: 5 10 | 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Set up Python 3.10 14 | uses: actions/setup-python@v3 15 | with: 16 | python-version: '3.10' 17 | - name: Add conda to system path 18 | run: | 19 | # $CONDA is an environment variable pointing to the root of the miniconda directory 20 | echo $CONDA/bin >> $GITHUB_PATH 21 | - name: Install dependencies 22 | run: | 23 | conda env update --file environment.yml --name base 24 | - name: Lint with flake8 25 | run: | 26 | conda install flake8 27 | # stop the build if there are Python syntax errors or undefined names 28 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 29 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 30 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 31 | - name: Test with pytest 32 | run: | 33 | conda install pytest 34 | pytest 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | .vscode/ 28 | .idea/ 29 | venv/ 30 | 31 | 32 | # PyInstaller 33 | # Usually these files are written by a python script from a template 34 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 35 | *.manifest 36 | *.spec 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache/ 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | 86 | # Spyder project settings 87 | .spyderproject 88 | .spyproject 89 | 90 | # Rope project settings 91 | .ropeproject 92 | 93 | # mkdocs documentation 94 | /site 95 | 96 | # mypy 97 | .mypy_cache/ 98 | 99 | # ignore folder 100 | .idea/ 101 | .DS_Store 102 | .vscode/ 103 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 2018数学建模 F 2 | 3 | ``` 4 | Date: 2018/9/22 5 | Author: Sun, Shen, Liu 6 | ``` 7 | 8 | ## 工程文件结构 9 | 10 | ``` 11 | ├─data 12 | ├─model 13 | ├─preprocessing 14 | └─result 15 | └─image 16 | ├─question1 17 | ├─question2 18 | └─question3 19 | ``` 20 | 21 | ## 结构说明 22 | 23 | |--|--| 24 | |:---:|:---:| 25 | |data| 原始数据和中间数据存放路径| 26 | |preprocessing|预处理代码| 27 | |model|主要建模、求解以及画图的程序| 28 | |result|存放三个问题最后结果的路径| 29 | |question1.pdf|问题一求解过程的notebook打印版| 30 | |question2.pdf|问题二求解过程的notebook打印版| 31 | |question3.pdf|问题三求解过程的notebook打印版| 32 | 33 | > **引用请注明出处** -------------------------------------------------------------------------------- /data/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/data/.DS_Store -------------------------------------------------------------------------------- /data/data.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/data/data.mat -------------------------------------------------------------------------------- /data/gates (1).csv: -------------------------------------------------------------------------------- 1 | 登机口,终端厅,区域,到达类型,出发类型,机体类别,P,T_aI,T_aD,T_oI,T_oD 2 | T1,T,North,I,I,N,0,1.0,0.0,1.0,0.0 3 | T2,T,North,I,I,W,1,1.0,0.0,1.0,0.0 4 | T3,T,North,I,I,W,1,1.0,0.0,1.0,0.0 5 | T4,T,North,I,I,W,1,1.0,0.0,1.0,0.0 6 | T5,T,North,I,"D, I",W,1,1.0,0.0,1.0,1.0 7 | T6,T,North,"D, I","D, I",W,1,1.0,1.0,1.0,1.0 8 | T7,T,North,"D, I","D, I",N,0,1.0,1.0,1.0,1.0 9 | T8,T,North,"D, I",D,N,0,1.0,1.0,0.0,1.0 10 | T9,T,North,"D, I",D,N,0,1.0,1.0,0.0,1.0 11 | T10,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 12 | T11,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 13 | T12,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 14 | T13,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 15 | T14,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 16 | T15,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 17 | T16,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 18 | T17,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 19 | T18,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 20 | T19,T,Center,D,D,N,0,0.0,1.0,0.0,1.0 21 | T20,T,South,D,"D, I",N,0,0.0,1.0,1.0,1.0 22 | T21,T,South,D,"D, I",N,0,0.0,1.0,1.0,1.0 23 | T22,T,South,"D, I","D, I",N,0,1.0,1.0,1.0,1.0 24 | T23,T,South,"D, I","D, I",W,1,1.0,1.0,1.0,1.0 25 | T24,T,South,"D, I","D, I",W,1,1.0,1.0,1.0,1.0 26 | T25,T,South,"D, I",I,W,1,1.0,1.0,1.0,0.0 27 | T26,T,South,I,I,W,1,1.0,0.0,1.0,0.0 28 | T27,T,South,I,I,W,1,1.0,0.0,1.0,0.0 29 | T28,T,South,I,I,W,1,1.0,0.0,1.0,0.0 30 | S1,S,North,D,D,N,0,0.0,1.0,0.0,1.0 31 | S2,S,North,D,D,N,0,0.0,1.0,0.0,1.0 32 | S3,S,North,D,D,N,0,0.0,1.0,0.0,1.0 33 | S4,S,North,D,D,N,0,0.0,1.0,0.0,1.0 34 | S5,S,North,D,D,N,0,0.0,1.0,0.0,1.0 35 | S6,S,North,D,D,N,0,0.0,1.0,0.0,1.0 36 | S7,S,North,D,D,N,0,0.0,1.0,0.0,1.0 37 | S8,S,North,D,D,N,0,0.0,1.0,0.0,1.0 38 | S9,S,North,D,D,N,0,0.0,1.0,0.0,1.0 39 | S10,S,North,D,D,N,0,0.0,1.0,0.0,1.0 40 | S11,S,Center,I,I,N,0,1.0,0.0,1.0,0.0 41 | S12,S,Center,I,I,N,0,1.0,0.0,1.0,0.0 42 | S13,S,Center,I,I,N,0,1.0,0.0,1.0,0.0 43 | S14,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 44 | S15,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 45 | S16,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 46 | S17,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 47 | S18,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 48 | S19,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 49 | S20,S,Center,D,D,N,0,0.0,1.0,0.0,1.0 50 | S21,S,South,D,D,N,0,0.0,1.0,0.0,1.0 51 | S22,S,South,D,D,N,0,0.0,1.0,0.0,1.0 52 | S23,S,South,D,D,N,0,0.0,1.0,0.0,1.0 53 | S24,S,South,D,D,N,0,0.0,1.0,0.0,1.0 54 | S25,S,South,D,D,N,0,0.0,1.0,0.0,1.0 55 | S26,S,South,D,D,N,0,0.0,1.0,0.0,1.0 56 | S27,S,South,D,D,N,0,0.0,1.0,0.0,1.0 57 | S28,S,South,D,D,N,0,0.0,1.0,0.0,1.0 58 | S29,S,South,D,D,W,1,0.0,1.0,0.0,1.0 59 | S30,S,South,D,D,W,1,0.0,1.0,0.0,1.0 60 | S31,S,East,I,I,W,1,1.0,0.0,1.0,0.0 61 | S32,S,East,I,I,W,1,1.0,0.0,1.0,0.0 62 | S33,S,East,I,I,W,1,1.0,0.0,1.0,0.0 63 | S34,S,East,I,I,W,1,1.0,0.0,1.0,0.0 64 | S35,S,East,I,I,W,1,1.0,0.0,1.0,0.0 65 | S36,S,East,I,I,W,1,1.0,0.0,1.0,0.0 66 | S37,S,East,I,I,W,1,1.0,0.0,1.0,0.0 67 | S38,S,East,I,I,W,1,1.0,0.0,1.0,0.0 68 | S39,S,East,I,I,W,1,1.0,0.0,1.0,0.0 69 | S40,S,East,I,I,W,1,1.0,0.0,1.0,0.0 70 | S41,S,East,I,I,W,1,1.0,0.0,1.0,0.0 71 | -------------------------------------------------------------------------------- /data/puck_data.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/data/puck_data.csv -------------------------------------------------------------------------------- /data/pucks20 (1).csv: -------------------------------------------------------------------------------- 1 | 飞机转场记录号,"到达 2 | 日期","到达 3 | 时刻","到达 4 | 航班",到达类型,飞机型号,"出发 5 | 日期","出发 6 | 时刻","出发 7 | 航班",出发类型,"上线 8 | 机场","下线 9 | 机场",L,到达时刻,出发时刻,F_aI,F_aD,F_oI,F_oD,修正到达时刻,偏移出发时刻,修正出发时刻,到达相对时间min,出发相对时间min,占用开始索引,占用结束索引 10 | PK062,2018-01-19 00:00:00,14:55:00,GN0523,D,73E,2018-01-20 00:00:00,16:20:00,GN0256,D,NJH,ZDV,0,2018-01-19 14:55:00,2018-01-20 16:20:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 17:05:00,2018-01-20 17:05:00,0,1025,0,205 11 | PK072,2018-01-19 00:00:00,15:35:00,GN0497,D,73L,2018-01-20 00:00:00,17:05:00,GN0644,D,OOH,YNO,0,2018-01-19 15:35:00,2018-01-20 17:05:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 17:50:00,2018-01-20 17:50:00,0,1070,0,214 12 | PK089,2018-01-19 00:00:00,16:30:00,NV663,I,33H,2018-01-20 00:00:00,13:30:00,NV692,I,MIS,ZWS,1,2018-01-19 16:30:00,2018-01-20 13:30:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 14:15:00,2018-01-20 14:15:00,0,855,0,171 13 | PK094,2018-01-19 00:00:00,16:55:00,NV693,I,33H,2018-01-20 00:00:00,13:00:00,NV662,I,ZWS,MIS,1,2018-01-19 16:55:00,2018-01-20 13:00:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 13:45:00,2018-01-20 13:45:00,0,825,0,165 14 | PK102,2018-01-19 00:00:00,17:35:00,GN0209,D,73A,2018-01-20 00:00:00,13:50:00,GN0658,D,BPH,UHP,0,2018-01-19 17:35:00,2018-01-20 13:50:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 14:35:00,2018-01-20 14:35:00,0,875,0,175 15 | PK104,2018-01-19 00:00:00,17:50:00,NV697,I,773,2018-01-20 00:00:00, 0:20,NV840,I,MBY,NFM,1,2018-01-19 17:50:00,2018-01-20 00:20:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 01:05:00,2018-01-20 01:05:00,0,65,0,13 16 | PK106,2018-01-19 00:00:00,17:55:00,NV6489,D,773,2018-01-20 00:00:00, 0:55,NV880,I,TZY,BLM,1,2018-01-19 17:55:00,2018-01-20 00:55:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 01:40:00,2018-01-20 01:40:00,0,100,0,20 17 | PK107,2018-01-19 00:00:00,18:00:00,NV601,I,773,2018-01-20 00:00:00,0:05:00,NV664,I,TGP,DEH,1,2018-01-19 18:00:00,2018-01-20 00:05:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 00:50:00,2018-01-20 00:50:00,0,50,0,10 18 | PK108,2018-01-19 00:00:00,18:05:00,NV821,I,33H,2018-01-20 00:00:00, 0:20,NV608,I,NBE,ZWS,1,2018-01-19 18:05:00,2018-01-20 00:20:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 01:05:00,2018-01-20 01:05:00,0,65,0,13 19 | PK112,2018-01-19 00:00:00,18:20:00,NV6253,D,320,2018-01-20 00:00:00,10:10:00,NV316,I,MMW,DOY,0,2018-01-19 18:20:00,2018-01-20 10:10:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 10:55:00,2018-01-20 10:55:00,0,655,0,131 20 | PK117,2018-01-19 00:00:00,18:35:00,NV6779,D,320,2018-01-20 00:00:00, 7:45,NV6738,D,EMD,EMD,0,2018-01-19 18:35:00,2018-01-20 07:45:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 08:30:00,2018-01-20 08:30:00,0,510,0,102 21 | PK129,2018-01-19 00:00:00,19:20:00,NV319,I,773,2018-01-20 00:00:00,0:05:00,NV846,I,ZZA,TZE,1,2018-01-19 19:20:00,2018-01-20 00:05:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 00:50:00,2018-01-20 00:50:00,0,50,0,10 22 | PK131,2018-01-19 00:00:00,19:30:00,NV673,I,33E,2018-01-20 00:00:00, 0:10,NV320,I,TZE,GSB,1,2018-01-19 19:30:00,2018-01-20 00:10:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 00:55:00,2018-01-20 00:55:00,0,55,0,11 23 | PK136,2018-01-19 00:00:00,19:50:00,NV6753,D,319,2018-01-20 00:00:00, 8:15,NV6358,D,EMD,EBU,0,2018-01-19 19:50:00,2018-01-20 08:15:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:00:00,2018-01-20 09:00:00,0,540,0,108 24 | PK142,2018-01-19 00:00:00,20:10:00,GN0237,D,73H,2018-01-20 00:00:00,10:40:00,GN920,I,SJA,UTB,0,2018-01-19 20:10:00,2018-01-20 10:40:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 11:25:00,2018-01-20 11:25:00,0,685,0,137 25 | PK144,2018-01-19 00:00:00,20:10:00,NV621,I,325,2018-01-20 00:00:00, 1:50,NV322,I,ILH,NOM,0,2018-01-19 20:10:00,2018-01-20 01:50:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 02:35:00,2018-01-20 02:35:00,0,155,0,31 26 | PK145,2018-01-19 00:00:00,20:10:00,NV6317,D,319,2018-01-20 00:00:00,13:55:00,NV6540,D,ITO,UTO,0,2018-01-19 20:10:00,2018-01-20 13:55:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 14:40:00,2018-01-20 14:40:00,0,880,0,176 27 | PK147,2018-01-19 00:00:00,20:15:00,NV6725,D,320,2018-01-20 00:00:00, 8:20,NV6724,D,ISC,ISC,0,2018-01-19 20:15:00,2018-01-20 08:20:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:05:00,2018-01-20 09:05:00,0,545,0,109 28 | PK148,2018-01-19 00:00:00,20:20:00,NV6549,D,319,2018-01-20 00:00:00, 9:30,NV306,I,OBP,LJK,0,2018-01-19 20:20:00,2018-01-20 09:30:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 10:15:00,2018-01-20 10:15:00,0,615,0,123 29 | PK149,2018-01-19 00:00:00,20:25:00,NV317,I,320,2018-01-20 00:00:00, 0:15,NV6134,I,DOY,DFC,0,2018-01-19 20:25:00,2018-01-20 00:15:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 01:00:00,2018-01-20 01:00:00,0,60,0,12 30 | PK150,2018-01-19 00:00:00,20:25:00,NV3278,D,325,2018-01-20 00:00:00, 6:40,NV3446,D,YJZ,YJZ,0,2018-01-19 20:25:00,2018-01-20 06:40:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 07:25:00,2018-01-20 07:25:00,0,445,0,89 31 | PK151,2018-01-19 00:00:00,20:30:00,NV6117,I,33E,2018-01-20 00:00:00,10:05:00,NV866,D,UQF,LNH,1,2018-01-19 20:30:00,2018-01-20 10:05:00,1,0,0,1,2018-01-20 00:00:00,2018-01-20 10:50:00,2018-01-20 10:50:00,0,650,0,130 32 | PK155,2018-01-19 00:00:00,20:45:00,NV6375,D,323,2018-01-20 00:00:00,9:00:00,NV6230,D,ZOU,QFL,0,2018-01-19 20:45:00,2018-01-20 09:00:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:45:00,2018-01-20 09:45:00,0,585,0,117 33 | PK156,2018-01-19 00:00:00,21:00:00,NV6495,D,320,2018-01-20 00:00:00,8:00:00,NV6154,I,AZJ,QVT,0,2018-01-19 21:00:00,2018-01-20 08:00:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 08:45:00,2018-01-20 08:45:00,0,525,0,105 34 | PK159,2018-01-19 00:00:00,21:05:00,NV651,I,33E,2018-01-20 00:00:00,12:30:00,NV898,I,IOE,GDP,1,2018-01-19 21:05:00,2018-01-20 12:30:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 13:15:00,2018-01-20 13:15:00,0,795,0,159 35 | PK165,2018-01-19 00:00:00,21:20:00,NV6699,D,320,2018-01-20 00:00:00, 8:55,NV336,I,GPD,LJY,0,2018-01-19 21:20:00,2018-01-20 08:55:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 09:40:00,2018-01-20 09:40:00,0,580,0,116 36 | PK168,2018-01-19 00:00:00,21:40:00,NV6241,D,325,2018-01-20 00:00:00, 9:25,NV6376,D,QFL,CIZ,0,2018-01-19 21:40:00,2018-01-20 09:25:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 10:10:00,2018-01-20 10:10:00,0,610,0,122 37 | PK170,2018-01-19 00:00:00,21:50:00,NV3270,D,321,2018-01-20 00:00:00,8:05:00,NV3263,D,YJZ,YJZ,0,2018-01-19 21:50:00,2018-01-20 08:05:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 08:50:00,2018-01-20 08:50:00,0,530,0,106 38 | PK171,2018-01-19 00:00:00,21:50:00,NV6319,D,73E,2018-01-20 00:00:00, 8:30,NV6734,D,MAI,EMD,0,2018-01-19 21:50:00,2018-01-20 08:30:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:15:00,2018-01-20 09:15:00,0,555,0,111 39 | PK173,2018-01-19 00:00:00,22:00:00,GN0541,D,738,2018-01-20 00:00:00, 6:40,GN0480,D,IOZ,LXM,0,2018-01-19 22:00:00,2018-01-20 06:40:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 07:25:00,2018-01-20 07:25:00,0,445,0,89 40 | PK174,2018-01-19 00:00:00,22:00:00,NV6405,D,320,2018-01-20 00:00:00, 9:55,NV3280,D,DHP,ZOU,0,2018-01-19 22:00:00,2018-01-20 09:55:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 10:40:00,2018-01-20 10:40:00,0,640,0,128 41 | PK175,2018-01-19 00:00:00,22:05:00,GN0489,D,73E,2018-01-20 00:00:00, 7:30,GN0282,D,LXM,ISC,0,2018-01-19 22:05:00,2018-01-20 07:30:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 08:15:00,2018-01-20 08:15:00,0,495,0,99 42 | PK177,2018-01-19 00:00:00,22:05:00,NV6769,D,320,2018-01-20 00:00:00, 8:35,NV612,I,IEH,ILH,0,2018-01-19 22:05:00,2018-01-20 08:35:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 09:20:00,2018-01-20 09:20:00,0,560,0,112 43 | PK178,2018-01-19 00:00:00,22:10:00,GN945,I,73H,2018-01-20 00:00:00, 9:40,GN0476,D,CLL,ZJI,0,2018-01-19 22:10:00,2018-01-20 09:40:00,1,0,0,1,2018-01-20 00:00:00,2018-01-20 10:25:00,2018-01-20 10:25:00,0,625,0,125 44 | PK179,2018-01-19 00:00:00,22:15:00,NV6763,D,320,2018-01-20 00:00:00, 6:40,NV6748,D,ZOK,IEH,0,2018-01-19 22:15:00,2018-01-20 06:40:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 07:25:00,2018-01-20 07:25:00,0,445,0,89 45 | PK180,2018-01-19 00:00:00,22:25:00,GN0247,D,73A,2018-01-20 00:00:00, 6:55,GN0252,D,CBW,CQF,0,2018-01-19 22:25:00,2018-01-20 06:55:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 07:40:00,2018-01-20 07:40:00,0,460,0,92 46 | PK181,2018-01-19 00:00:00,22:25:00,GN0645,D,325,2018-01-20 00:00:00, 8:55,GN0478,D,YNO,TIF,0,2018-01-19 22:25:00,2018-01-20 08:55:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:40:00,2018-01-20 09:40:00,0,580,0,116 47 | PK182,2018-01-19 00:00:00,22:30:00,GN0291,D,73E,2018-01-20 00:00:00,8:00:00,GN0522,D,DHR,NJH,0,2018-01-19 22:30:00,2018-01-20 08:00:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 08:45:00,2018-01-20 08:45:00,0,525,0,105 48 | PK183,2018-01-19 00:00:00,22:30:00,GN0639,D,73H,2018-01-20 00:00:00, 9:10,GN912,I,DBO,UTB,0,2018-01-19 22:30:00,2018-01-20 09:10:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 09:55:00,2018-01-20 09:55:00,0,595,0,119 49 | PK184,2018-01-19 00:00:00,22:45:00,NV0747,D,323,2018-01-20 00:00:00,9:05:00,NV6446,D,LXM,TAY,0,2018-01-19 22:45:00,2018-01-20 09:05:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:50:00,2018-01-20 09:50:00,0,590,0,118 50 | PK185,2018-01-19 00:00:00,22:50:00,NV617,I,321,2018-01-20 00:00:00, 8:55,NV6616,D,ILH,GPD,0,2018-01-19 22:50:00,2018-01-20 08:55:00,1,0,0,1,2018-01-20 00:00:00,2018-01-20 09:40:00,2018-01-20 09:40:00,0,580,0,116 51 | PK186,2018-01-19 00:00:00,22:50:00,NV6379,D,319,2018-01-20 00:00:00, 9:50,NV872,I,ZCQ,LPK,0,2018-01-19 22:50:00,2018-01-20 09:50:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 10:35:00,2018-01-20 10:35:00,0,635,0,127 52 | PK187,2018-01-19 00:00:00,22:55:00,NV6615,D,319,2018-01-20 00:00:00, 8:25,NV6548,D,HZT,OBP,0,2018-01-19 22:55:00,2018-01-20 08:25:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:10:00,2018-01-20 09:10:00,0,550,0,110 53 | PK188,2018-01-19 00:00:00,23:00:00,NV6557,D,73E,2018-01-20 00:00:00, 6:55,NV3286,D,LXF,ARA,0,2018-01-19 23:00:00,2018-01-20 06:55:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 07:40:00,2018-01-20 07:40:00,0,460,0,92 54 | PK189,2018-01-19 00:00:00,23:10:00,GN0285,D,73A,2018-01-20 00:00:00, 9:25,GN936,I,KOH,UPZ,0,2018-01-19 23:10:00,2018-01-20 09:25:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 10:10:00,2018-01-20 10:10:00,0,610,0,122 55 | PK190,2018-01-19 00:00:00,23:10:00,NV3464,D,325,2018-01-20 00:00:00,10:15:00,NV6160,I,MIX,DKV,0,2018-01-19 23:10:00,2018-01-20 10:15:00,0,1,1,0,2018-01-20 00:00:00,2018-01-20 11:00:00,2018-01-20 11:00:00,0,660,0,132 56 | PK191,2018-01-19 00:00:00,23:15:00,GN0363,D,73E,2018-01-20 00:00:00,9:00:00,GN0414,D,IBL,DBO,0,2018-01-19 23:15:00,2018-01-20 09:00:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:45:00,2018-01-20 09:45:00,0,585,0,117 57 | PK192,2018-01-19 00:00:00,23:20:00,GN0455,D,73H,2018-01-20 00:00:00, 7:35,GN0234,D,EZH,UWT,0,2018-01-19 23:20:00,2018-01-20 07:35:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 08:20:00,2018-01-20 08:20:00,0,500,0,100 58 | PK193,2018-01-19 00:00:00,23:20:00,NV3447,D,319,2018-01-20 00:00:00, 9:20,NV6504,D,YJZ,DLH,0,2018-01-19 23:20:00,2018-01-20 09:20:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 10:05:00,2018-01-20 10:05:00,0,605,0,121 59 | PK194,2018-01-19 00:00:00,23:25:00,NV6471,D,323,2018-01-20 00:00:00,11:10:00,NV6656,D,TAY,ZOU,0,2018-01-19 23:25:00,2018-01-20 11:10:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 11:55:00,2018-01-20 11:55:00,0,715,0,143 60 | PK195,2018-01-19 00:00:00,23:30:00,NV3195,D,319,2018-01-20 00:00:00,9:05:00,NV6514,D,UTO,DUV,0,2018-01-19 23:30:00,2018-01-20 09:05:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 09:50:00,2018-01-20 09:50:00,0,590,0,118 61 | PK196,2018-01-19 00:00:00,23:40:00,GN0643,D,323,2018-01-20 00:00:00,14:10:00,NV6722,D,IBL,EMD,0,2018-01-19 23:40:00,2018-01-20 14:10:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 14:55:00,2018-01-20 14:55:00,0,895,0,179 62 | PK197,2018-01-19 00:00:00,23:55:00,GN0405,D,73E,2018-01-20 00:00:00, 9:25,GN0548,D,ETO,CBW,0,2018-01-19 23:55:00,2018-01-20 09:25:00,0,1,0,1,2018-01-20 00:00:00,2018-01-20 10:10:00,2018-01-20 10:10:00,0,610,0,122 63 | PK208,2018-01-19 00:00:00,5:00:00,NV847,I,773,2018-01-20 00:00:00,14:20:00,NV690,I,TZE,TGP,1,2018-01-19 05:00:00,2018-01-20 14:20:00,1,0,1,0,2018-01-20 00:00:00,2018-01-20 15:05:00,2018-01-20 15:05:00,0,905,0,181 64 | PK253,2018-01-20 00:00:00,10:00:00,NV6294,D,321,2018-01-20 00:00:00,12:40:00,NV3118,I,QFL,NGN,0,2018-01-20 10:00:00,2018-01-20 12:40:00,0,1,1,0,2018-01-20 10:00:00,2018-01-20 13:25:00,2018-01-20 13:25:00,600,805,120,161 65 | PK254,2018-01-20 00:00:00,10:05:00,NV6513,D,320,2018-01-20 00:00:00,12:30:00,NV305,D,DUV,DUV,0,2018-01-20 10:05:00,2018-01-20 12:30:00,0,1,0,1,2018-01-20 10:05:00,2018-01-20 13:15:00,2018-01-20 13:15:00,605,795,121,159 66 | PK255,2018-01-20 00:00:00,10:10:00,GN0411,D,73H,2018-01-20 00:00:00,12:00:00,GN944,I,TXB,CLL,0,2018-01-20 10:10:00,2018-01-20 12:00:00,0,1,1,0,2018-01-20 10:10:00,2018-01-20 12:45:00,2018-01-20 12:45:00,610,765,122,153 67 | PK256,2018-01-20 00:00:00,10:10:00,NV6443,D,325,2018-01-20 00:00:00,13:05:00,NV6488,D,TAY,TZY,0,2018-01-20 10:10:00,2018-01-20 13:05:00,0,1,0,1,2018-01-20 10:10:00,2018-01-20 13:50:00,2018-01-20 13:50:00,610,830,122,166 68 | PK257,2018-01-20 00:00:00,10:15:00,NV3120,D,73H,2018-01-20 00:00:00,11:15:00,NV3120,I,XVI,GTA,0,2018-01-20 10:15:00,2018-01-20 11:15:00,0,1,1,0,2018-01-20 10:15:00,2018-01-20 12:00:00,2018-01-20 12:00:00,615,720,123,144 69 | PK258,2018-01-20 00:00:00,10:15:00,NV632,D,325,2018-01-20 00:00:00,11:45:00,NV632,I,YJZ,OSU,0,2018-01-20 10:15:00,2018-01-20 11:45:00,0,1,1,0,2018-01-20 10:15:00,2018-01-20 12:30:00,2018-01-20 12:30:00,615,750,123,150 70 | PK259,2018-01-20 00:00:00,10:20:00,GN0495,D,73A,2018-01-20 00:00:00,11:20:00,GN0460,D,OOH,AIB,0,2018-01-20 10:20:00,2018-01-20 11:20:00,0,1,0,1,2018-01-20 10:20:00,2018-01-20 12:05:00,2018-01-20 12:05:00,620,725,124,145 71 | PK260,2018-01-20 00:00:00,10:20:00,NV323,I,325,2018-01-20 00:00:00,12:15:00,NV614,I,NOM,ILH,0,2018-01-20 10:20:00,2018-01-20 12:15:00,1,0,1,0,2018-01-20 10:20:00,2018-01-20 13:00:00,2018-01-20 13:00:00,620,780,124,156 72 | PK261,2018-01-20 00:00:00,10:20:00,NV687,I,325,2018-01-20 00:00:00,12:15:00,NV6144,I,IOE,JDO,0,2018-01-20 10:20:00,2018-01-20 12:15:00,1,0,1,0,2018-01-20 10:20:00,2018-01-20 13:00:00,2018-01-20 13:00:00,620,780,124,156 73 | PK262,2018-01-20 00:00:00,10:25:00,NV6731,D,325,2018-01-20 00:00:00,11:25:00,NV618,I,ISC,ILH,0,2018-01-20 10:25:00,2018-01-20 11:25:00,0,1,1,0,2018-01-20 10:25:00,2018-01-20 12:10:00,2018-01-20 12:10:00,625,730,125,146 74 | PK263,2018-01-20 00:00:00,10:25:00,NV820,D,320,2018-01-20 00:00:00,11:35:00,NV820,I,MIX,OHP,0,2018-01-20 10:25:00,2018-01-20 11:35:00,0,1,1,0,2018-01-20 10:25:00,2018-01-20 12:20:00,2018-01-20 12:20:00,625,740,125,148 75 | PK264,2018-01-20 00:00:00,10:30:00,GN0457,D,738,2018-01-20 00:00:00,13:05:00,GN0446,D,DHP,MGR,0,2018-01-20 10:30:00,2018-01-20 13:05:00,0,1,0,1,2018-01-20 10:30:00,2018-01-20 13:50:00,2018-01-20 13:50:00,630,830,126,166 76 | PK265,2018-01-20 00:00:00,10:30:00,NV858,D,73H,2018-01-20 00:00:00,12:15:00,NV858,I,LNH,LJY,0,2018-01-20 10:30:00,2018-01-20 12:15:00,0,1,1,0,2018-01-20 10:30:00,2018-01-20 13:00:00,2018-01-20 13:00:00,630,780,126,156 77 | PK266,2018-01-20 00:00:00,10:35:00,NV6713,D,320,2018-01-20 00:00:00,12:25:00,NV6713,D,TIF,AIB,0,2018-01-20 10:35:00,2018-01-20 12:25:00,0,1,0,1,2018-01-20 10:35:00,2018-01-20 13:10:00,2018-01-20 13:10:00,635,790,127,158 78 | PK267,2018-01-20 00:00:00,10:40:00,GN0271,D,73H,2018-01-20 00:00:00,12:00:00,GN0236,D,DHR,SJA,0,2018-01-20 10:40:00,2018-01-20 12:00:00,0,1,0,1,2018-01-20 10:40:00,2018-01-20 12:45:00,2018-01-20 12:45:00,640,765,128,153 79 | PK268,2018-01-20 00:00:00,10:40:00,NV303,I,320,2018-01-20 00:00:00,12:30:00,NV303,D,OHP,YJZ,0,2018-01-20 10:40:00,2018-01-20 12:30:00,1,0,0,1,2018-01-20 10:40:00,2018-01-20 13:15:00,2018-01-20 13:15:00,640,795,128,159 80 | PK269,2018-01-20 00:00:00,10:45:00,NV643,I,320,2018-01-20 00:00:00,12:05:00,NV6732,D,GVL,EMD,0,2018-01-20 10:45:00,2018-01-20 12:05:00,1,0,0,1,2018-01-20 10:45:00,2018-01-20 12:50:00,2018-01-20 12:50:00,645,770,129,154 81 | PK270,2018-01-20 00:00:00,11:00:00,NV305,I,319,2018-01-20 00:00:00,12:15:00,NV6316,D,IJK,ITO,0,2018-01-20 11:00:00,2018-01-20 12:15:00,1,0,0,1,2018-01-20 11:00:00,2018-01-20 13:00:00,2018-01-20 13:00:00,660,780,132,156 82 | PK271,2018-01-20 00:00:00,11:00:00,NV6785,D,320,2018-01-20 00:00:00,13:10:00,NV398,I,EMD,PLB,0,2018-01-20 11:00:00,2018-01-20 13:10:00,0,1,1,0,2018-01-20 11:00:00,2018-01-20 13:55:00,2018-01-20 13:55:00,660,835,132,167 83 | PK272,2018-01-20 00:00:00,11:05:00,NV6307,D,320,2018-01-20 00:00:00,18:05:00,NV6308,D,DUV,DUV,0,2018-01-20 11:05:00,2018-01-20 18:05:00,0,1,0,1,2018-01-20 11:05:00,2018-01-20 18:50:00,2018-01-20 18:50:00,665,1130,133,226 84 | PK273,2018-01-20 00:00:00,11:20:00,NV6535,D,320,2018-01-20 00:00:00,12:10:00,*****,D,DLH,***,0,2018-01-20 11:20:00,2018-01-20 12:10:00,0,1,0,1,2018-01-20 11:20:00,2018-01-20 12:55:00,2018-01-20 12:55:00,680,775,136,155 85 | PK274,2018-01-20 00:00:00,11:25:00,NV841,I,325,2018-01-20 00:00:00,13:15:00,NV610,I,LJY,ILH,0,2018-01-20 11:25:00,2018-01-20 13:15:00,1,0,1,0,2018-01-20 11:25:00,2018-01-20 14:00:00,2018-01-20 14:00:00,685,840,137,168 86 | PK275,2018-01-20 00:00:00,12:00:00,NV835,I,325,2018-01-20 00:00:00,18:10:00,NV830,I,ILH,LJY,0,2018-01-20 12:00:00,2018-01-20 18:10:00,1,0,1,0,2018-01-20 12:00:00,2018-01-20 18:55:00,2018-01-20 18:55:00,720,1135,144,227 87 | PK276,2018-01-20 00:00:00,12:20:00,NV6749,D,320,2018-01-20 00:00:00,13:25:00,NV6510,D,IEH,MZJ,0,2018-01-20 12:20:00,2018-01-20 13:25:00,0,1,0,1,2018-01-20 12:20:00,2018-01-20 14:10:00,2018-01-20 14:10:00,740,850,148,170 88 | PK277,2018-01-20 00:00:00,12:25:00,GN0253,D,73A,2018-01-20 00:00:00,13:35:00,GN0204,D,CQF,TIF,0,2018-01-20 12:25:00,2018-01-20 13:35:00,0,1,0,1,2018-01-20 12:25:00,2018-01-20 14:20:00,2018-01-20 14:20:00,745,860,149,172 89 | PK278,2018-01-20 00:00:00,12:25:00,NV3703,I,73H,2018-01-20 00:00:00,13:55:00,NV3703,D,OHP,XVI,0,2018-01-20 12:25:00,2018-01-20 13:55:00,1,0,0,1,2018-01-20 12:25:00,2018-01-20 14:40:00,2018-01-20 14:40:00,745,880,149,176 90 | PK279,2018-01-20 00:00:00,12:40:00,GN0491,D,738,2018-01-20 00:00:00,15:50:00,GN0326,D,LXM,AVI,0,2018-01-20 12:40:00,2018-01-20 15:50:00,0,1,0,1,2018-01-20 12:40:00,2018-01-20 16:35:00,2018-01-20 16:35:00,760,995,152,199 91 | PK280,2018-01-20 00:00:00,12:55:00,NV674,D,33L,2018-01-20 00:00:00,14:25:00,NV674,I,QFL,EFM,1,2018-01-20 12:55:00,2018-01-20 14:25:00,0,1,1,0,2018-01-20 12:55:00,2018-01-20 15:10:00,2018-01-20 15:10:00,775,910,155,182 92 | PK281,2018-01-20 00:00:00,13:00:00,GN0201,D,73H,2018-01-20 00:00:00,14:05:00,GN930,I,KOA,QVT,0,2018-01-20 13:00:00,2018-01-20 14:05:00,0,1,1,0,2018-01-20 13:00:00,2018-01-20 14:50:00,2018-01-20 14:50:00,780,890,156,178 93 | PK282,2018-01-20 00:00:00,13:05:00,NV3287,D,73E,2018-01-20 00:00:00,16:30:00,NV6556,D,ARA,LXF,0,2018-01-20 13:05:00,2018-01-20 16:30:00,0,1,0,1,2018-01-20 13:05:00,2018-01-20 17:15:00,2018-01-20 17:15:00,785,1035,157,207 94 | PK283,2018-01-20 00:00:00,13:10:00,GN0235,D,73H,2018-01-20 00:00:00,14:20:00,GN0250,D,UWT,YNO,0,2018-01-20 13:10:00,2018-01-20 14:20:00,0,1,0,1,2018-01-20 13:10:00,2018-01-20 15:05:00,2018-01-20 15:05:00,790,905,158,181 95 | PK284,2018-01-20 00:00:00,13:15:00,NV3266,D,325,2018-01-20 00:00:00,14:15:00,NV3269,D,YJZ,YJZ,0,2018-01-20 13:15:00,2018-01-20 14:15:00,0,1,0,1,2018-01-20 13:15:00,2018-01-20 15:00:00,2018-01-20 15:00:00,795,900,159,180 96 | PK285,2018-01-20 00:00:00,13:20:00,NV6155,I,320,2018-01-20 00:00:00,14:25:00,NV6494,D,QVT,AZJ,0,2018-01-20 13:20:00,2018-01-20 14:25:00,1,0,0,1,2018-01-20 13:20:00,2018-01-20 15:10:00,2018-01-20 15:10:00,800,910,160,182 97 | PK286,2018-01-20 00:00:00,13:25:00,NV6735,D,73E,2018-01-20 00:00:00,14:30:00,NV6198,I,EMD,GVL,0,2018-01-20 13:25:00,2018-01-20 14:30:00,0,1,1,0,2018-01-20 13:25:00,2018-01-20 15:15:00,2018-01-20 15:15:00,805,915,161,183 98 | PK287,2018-01-20 00:00:00,13:40:00,GN913,I,73H,2018-01-20 00:00:00,14:45:00,GN938,I,UTB,JDO,0,2018-01-20 13:40:00,2018-01-20 14:45:00,1,0,1,0,2018-01-20 13:40:00,2018-01-20 15:30:00,2018-01-20 15:30:00,820,930,164,186 99 | PK288,2018-01-20 00:00:00,13:40:00,NV6719,D,320,2018-01-20 00:00:00,14:50:00,NV6718,D,IJB,TIF,0,2018-01-20 13:40:00,2018-01-20 14:50:00,0,1,0,1,2018-01-20 13:40:00,2018-01-20 15:35:00,2018-01-20 15:35:00,820,935,164,187 100 | PK289,2018-01-20 00:00:00,13:50:00,GN932,D,738,2018-01-20 00:00:00,14:55:00,GN932,I,DHP,LJY,0,2018-01-20 13:50:00,2018-01-20 14:55:00,0,1,1,0,2018-01-20 13:50:00,2018-01-20 15:40:00,2018-01-20 15:40:00,830,940,166,188 101 | PK290,2018-01-20 00:00:00,13:50:00,NV383,I,321,2018-01-20 00:00:00,15:30:00,NV383,D,OSU,QFL,0,2018-01-20 13:50:00,2018-01-20 15:30:00,1,0,0,1,2018-01-20 13:50:00,2018-01-20 16:15:00,2018-01-20 16:15:00,830,975,166,195 102 | PK291,2018-01-20 00:00:00,13:55:00,NV6727,D,320,2018-01-20 00:00:00,17:25:00,NV6768,D,ZLI,IEH,0,2018-01-20 13:55:00,2018-01-20 17:25:00,0,1,0,1,2018-01-20 13:55:00,2018-01-20 18:10:00,2018-01-20 18:10:00,835,1090,167,218 103 | PK292,2018-01-20 00:00:00,14:00:00,NV6153,I,325,2018-01-20 00:00:00,15:45:00,NV6116,I,JDO,UQF,0,2018-01-20 14:00:00,2018-01-20 15:45:00,1,0,1,0,2018-01-20 14:00:00,2018-01-20 16:30:00,2018-01-20 16:30:00,840,990,168,198 104 | PK293,2018-01-20 00:00:00,14:10:00,NV6575,D,320,2018-01-20 00:00:00,15:20:00,NV6574,D,IGF,IGF,0,2018-01-20 14:10:00,2018-01-20 15:20:00,0,1,0,1,2018-01-20 14:10:00,2018-01-20 16:05:00,2018-01-20 16:05:00,850,965,170,193 105 | PK294,2018-01-20 00:00:00,14:20:00,NV3654,D,73E,2018-01-20 00:00:00,15:25:00,NV6318,D,XVI,MAI,0,2018-01-20 14:20:00,2018-01-20 15:25:00,0,1,0,1,2018-01-20 14:20:00,2018-01-20 16:10:00,2018-01-20 16:10:00,860,970,172,194 106 | PK295,2018-01-20 00:00:00,14:25:00,NV6171,I,325,2018-01-20 00:00:00,16:15:00,NV6742,D,DKV,GPD,0,2018-01-20 14:25:00,2018-01-20 16:15:00,1,0,0,1,2018-01-20 14:25:00,2018-01-20 17:00:00,2018-01-20 17:00:00,865,1020,173,204 107 | PK296,2018-01-20 00:00:00,14:25:00,NV873,I,319,2018-01-20 00:00:00,15:40:00,NV6378,D,LPK,ZCQ,0,2018-01-20 14:25:00,2018-01-20 15:40:00,1,0,0,1,2018-01-20 14:25:00,2018-01-20 16:25:00,2018-01-20 16:25:00,865,985,173,197 108 | PK297,2018-01-20 00:00:00,14:30:00,NV6709,D,323,2018-01-20 00:00:00,17:20:00,NV3273,D,DHR,YJZ,0,2018-01-20 14:30:00,2018-01-20 17:20:00,0,1,0,1,2018-01-20 14:30:00,2018-01-20 18:05:00,2018-01-20 18:05:00,870,1085,174,217 109 | PK298,2018-01-20 00:00:00,14:35:00,NV6359,D,319,2018-01-20 00:00:00,16:30:00,NV6614,D,EBU,HZT,0,2018-01-20 14:35:00,2018-01-20 16:30:00,0,1,0,1,2018-01-20 14:35:00,2018-01-20 17:15:00,2018-01-20 17:15:00,875,1035,175,207 110 | PK299,2018-01-20 00:00:00,14:40:00,GN0477,D,73H,2018-01-20 00:00:00,16:10:00,GN0638,D,ZJI,DBO,0,2018-01-20 14:40:00,2018-01-20 16:10:00,0,1,0,1,2018-01-20 14:40:00,2018-01-20 16:55:00,2018-01-20 16:55:00,880,1015,176,203 111 | PK300,2018-01-20 00:00:00,14:45:00,NV6685,D,320,2018-01-20 00:00:00,15:55:00,NV6685,D,LPX,UBP,0,2018-01-20 14:45:00,2018-01-20 15:55:00,0,1,0,1,2018-01-20 14:45:00,2018-01-20 16:40:00,2018-01-20 16:40:00,885,1000,177,200 112 | PK301,2018-01-20 00:00:00,14:45:00,NV6711,D,325,2018-01-20 00:00:00,17:10:00,NV686,I,GPD,IOE,0,2018-01-20 14:45:00,2018-01-20 17:10:00,0,1,1,0,2018-01-20 14:45:00,2018-01-20 17:55:00,2018-01-20 17:55:00,885,1075,177,215 113 | PK302,2018-01-20 00:00:00,14:50:00,GN953,I,73H,2018-01-20 00:00:00,19:30:00,GN942,I,CLL,ILU,0,2018-01-20 14:50:00,2018-01-20 19:30:00,1,0,1,0,2018-01-20 14:50:00,2018-01-20 20:15:00,2018-01-20 20:15:00,890,1215,178,243 114 | PK303,2018-01-20 00:00:00,14:50:00,NV613,I,320,2018-01-20 00:00:00,16:15:00,NV616,I,ILH,ILH,0,2018-01-20 14:50:00,2018-01-20 16:15:00,1,0,1,0,2018-01-20 14:50:00,2018-01-20 17:00:00,2018-01-20 17:00:00,890,1020,178,204 115 | PK304,2018-01-20 00:00:00,14:50:00,NV681,I,33H,2018-01-20 00:00:00,16:10:00,NV656,I,DEH,TJO,1,2018-01-20 14:50:00,2018-01-20 16:10:00,1,0,1,0,2018-01-20 14:50:00,2018-01-20 16:55:00,2018-01-20 16:55:00,890,1015,178,203 116 | PK305,2018-01-20 00:00:00,14:55:00,GN0283,D,73E,2018-01-20 00:00:00,15:55:00,GN0362,D,ISC,IBL,0,2018-01-20 14:55:00,2018-01-20 15:55:00,0,1,0,1,2018-01-20 14:55:00,2018-01-20 16:40:00,2018-01-20 16:40:00,895,1000,179,200 117 | PK306,2018-01-20 00:00:00,14:55:00,GN0479,D,325,2018-01-20 00:00:00,16:05:00,GN0280,D,TIF,DHR,0,2018-01-20 14:55:00,2018-01-20 16:05:00,0,1,0,1,2018-01-20 14:55:00,2018-01-20 16:50:00,2018-01-20 16:50:00,895,1010,179,202 118 | PK307,2018-01-20 00:00:00,14:55:00,GN0523,D,73E,2018-01-20 00:00:00,16:35:00,GN0348,D,NJH,TZY,0,2018-01-20 14:55:00,2018-01-20 16:35:00,0,1,0,1,2018-01-20 14:55:00,2018-01-20 17:20:00,2018-01-20 17:20:00,895,1040,179,208 119 | PK308,2018-01-20 00:00:00,15:00:00,NV899,I,33E,2018-01-20 00:00:00,20:20:00,NV672,I,GDP,TZE,1,2018-01-20 15:00:00,2018-01-20 20:20:00,1,0,1,0,2018-01-20 15:00:00,2018-01-20 21:05:00,2018-01-20 21:05:00,900,1265,180,253 120 | PK309,2018-01-20 00:00:00,15:00:00,*****,D,320,2018-01-20 00:00:00,15:50:00,NV3465,D,***,MIX,0,2018-01-20 15:00:00,2018-01-20 15:50:00,0,1,0,1,2018-01-20 15:00:00,2018-01-20 16:35:00,2018-01-20 16:35:00,900,995,180,199 121 | PK310,2018-01-20 00:00:00,15:10:00,GN0423,D,73E,2018-01-20 00:00:00,16:20:00,GN0642,D,DBO,IBL,0,2018-01-20 15:10:00,2018-01-20 16:20:00,0,1,0,1,2018-01-20 15:10:00,2018-01-20 17:05:00,2018-01-20 17:05:00,910,1025,182,205 122 | PK311,2018-01-20 00:00:00,15:15:00,NV629,I,73H,2018-01-20 00:00:00,16:50:00,NV629,D,GVL,XVI,0,2018-01-20 15:15:00,2018-01-20 16:50:00,1,0,0,1,2018-01-20 15:15:00,2018-01-20 17:35:00,2018-01-20 17:35:00,915,1055,183,211 123 | PK312,2018-01-20 00:00:00,15:20:00,GN0203,D,738,2018-01-20 00:00:00,16:10:00,*****,D,EMD,***,0,2018-01-20 15:20:00,2018-01-20 16:10:00,0,1,0,1,2018-01-20 15:20:00,2018-01-20 16:55:00,2018-01-20 16:55:00,920,1015,184,203 124 | PK313,2018-01-20 00:00:00,15:20:00,NV382,D,321,2018-01-20 00:00:00,16:55:00,NV382,I,QFL,OSU,0,2018-01-20 15:20:00,2018-01-20 16:55:00,0,1,1,0,2018-01-20 15:20:00,2018-01-20 17:40:00,2018-01-20 17:40:00,920,1060,184,212 125 | PK314,2018-01-20 00:00:00,15:25:00,GN931,I,73H,2018-01-20 00:00:00,17:00:00,GN980,I,UTB,LCW,0,2018-01-20 15:25:00,2018-01-20 17:00:00,1,0,1,0,2018-01-20 15:25:00,2018-01-20 17:45:00,2018-01-20 17:45:00,925,1065,185,213 126 | PK315,2018-01-20 00:00:00,15:25:00,NV6453,D,323,2018-01-20 00:00:00,16:45:00,NV0746,D,TAY,LXM,0,2018-01-20 15:25:00,2018-01-20 16:45:00,0,1,0,1,2018-01-20 15:25:00,2018-01-20 17:30:00,2018-01-20 17:30:00,925,1050,185,210 127 | PK316,2018-01-20 00:00:00,15:30:00,NV657,I,33E,2018-01-20 00:00:00,19:45:00,NV848,I,TJO,NFM,1,2018-01-20 15:30:00,2018-01-20 19:45:00,1,0,1,0,2018-01-20 15:30:00,2018-01-20 20:30:00,2018-01-20 20:30:00,930,1230,186,246 128 | PK317,2018-01-20 00:00:00,15:35:00,NV641,I,320,2018-01-20 00:00:00,16:40:00,NV6736,D,OHP,EMD,0,2018-01-20 15:35:00,2018-01-20 16:40:00,1,0,0,1,2018-01-20 15:35:00,2018-01-20 17:25:00,2018-01-20 17:25:00,935,1045,187,209 129 | PK318,2018-01-20 00:00:00,15:40:00,GN965,I,73H,2018-01-20 00:00:00,18:30:00,GN964,I,CLL,CLL,0,2018-01-20 15:40:00,2018-01-20 18:30:00,1,0,1,0,2018-01-20 15:40:00,2018-01-20 19:15:00,2018-01-20 19:15:00,940,1155,188,231 130 | PK319,2018-01-20 00:00:00,15:45:00,NV302,D,320,2018-01-20 00:00:00,17:15:00,NV302,I,YJZ,OHP,0,2018-01-20 15:45:00,2018-01-20 17:15:00,0,1,1,0,2018-01-20 15:45:00,2018-01-20 18:00:00,2018-01-20 18:00:00,945,1080,189,216 131 | PK320,2018-01-20 00:00:00,15:55:00,GN0549,D,73E,2018-01-20 00:00:00,17:30:00,GN0404,D,CBW,ETO,0,2018-01-20 15:55:00,2018-01-20 17:30:00,0,1,0,1,2018-01-20 15:55:00,2018-01-20 18:15:00,2018-01-20 18:15:00,955,1095,191,219 132 | PK321,2018-01-20 00:00:00,15:55:00,GN937,I,73A,2018-01-20 00:00:00,17:00:00,GN0246,D,UPZ,CBW,0,2018-01-20 15:55:00,2018-01-20 17:00:00,1,0,0,1,2018-01-20 15:55:00,2018-01-20 17:45:00,2018-01-20 17:45:00,955,1065,191,213 133 | PK322,2018-01-20 00:00:00,15:55:00,NV627,I,73E,2018-01-20 00:00:00,19:15:00,NV3787,D,LJY,ZJI,0,2018-01-20 15:55:00,2018-01-20 19:15:00,1,0,0,1,2018-01-20 15:55:00,2018-01-20 20:00:00,2018-01-20 20:00:00,955,1200,191,240 134 | PK323,2018-01-20 00:00:00,15:55:00,NV6657,D,323,2018-01-20 00:00:00,17:05:00,NV6462,D,ZOU,TAY,0,2018-01-20 15:55:00,2018-01-20 17:05:00,0,1,0,1,2018-01-20 15:55:00,2018-01-20 17:50:00,2018-01-20 17:50:00,955,1070,191,214 135 | PK324,2018-01-20 00:00:00,15:55:00,NV813,I,325,2018-01-20 00:00:00,17:30:00,NV6162,I,ILH,JDO,0,2018-01-20 15:55:00,2018-01-20 17:30:00,1,0,1,0,2018-01-20 15:55:00,2018-01-20 18:15:00,2018-01-20 18:15:00,955,1095,191,219 136 | PK325,2018-01-20 00:00:00,16:05:00,NV6715,D,320,2018-01-20 00:00:00,17:40:00,NV6710,D,TIF,IJB,0,2018-01-20 16:05:00,2018-01-20 17:40:00,0,1,0,1,2018-01-20 16:05:00,2018-01-20 18:25:00,2018-01-20 18:25:00,965,1105,193,221 137 | PK326,2018-01-20 00:00:00,16:15:00,NV3260,D,320,2018-01-20 00:00:00,18:05:00,NV3277,D,YJZ,YJZ,0,2018-01-20 16:15:00,2018-01-20 18:05:00,0,1,0,1,2018-01-20 16:15:00,2018-01-20 18:50:00,2018-01-20 18:50:00,975,1130,195,226 138 | PK327,2018-01-20 00:00:00,16:20:00,NV6377,D,325,2018-01-20 00:00:00,18:30:00,NV834,I,CIZ,ILH,0,2018-01-20 16:20:00,2018-01-20 18:30:00,0,1,1,0,2018-01-20 16:20:00,2018-01-20 19:15:00,2018-01-20 19:15:00,980,1155,196,231 139 | PK328,2018-01-20 00:00:00,16:20:00,NV683,I,33L,2018-01-21 00:00:00, 7:55,NV380,I,IOM,DUT,1,2018-01-20 16:20:00,2018-01-21 07:55:00,1,0,1,0,2018-01-20 16:20:00,2018-01-21 08:40:00,2018-01-20 23:55:00,980,1435,196,287 140 | PK329,2018-01-20 00:00:00,16:30:00,NV3197,I,320,2018-01-20 00:00:00,17:35:00,NV6726,D,PLB,ZLI,0,2018-01-20 16:30:00,2018-01-20 17:35:00,1,0,0,1,2018-01-20 16:30:00,2018-01-20 18:20:00,2018-01-20 18:20:00,990,1100,198,220 141 | PK330,2018-01-20 00:00:00,16:30:00,NV3702,D,73H,2018-01-20 00:00:00,18:00:00,NV3702,I,XVI,OHP,0,2018-01-20 16:30:00,2018-01-20 18:00:00,0,1,1,0,2018-01-20 16:30:00,2018-01-20 18:45:00,2018-01-20 18:45:00,990,1125,198,225 142 | PK331,2018-01-20 00:00:00,16:30:00,NV663,I,33H,2018-01-20 00:00:00,20:05:00,NV6588,D,MIS,LNH,1,2018-01-20 16:30:00,2018-01-20 20:05:00,1,0,0,1,2018-01-20 16:30:00,2018-01-20 20:50:00,2018-01-20 20:50:00,990,1250,198,250 143 | PK332,2018-01-20 00:00:00,16:35:00,NV304,D,319,2018-01-20 00:00:00,17:40:00,NV304,I,DUV,IJK,0,2018-01-20 16:35:00,2018-01-20 17:40:00,0,1,1,0,2018-01-20 16:35:00,2018-01-20 18:25:00,2018-01-20 18:25:00,995,1105,199,221 144 | PK333,2018-01-20 00:00:00,16:35:00,NV635,I,773,2018-01-20 00:00:00,20:00:00,NV308,I,OSU,KGL,1,2018-01-20 16:35:00,2018-01-20 20:00:00,1,0,1,0,2018-01-20 16:35:00,2018-01-20 20:45:00,2018-01-20 20:45:00,995,1245,199,249 145 | PK334,2018-01-20 00:00:00,16:40:00,NV307,I,319,2018-01-20 00:00:00,17:35:00,NV638,I,LJK,PLK,0,2018-01-20 16:40:00,2018-01-20 17:35:00,1,0,1,0,2018-01-20 16:40:00,2018-01-20 18:20:00,2018-01-20 18:20:00,1000,1100,200,220 146 | PK335,2018-01-20 00:00:00,16:50:00,GN0637,D,738,2018-01-20 00:00:00,17:55:00,GN0636,D,XOA,XOA,0,2018-01-20 16:50:00,2018-01-20 17:55:00,0,1,0,1,2018-01-20 16:50:00,2018-01-20 18:40:00,2018-01-20 18:40:00,1010,1120,202,224 147 | PK336,2018-01-20 00:00:00,16:55:00,NV391,I,33L,2018-01-21 00:00:00,13:40:00,NV342,I,DUT,DNC,1,2018-01-20 16:55:00,2018-01-21 13:40:00,1,0,1,0,2018-01-20 16:55:00,2018-01-21 14:25:00,2018-01-20 23:55:00,1015,1435,203,287 148 | PK337,2018-01-20 00:00:00,16:55:00,NV6717,D,320,2018-01-20 00:00:00,18:10:00,NV642,I,INJ,GVL,0,2018-01-20 16:55:00,2018-01-20 18:10:00,0,1,1,0,2018-01-20 16:55:00,2018-01-20 18:55:00,2018-01-20 18:55:00,1015,1135,203,227 149 | PK338,2018-01-20 00:00:00,16:55:00,NV693,I,33H,2018-01-21 00:00:00, 0:15,NV882,I,ZWS,BNT,1,2018-01-20 16:55:00,2018-01-21 00:15:00,1,0,1,0,2018-01-20 16:55:00,2018-01-21 01:00:00,2018-01-20 23:55:00,1015,1435,203,287 150 | PK339,2018-01-20 00:00:00,17:00:00,*****,D,738,2018-01-20 00:00:00,17:50:00,GN0332,D,***,MIX,0,2018-01-20 17:00:00,2018-01-20 17:50:00,0,1,0,1,2018-01-20 17:00:00,2018-01-20 18:35:00,2018-01-20 18:35:00,1020,1115,204,223 151 | PK340,2018-01-20 00:00:00,17:10:00,NV6119,I,33E,2018-01-21 00:00:00,12:30:00,NV898,I,UQF,GDP,1,2018-01-20 17:10:00,2018-01-21 12:30:00,1,0,1,0,2018-01-20 17:10:00,2018-01-21 13:15:00,2018-01-20 23:55:00,1030,1435,206,287 152 | PK341,2018-01-20 00:00:00,17:20:00,GN0299,D,738,2018-01-20 00:00:00,18:20:00,GN976,I,TIF,LCW,0,2018-01-20 17:20:00,2018-01-20 18:20:00,0,1,1,0,2018-01-20 17:20:00,2018-01-20 19:05:00,2018-01-20 19:05:00,1040,1145,208,229 153 | PK342,2018-01-20 00:00:00,17:20:00,GN0333,D,738,2018-01-21 00:00:00,15:50:00,GN0326,D,MIX,AVI,0,2018-01-20 17:20:00,2018-01-21 15:50:00,0,1,0,1,2018-01-20 17:20:00,2018-01-21 16:35:00,2018-01-20 23:55:00,1040,1435,208,287 154 | PK343,2018-01-20 00:00:00,17:30:00,NV6145,I,325,2018-01-21 00:00:00, 9:15,NV6152,I,JDO,JDO,0,2018-01-20 17:30:00,2018-01-21 09:15:00,1,0,1,0,2018-01-20 17:30:00,2018-01-21 10:00:00,2018-01-20 23:55:00,1050,1435,210,287 155 | PK344,2018-01-20 00:00:00,17:30:00,NV619,I,325,2018-01-20 00:00:00,18:40:00,NV624,I,ILH,SFQ,0,2018-01-20 17:30:00,2018-01-20 18:40:00,1,0,1,0,2018-01-20 17:30:00,2018-01-20 19:25:00,2018-01-20 19:25:00,1050,1165,210,233 156 | PK345,2018-01-20 00:00:00,17:35:00,GN0209,D,73A,2018-01-20 00:00:00,21:00:00,GN0494,D,BPH,OOH,0,2018-01-20 17:35:00,2018-01-20 21:00:00,0,1,0,1,2018-01-20 17:35:00,2018-01-20 21:45:00,2018-01-20 21:45:00,1055,1305,211,261 157 | PK346,2018-01-20 00:00:00,17:40:00,NV6301,D,325,2018-01-20 00:00:00,20:55:00,NV6720,D,AVI,ISC,0,2018-01-20 17:40:00,2018-01-20 20:55:00,0,1,0,1,2018-01-20 17:40:00,2018-01-20 21:40:00,2018-01-20 21:40:00,1060,1300,212,260 158 | PK347,2018-01-20 00:00:00,17:50:00,NV697,I,773,2018-01-20 00:00:00,21:00:00,NV688,I,MBY,MBY,1,2018-01-20 17:50:00,2018-01-20 21:00:00,1,0,1,0,2018-01-20 17:50:00,2018-01-20 21:45:00,2018-01-20 21:45:00,1070,1305,214,261 159 | PK348,2018-01-20 00:00:00,18:00:00,NV3786,D,73E,2018-01-20 00:00:00,19:30:00,NV3631,D,ZJI,XVI,0,2018-01-20 18:00:00,2018-01-20 19:30:00,0,1,0,1,2018-01-20 18:00:00,2018-01-20 20:15:00,2018-01-20 20:15:00,1080,1215,216,243 160 | PK349,2018-01-20 00:00:00,18:00:00,NV601,I,773,2018-01-21 00:00:00, 0:20,NV840,I,TGP,NFM,1,2018-01-20 18:00:00,2018-01-21 00:20:00,1,0,1,0,2018-01-20 18:00:00,2018-01-21 01:05:00,2018-01-20 23:55:00,1080,1435,216,287 161 | PK350,2018-01-20 00:00:00,18:10:00,GN0461,D,73H,2018-01-20 00:00:00,19:30:00,GN972,I,LXM,LVM,0,2018-01-20 18:10:00,2018-01-20 19:30:00,0,1,1,0,2018-01-20 18:10:00,2018-01-20 20:15:00,2018-01-20 20:15:00,1090,1215,218,243 162 | PK351,2018-01-20 00:00:00,18:15:00,NV3131,I,73H,2018-01-20 00:00:00,19:45:00,NV3131,D,GTA,XVI,0,2018-01-20 18:15:00,2018-01-20 19:45:00,1,0,0,1,2018-01-20 18:15:00,2018-01-20 20:30:00,2018-01-20 20:30:00,1095,1230,219,246 163 | PK352,2018-01-20 00:00:00,18:20:00,NV6489,D,33L,2018-01-20 00:00:00,20:40:00,NV658,I,TZY,CLL,1,2018-01-20 18:20:00,2018-01-20 20:40:00,0,1,1,0,2018-01-20 18:20:00,2018-01-20 21:25:00,2018-01-20 21:25:00,1100,1285,220,257 164 | PK353,2018-01-20 00:00:00,18:20:00,NV831,I,320,2018-01-20 00:00:00,19:35:00,NV831,D,OHP,MIX,0,2018-01-20 18:20:00,2018-01-20 19:35:00,1,0,0,1,2018-01-20 18:20:00,2018-01-20 20:20:00,2018-01-20 20:20:00,1100,1220,220,244 165 | PK354,2018-01-20 00:00:00,18:25:00,NV615,I,325,2018-01-20 00:00:00,21:00:00,NV6312,D,ILH,IBL,0,2018-01-20 18:25:00,2018-01-20 21:00:00,1,0,0,1,2018-01-20 18:25:00,2018-01-20 21:45:00,2018-01-20 21:45:00,1105,1305,221,261 166 | PK355,2018-01-20 00:00:00,18:30:00,NV3421,D,319,2018-01-20 00:00:00,19:35:00,NV3410,D,YOO,YOO,0,2018-01-20 18:30:00,2018-01-20 19:35:00,0,1,0,1,2018-01-20 18:30:00,2018-01-20 20:20:00,2018-01-20 20:20:00,1110,1220,222,244 167 | PK356,2018-01-20 00:00:00,18:30:00,NV6525,D,325,2018-01-20 00:00:00,21:25:00,NV6472,D,DUV,TAY,0,2018-01-20 18:30:00,2018-01-20 21:25:00,0,1,0,1,2018-01-20 18:30:00,2018-01-20 22:10:00,2018-01-20 22:10:00,1110,1330,222,266 168 | PK357,2018-01-20 00:00:00,18:35:00,NV6739,D,320,2018-01-21 00:00:00, 7:45,NV6738,D,EMD,EMD,0,2018-01-20 18:35:00,2018-01-21 07:45:00,0,1,0,1,2018-01-20 18:35:00,2018-01-21 08:30:00,2018-01-20 23:55:00,1115,1435,223,287 169 | PK358,2018-01-20 00:00:00,18:40:00,GN941,I,73H,2018-01-20 00:00:00,19:45:00,GN978,I,QVT,CLJ,0,2018-01-20 18:40:00,2018-01-20 19:45:00,1,0,1,0,2018-01-20 18:40:00,2018-01-20 20:30:00,2018-01-20 20:30:00,1120,1230,224,246 170 | PK359,2018-01-20 00:00:00,18:45:00,NV399,I,320,2018-01-20 00:00:00,19:50:00,NV6784,D,PLB,EMD,0,2018-01-20 18:45:00,2018-01-20 19:50:00,1,0,0,1,2018-01-20 18:45:00,2018-01-20 20:35:00,2018-01-20 20:35:00,1125,1235,225,247 171 | PK360,2018-01-20 00:00:00,18:50:00,GN0465,D,738,2018-01-20 00:00:00,20:05:00,GN0452,D,XFI,EZH,0,2018-01-20 18:50:00,2018-01-20 20:05:00,0,1,0,1,2018-01-20 18:50:00,2018-01-20 20:50:00,2018-01-20 20:50:00,1130,1250,226,250 172 | PK361,2018-01-20 00:00:00,18:50:00,GN951,I,73H,2018-01-20 00:00:00,20:00:00,GN968,I,CLL,ILU,0,2018-01-20 18:50:00,2018-01-20 20:00:00,1,0,1,0,2018-01-20 18:50:00,2018-01-20 20:45:00,2018-01-20 20:45:00,1130,1245,226,249 173 | PK362,2018-01-20 00:00:00,18:50:00,NV3622,D,319,2018-01-20 00:00:00,20:00:00,NV6486,D,XVI,EZH,0,2018-01-20 18:50:00,2018-01-20 20:00:00,0,1,0,1,2018-01-20 18:50:00,2018-01-20 20:45:00,2018-01-20 20:45:00,1130,1245,226,249 174 | PK363,2018-01-20 00:00:00,18:50:00,NV829,I,773,2018-01-21 00:00:00,0:05:00,NV664,I,PSE,DEH,1,2018-01-20 18:50:00,2018-01-21 00:05:00,1,0,1,0,2018-01-20 18:50:00,2018-01-21 00:50:00,2018-01-20 23:55:00,1130,1435,226,287 175 | PK364,2018-01-20 00:00:00,18:55:00,GN0287,D,738,2018-01-20 00:00:00,21:10:00,GN0287,D,DHR,LXM,0,2018-01-20 18:55:00,2018-01-20 21:10:00,0,1,0,1,2018-01-20 18:55:00,2018-01-20 21:55:00,2018-01-20 21:55:00,1135,1315,227,263 176 | PK365,2018-01-20 00:00:00,18:55:00,NV6663,D,320,2018-01-20 00:00:00,20:00:00,NV860,I,MZJ,QOI,0,2018-01-20 18:55:00,2018-01-20 20:00:00,0,1,1,0,2018-01-20 18:55:00,2018-01-20 20:45:00,2018-01-20 20:45:00,1135,1245,227,249 177 | PK366,2018-01-20 00:00:00,18:55:00,NV859,I,73H,2018-01-20 00:00:00,21:00:00,NV859,D,LJY,LNH,0,2018-01-20 18:55:00,2018-01-20 21:00:00,1,0,0,1,2018-01-20 18:55:00,2018-01-20 21:45:00,2018-01-20 21:45:00,1135,1305,227,261 178 | PK367,2018-01-20 00:00:00,19:10:00,GN0641,D,738,2018-01-20 00:00:00,21:20:00,GN0428,D,XOA,DBO,0,2018-01-20 19:10:00,2018-01-20 21:20:00,0,1,0,1,2018-01-20 19:10:00,2018-01-20 22:05:00,2018-01-20 22:05:00,1150,1325,230,265 179 | PK368,2018-01-20 00:00:00,19:15:00,NV3119,I,321,2018-01-20 00:00:00,21:15:00,NV6297,D,NGN,QFL,0,2018-01-20 19:15:00,2018-01-20 21:15:00,1,0,0,1,2018-01-20 19:15:00,2018-01-20 22:00:00,2018-01-20 22:00:00,1155,1320,231,264 180 | PK369,2018-01-20 00:00:00,19:15:00,NV6714,D,320,2018-01-20 00:00:00,21:25:00,NV6714,D,AIB,TIF,0,2018-01-20 19:15:00,2018-01-20 21:25:00,0,1,0,1,2018-01-20 19:15:00,2018-01-20 22:10:00,2018-01-20 22:10:00,1155,1330,231,266 181 | PK370,2018-01-20 00:00:00,19:20:00,NV319,I,773,2018-01-21 00:00:00,0:05:00,NV846,I,ZZA,TZE,1,2018-01-20 19:20:00,2018-01-21 00:05:00,1,0,1,0,2018-01-20 19:20:00,2018-01-21 00:50:00,2018-01-20 23:55:00,1160,1435,232,287 182 | PK371,2018-01-20 00:00:00,19:20:00,NV337,I,320,2018-01-20 00:00:00,23:10:00,NV6156,I,LJY,DSL,0,2018-01-20 19:20:00,2018-01-20 23:10:00,1,0,1,0,2018-01-20 19:20:00,2018-01-20 23:55:00,2018-01-20 23:55:00,1160,1435,232,287 183 | PK372,2018-01-20 00:00:00,19:30:00,NV6199,I,73E,2018-01-20 00:00:00,21:30:00,NV3655,D,GVL,XVI,0,2018-01-20 19:30:00,2018-01-20 21:30:00,1,0,0,1,2018-01-20 19:30:00,2018-01-20 22:15:00,2018-01-20 22:15:00,1170,1335,234,267 184 | PK373,2018-01-20 00:00:00,19:30:00,NV673,I,33E,2018-01-21 00:00:00, 0:10,NV320,I,TZE,GSB,1,2018-01-20 19:30:00,2018-01-21 00:10:00,1,0,1,0,2018-01-20 19:30:00,2018-01-21 00:55:00,2018-01-20 23:55:00,1170,1435,234,287 185 | PK374,2018-01-20 00:00:00,19:30:00,NV699,I,773,2018-01-20 00:00:00,21:40:00,NV699,D,KGL,GPD,1,2018-01-20 19:30:00,2018-01-20 21:40:00,1,0,0,1,2018-01-20 19:30:00,2018-01-20 22:25:00,2018-01-20 22:25:00,1170,1345,234,269 186 | PK375,2018-01-20 00:00:00,19:35:00,NV633,I,325,2018-01-20 00:00:00,21:05:00,NV633,D,OSU,YJZ,0,2018-01-20 19:35:00,2018-01-20 21:05:00,1,0,0,1,2018-01-20 19:35:00,2018-01-20 21:50:00,2018-01-20 21:50:00,1175,1310,235,262 187 | PK376,2018-01-20 00:00:00,19:40:00,NV6763,D,320,2018-01-20 00:00:00,21:05:00,NV6544,D,ZOK,DLH,0,2018-01-20 19:40:00,2018-01-20 21:05:00,0,1,0,1,2018-01-20 19:40:00,2018-01-20 21:50:00,2018-01-20 21:50:00,1180,1310,236,262 188 | PK377,2018-01-20 00:00:00,19:40:00,NV849,I,33E,2018-01-20 00:00:00,23:30:00,NV654,I,NFM,TJO,1,2018-01-20 19:40:00,2018-01-20 23:30:00,1,0,1,0,2018-01-20 19:40:00,2018-01-21 00:15:00,2018-01-20 23:55:00,1180,1435,236,287 189 | PK378,2018-01-20 00:00:00,19:50:00,NV6753,D,319,2018-01-20 00:00:00,21:10:00,NV836,I,EMD,ILH,0,2018-01-20 19:50:00,2018-01-20 21:10:00,0,1,1,0,2018-01-20 19:50:00,2018-01-20 21:55:00,2018-01-20 21:55:00,1190,1315,238,263 190 | PK379,2018-01-20 00:00:00,20:00:00,GN939,I,73H,2018-01-20 00:00:00,21:05:00,GN0300,D,JDO,TXB,0,2018-01-20 20:00:00,2018-01-20 21:05:00,1,0,0,1,2018-01-20 20:00:00,2018-01-20 21:50:00,2018-01-20 21:50:00,1200,1310,240,262 191 | PK380,2018-01-20 00:00:00,20:00:00,NV6324,D,73E,2018-01-20 00:00:00,21:00:00,NV6325,D,UZO,UZO,0,2018-01-20 20:00:00,2018-01-20 21:00:00,0,1,0,1,2018-01-20 20:00:00,2018-01-20 21:45:00,2018-01-20 21:45:00,1200,1305,240,261 192 | PK381,2018-01-20 00:00:00,20:00:00,NV6527,D,320,2018-01-20 00:00:00,21:30:00,NV6528,D,DUV,DUV,0,2018-01-20 20:00:00,2018-01-20 21:30:00,0,1,0,1,2018-01-20 20:00:00,2018-01-20 22:15:00,2018-01-20 22:15:00,1200,1335,240,267 193 | PK382,2018-01-20 00:00:00,20:00:00,NV827,I,33E,2018-01-20 00:00:00,21:55:00,NV826,I,COF,COF,1,2018-01-20 20:00:00,2018-01-20 21:55:00,1,0,1,0,2018-01-20 20:00:00,2018-01-20 22:40:00,2018-01-20 22:40:00,1200,1360,240,272 194 | PK383,2018-01-20 00:00:00,20:05:00,GN0205,D,73A,2018-01-20 00:00:00,21:35:00,GN0560,D,TIF,LXF,0,2018-01-20 20:05:00,2018-01-20 21:35:00,0,1,0,1,2018-01-20 20:05:00,2018-01-20 22:20:00,2018-01-20 22:20:00,1205,1340,241,268 195 | PK384,2018-01-20 00:00:00,20:10:00,GN0237,D,73H,2018-01-21 00:00:00, 9:10,GN912,I,SJA,UTB,0,2018-01-20 20:10:00,2018-01-21 09:10:00,0,1,1,0,2018-01-20 20:10:00,2018-01-21 09:55:00,2018-01-20 23:55:00,1210,1435,242,287 196 | PK385,2018-01-20 00:00:00,20:10:00,GN0261,D,73H,2018-01-20 00:00:00,21:05:00,GN0260,D,YNO,DHR,0,2018-01-20 20:10:00,2018-01-20 21:05:00,0,1,0,1,2018-01-20 20:10:00,2018-01-20 21:50:00,2018-01-20 21:50:00,1210,1310,242,262 197 | PK386,2018-01-20 00:00:00,20:10:00,NV621,I,325,2018-01-21 00:00:00, 1:50,NV322,I,ILH,NOM,0,2018-01-20 20:10:00,2018-01-21 01:50:00,1,0,1,0,2018-01-20 20:10:00,2018-01-21 02:35:00,2018-01-20 23:55:00,1210,1435,242,287 198 | PK387,2018-01-20 00:00:00,20:10:00,NV6317,D,319,2018-01-21 00:00:00, 8:15,NV6358,D,ITO,EBU,0,2018-01-20 20:10:00,2018-01-21 08:15:00,0,1,0,1,2018-01-20 20:10:00,2018-01-21 09:00:00,2018-01-20 23:55:00,1210,1435,242,287 199 | PK388,2018-01-20 00:00:00,20:15:00,NV6551,D,319,2018-01-20 00:00:00,21:05:00,*****,D,UTO,***,0,2018-01-20 20:15:00,2018-01-20 21:05:00,0,1,0,1,2018-01-20 20:15:00,2018-01-20 21:50:00,2018-01-20 21:50:00,1215,1310,243,262 200 | PK389,2018-01-20 00:00:00,20:15:00,NV6725,D,320,2018-01-21 00:00:00, 8:20,NV6724,D,ISC,ISC,0,2018-01-20 20:15:00,2018-01-21 08:20:00,0,1,0,1,2018-01-20 20:15:00,2018-01-21 09:05:00,2018-01-20 23:55:00,1215,1435,243,287 201 | PK390,2018-01-20 00:00:00,20:20:00,NV6549,D,319,2018-01-21 00:00:00, 8:25,NV6548,D,OBP,OBP,0,2018-01-20 20:20:00,2018-01-21 08:25:00,0,1,0,1,2018-01-20 20:20:00,2018-01-21 09:10:00,2018-01-20 23:55:00,1220,1435,244,287 202 | PK391,2018-01-20 00:00:00,20:25:00,NV317,I,320,2018-01-21 00:00:00, 0:15,NV6134,I,DOY,DFC,0,2018-01-20 20:25:00,2018-01-21 00:15:00,1,0,1,0,2018-01-20 20:25:00,2018-01-21 01:00:00,2018-01-20 23:55:00,1225,1435,245,287 203 | PK392,2018-01-20 00:00:00,20:25:00,NV3278,D,325,2018-01-21 00:00:00, 6:40,NV3446,D,YJZ,YJZ,0,2018-01-20 20:25:00,2018-01-21 06:40:00,0,1,0,1,2018-01-20 20:25:00,2018-01-21 07:25:00,2018-01-20 23:55:00,1225,1435,245,287 204 | PK393,2018-01-20 00:00:00,20:30:00,NV6117,I,325,2018-01-21 00:00:00,9:00:00,NV6230,D,UQF,QFL,0,2018-01-20 20:30:00,2018-01-21 09:00:00,1,0,0,1,2018-01-20 20:30:00,2018-01-21 09:45:00,2018-01-20 23:55:00,1230,1435,246,287 205 | PK394,2018-01-20 00:00:00,20:30:00,NV6578,D,325,2018-01-21 00:00:00,9:00:00,NV6532,D,TZY,DLH,0,2018-01-20 20:30:00,2018-01-21 09:00:00,0,1,0,1,2018-01-20 20:30:00,2018-01-21 09:45:00,2018-01-20 23:55:00,1230,1435,246,287 206 | PK395,2018-01-20 00:00:00,20:30:00,NV6772,D,325,2018-01-20 00:00:00,22:05:00,NV6772,D,GPD,EMD,0,2018-01-20 20:30:00,2018-01-20 22:05:00,0,1,0,1,2018-01-20 20:30:00,2018-01-20 22:50:00,2018-01-20 22:50:00,1230,1370,246,274 207 | PK396,2018-01-20 00:00:00,20:40:00,*****,D,319,2018-01-20 00:00:00,21:30:00,NV6478,D,***,DTY,0,2018-01-20 20:40:00,2018-01-20 21:30:00,0,1,0,1,2018-01-20 20:40:00,2018-01-20 22:15:00,2018-01-20 22:15:00,1240,1335,248,267 208 | PK397,2018-01-20 00:00:00,21:00:00,NV6495,D,320,2018-01-21 00:00:00,8:00:00,NV6154,I,AZJ,QVT,0,2018-01-20 21:00:00,2018-01-21 08:00:00,0,1,1,0,2018-01-20 21:00:00,2018-01-21 08:45:00,2018-01-20 23:55:00,1260,1435,252,287 209 | PK398,2018-01-20 00:00:00,21:00:00,NV6633,D,320,2018-01-20 00:00:00,22:10:00,NV6632,D,UBP,UBP,0,2018-01-20 21:00:00,2018-01-20 22:10:00,0,1,0,1,2018-01-20 21:00:00,2018-01-20 22:55:00,2018-01-20 22:55:00,1260,1375,252,275 210 | PK399,2018-01-20 00:00:00,21:00:00,NV6811,D,320,2018-01-20 00:00:00,22:20:00,NV6811,D,VSD,OHC,0,2018-01-20 21:00:00,2018-01-20 22:20:00,0,1,0,1,2018-01-20 21:00:00,2018-01-20 23:05:00,2018-01-20 23:05:00,1260,1385,252,277 211 | PK400,2018-01-20 00:00:00,21:05:00,NV651,I,33H,2018-01-21 00:00:00,12:25:00,NV670,I,IOE,DEH,1,2018-01-20 21:05:00,2018-01-21 12:25:00,1,0,1,0,2018-01-20 21:05:00,2018-01-21 13:10:00,2018-01-20 23:55:00,1265,1435,253,287 212 | PK401,2018-01-20 00:00:00,21:05:00,NV6642,D,320,2018-01-20 00:00:00,22:20:00,NV6642,D,TIF,LIO,0,2018-01-20 21:05:00,2018-01-20 22:20:00,0,1,0,1,2018-01-20 21:05:00,2018-01-20 23:05:00,2018-01-20 23:05:00,1265,1385,253,277 213 | PK402,2018-01-20 00:00:00,21:10:00,NV6643,D,320,2018-01-20 00:00:00,22:00:00,NV392,I,LIO,THO,0,2018-01-20 21:10:00,2018-01-20 22:00:00,0,1,1,0,2018-01-20 21:10:00,2018-01-20 22:45:00,2018-01-20 22:45:00,1270,1365,254,273 214 | PK403,2018-01-20 00:00:00,21:15:00,GN0409,D,738,2018-01-20 00:00:00,22:40:00,GN0368,D,DTY,YNO,0,2018-01-20 21:15:00,2018-01-20 22:40:00,0,1,0,1,2018-01-20 21:15:00,2018-01-20 23:25:00,2018-01-20 23:25:00,1275,1405,255,281 215 | PK404,2018-01-20 00:00:00,21:15:00,GN933,I,738,2018-01-21 00:00:00, 6:40,GN0480,D,LJY,LXM,0,2018-01-20 21:15:00,2018-01-21 06:40:00,1,0,0,1,2018-01-20 21:15:00,2018-01-21 07:25:00,2018-01-20 23:55:00,1275,1435,255,287 216 | PK405,2018-01-20 00:00:00,21:15:00,NV6505,D,319,2018-01-21 00:00:00, 9:30,NV668,I,DLH,LNR,0,2018-01-20 21:15:00,2018-01-21 09:30:00,0,1,1,0,2018-01-20 21:15:00,2018-01-21 10:15:00,2018-01-20 23:55:00,1275,1435,255,287 217 | PK406,2018-01-20 00:00:00,21:20:00,GN0629,D,738,2018-01-20 00:00:00,22:20:00,GN0620,D,XOA,XOA,0,2018-01-20 21:20:00,2018-01-20 22:20:00,0,1,0,1,2018-01-20 21:20:00,2018-01-20 23:05:00,2018-01-20 23:05:00,1280,1385,256,277 218 | PK407,2018-01-20 00:00:00,21:20:00,NV6653,D,320,2018-01-20 00:00:00,22:30:00,NV6652,D,UOB,UOB,0,2018-01-20 21:20:00,2018-01-20 22:30:00,0,1,0,1,2018-01-20 21:20:00,2018-01-20 23:15:00,2018-01-20 23:15:00,1280,1395,256,279 219 | PK408,2018-01-20 00:00:00,21:20:00,NV6699,D,321,2018-01-21 00:00:00, 8:55,NV6616,D,GPD,GPD,0,2018-01-20 21:20:00,2018-01-21 08:55:00,0,1,0,1,2018-01-20 21:20:00,2018-01-21 09:40:00,2018-01-20 23:55:00,1280,1435,256,287 220 | PK409,2018-01-20 00:00:00,21:30:00,GN997,I,73H,2018-01-20 00:00:00,22:30:00,GN952,I,LVM,CLL,0,2018-01-20 21:30:00,2018-01-20 22:30:00,1,0,1,0,2018-01-20 21:30:00,2018-01-20 23:15:00,2018-01-20 23:15:00,1290,1395,258,279 221 | PK410,2018-01-20 00:00:00,21:30:00,NV6733,D,320,2018-01-21 00:00:00, 6:40,NV6748,D,EMD,IEH,0,2018-01-20 21:30:00,2018-01-21 06:40:00,0,1,0,1,2018-01-20 21:30:00,2018-01-21 07:25:00,2018-01-20 23:55:00,1290,1435,258,287 222 | PK411,2018-01-20 00:00:00,21:30:00,NV679,I,33E,2018-01-21 00:00:00, 9:20,NV678,I,TJO,TJO,1,2018-01-20 21:30:00,2018-01-21 09:20:00,1,0,1,0,2018-01-20 21:30:00,2018-01-21 10:05:00,2018-01-20 23:55:00,1290,1435,258,287 223 | PK412,2018-01-20 00:00:00,21:40:00,NV6241,D,323,2018-01-21 00:00:00,9:05:00,NV6446,D,QFL,TAY,0,2018-01-20 21:40:00,2018-01-21 09:05:00,0,1,0,1,2018-01-20 21:40:00,2018-01-21 09:50:00,2018-01-20 23:55:00,1300,1435,260,287 224 | PK413,2018-01-20 00:00:00,21:45:00,GN0455,D,738,2018-01-20 00:00:00,22:45:00,GN933,D,EZH,DHP,0,2018-01-20 21:45:00,2018-01-20 22:45:00,0,1,0,1,2018-01-20 21:45:00,2018-01-20 23:30:00,2018-01-20 23:30:00,1305,1410,261,282 225 | PK414,2018-01-20 00:00:00,21:45:00,NV6737,D,320,2018-01-20 00:00:00,22:50:00,NV3993,D,EMD,OLH,0,2018-01-20 21:45:00,2018-01-20 22:50:00,0,1,0,1,2018-01-20 21:45:00,2018-01-20 23:35:00,2018-01-20 23:35:00,1305,1415,261,283 226 | PK415,2018-01-20 00:00:00,21:50:00,NV6319,D,73E,2018-01-20 00:00:00,22:50:00,NV3652,D,MAI,DBO,0,2018-01-20 21:50:00,2018-01-20 22:50:00,0,1,0,1,2018-01-20 21:50:00,2018-01-20 23:35:00,2018-01-20 23:35:00,1310,1415,262,283 227 | PK416,2018-01-20 00:00:00,22:00:00,GN0257,D,73E,2018-01-21 00:00:00,8:00:00,GN0522,D,ZDV,NJH,0,2018-01-20 22:00:00,2018-01-21 08:00:00,0,1,0,1,2018-01-20 22:00:00,2018-01-21 08:45:00,2018-01-20 23:55:00,1320,1435,264,287 228 | PK417,2018-01-20 00:00:00,22:00:00,GN0541,D,738,2018-01-21 00:00:00, 8:30,GN0678,D,IOZ,DHP,0,2018-01-20 22:00:00,2018-01-21 08:30:00,0,1,0,1,2018-01-20 22:00:00,2018-01-21 09:15:00,2018-01-20 23:55:00,1320,1435,264,287 229 | PK418,2018-01-20 00:00:00,22:00:00,NV6405,D,320,2018-01-21 00:00:00, 8:30,NV6636,D,DHP,ZOU,0,2018-01-20 22:00:00,2018-01-21 08:30:00,0,1,0,1,2018-01-20 22:00:00,2018-01-21 09:15:00,2018-01-20 23:55:00,1320,1435,264,287 230 | PK419,2018-01-20 00:00:00,22:05:00,GN0489,D,73E,2018-01-21 00:00:00, 7:30,GN0282,D,LXM,ISC,0,2018-01-20 22:05:00,2018-01-21 07:30:00,0,1,0,1,2018-01-20 22:05:00,2018-01-21 08:15:00,2018-01-20 23:55:00,1325,1435,265,287 231 | PK420,2018-01-20 00:00:00,22:05:00,NV3270,D,321,2018-01-21 00:00:00,12:40:00,NV3118,I,YJZ,NGN,0,2018-01-20 22:05:00,2018-01-21 12:40:00,0,1,1,0,2018-01-20 22:05:00,2018-01-21 13:25:00,2018-01-20 23:55:00,1325,1435,265,287 232 | PK421,2018-01-20 00:00:00,22:10:00,GN945,I,73H,2018-01-21 00:00:00, 9:20,GN996,I,CLL,LVM,0,2018-01-20 22:10:00,2018-01-21 09:20:00,1,0,1,0,2018-01-20 22:10:00,2018-01-21 10:05:00,2018-01-20 23:55:00,1330,1435,266,287 233 | PK422,2018-01-20 00:00:00,22:25:00,GN0645,D,73L,2018-01-20 00:00:00,23:15:00,*****,D,YNO,***,0,2018-01-20 22:25:00,2018-01-20 23:15:00,0,1,0,1,2018-01-20 22:25:00,2018-01-21 00:00:00,2018-01-20 23:55:00,1345,1435,269,287 234 | PK423,2018-01-20 00:00:00,22:30:00,GN0291,D,325,2018-01-21 00:00:00, 8:45,GN0496,D,DHR,OOH,0,2018-01-20 22:30:00,2018-01-21 08:45:00,0,1,0,1,2018-01-20 22:30:00,2018-01-21 09:30:00,2018-01-20 23:55:00,1350,1435,270,287 235 | PK424,2018-01-20 00:00:00,22:30:00,GN0639,D,73H,2018-01-21 00:00:00, 7:35,GN0234,D,DBO,UWT,0,2018-01-20 22:30:00,2018-01-21 07:35:00,0,1,0,1,2018-01-20 22:30:00,2018-01-21 08:20:00,2018-01-20 23:55:00,1350,1435,270,287 236 | PK425,2018-01-20 00:00:00,22:30:00,NV6769,D,320,2018-01-21 00:00:00, 6:55,NV6252,D,IEH,MMW,0,2018-01-20 22:30:00,2018-01-21 06:55:00,0,1,0,1,2018-01-20 22:30:00,2018-01-21 07:40:00,2018-01-20 23:55:00,1350,1435,270,287 237 | PK426,2018-01-20 00:00:00,22:45:00,NV0747,D,323,2018-01-21 00:00:00,9:05:00,NV336,I,LXM,LJY,0,2018-01-20 22:45:00,2018-01-21 09:05:00,0,1,1,0,2018-01-20 22:45:00,2018-01-21 09:50:00,2018-01-20 23:55:00,1365,1435,273,287 238 | PK427,2018-01-20 00:00:00,22:50:00,NV617,I,320,2018-01-21 00:00:00,17:20:00,NV3273,D,ILH,YJZ,0,2018-01-20 22:50:00,2018-01-21 17:20:00,1,0,0,1,2018-01-20 22:50:00,2018-01-21 18:05:00,2018-01-20 23:55:00,1370,1435,274,287 239 | PK428,2018-01-20 00:00:00,22:50:00,NV6379,D,319,2018-01-21 00:00:00, 9:55,NV6202,D,ZCQ,ZDV,0,2018-01-20 22:50:00,2018-01-21 09:55:00,0,1,0,1,2018-01-20 22:50:00,2018-01-21 10:40:00,2018-01-20 23:55:00,1370,1435,274,287 240 | PK429,2018-01-20 00:00:00,22:55:00,NV6615,D,319,2018-01-21 00:00:00, 7:45,NV3615,D,HZT,XVI,0,2018-01-20 22:55:00,2018-01-21 07:45:00,0,1,0,1,2018-01-20 22:55:00,2018-01-21 08:30:00,2018-01-20 23:55:00,1375,1435,275,287 241 | PK430,2018-01-20 00:00:00,23:00:00,NV6557,D,73E,2018-01-21 00:00:00, 6:55,NV3286,D,LXF,ARA,0,2018-01-20 23:00:00,2018-01-21 06:55:00,0,1,0,1,2018-01-20 23:00:00,2018-01-21 07:40:00,2018-01-20 23:55:00,1380,1435,276,287 242 | PK431,2018-01-20 00:00:00,23:10:00,GN0285,D,738,2018-01-21 00:00:00,10:25:00,GN0628,D,KOH,XOA,0,2018-01-20 23:10:00,2018-01-21 10:25:00,0,1,0,1,2018-01-20 23:10:00,2018-01-21 11:10:00,2018-01-20 23:55:00,1390,1435,278,287 243 | PK432,2018-01-20 00:00:00,23:10:00,NV3464,D,320,2018-01-21 00:00:00, 8:35,NV612,I,MIX,ILH,0,2018-01-20 23:10:00,2018-01-21 08:35:00,0,1,1,0,2018-01-20 23:10:00,2018-01-21 09:20:00,2018-01-20 23:55:00,1390,1435,278,287 244 | PK433,2018-01-20 00:00:00,23:15:00,GN0363,D,73E,2018-01-21 00:00:00,9:00:00,GN0414,D,IBL,DBO,0,2018-01-20 23:15:00,2018-01-21 09:00:00,0,1,0,1,2018-01-20 23:15:00,2018-01-21 09:45:00,2018-01-20 23:55:00,1395,1435,279,287 245 | PK434,2018-01-20 00:00:00,23:20:00,NV3447,D,323,2018-01-21 00:00:00,10:15:00,NV6160,I,YJZ,DKV,0,2018-01-20 23:20:00,2018-01-21 10:15:00,0,1,1,0,2018-01-20 23:20:00,2018-01-21 11:00:00,2018-01-20 23:55:00,1400,1435,280,287 246 | PK435,2018-01-20 00:00:00,23:25:00,GN0447,D,738,2018-01-21 00:00:00, 8:50,GN0456,D,MGR,DHP,0,2018-01-20 23:25:00,2018-01-21 08:50:00,0,1,0,1,2018-01-20 23:25:00,2018-01-21 09:35:00,2018-01-20 23:55:00,1405,1435,281,287 247 | PK436,2018-01-20 00:00:00,23:25:00,NV6471,D,323,2018-01-21 00:00:00,10:20:00,NV6172,I,TAY,JDO,0,2018-01-20 23:25:00,2018-01-21 10:20:00,0,1,1,0,2018-01-20 23:25:00,2018-01-21 11:05:00,2018-01-20 23:55:00,1405,1435,281,287 248 | PK437,2018-01-20 00:00:00,23:30:00,NV3195,D,319,2018-01-21 00:00:00,9:05:00,NV6514,D,UTO,DUV,0,2018-01-20 23:30:00,2018-01-21 09:05:00,0,1,0,1,2018-01-20 23:30:00,2018-01-21 09:50:00,2018-01-20 23:55:00,1410,1435,282,287 249 | PK438,2018-01-20 00:00:00,23:40:00,GN0643,D,73E,2018-01-21 00:00:00,9:00:00,GN0478,D,IBL,TIF,0,2018-01-20 23:40:00,2018-01-21 09:00:00,0,1,0,1,2018-01-20 23:40:00,2018-01-21 09:45:00,2018-01-20 23:55:00,1420,1435,284,287 250 | PK439,2018-01-20 00:00:00,23:50:00,GN0247,D,73A,2018-01-21 00:00:00,9:05:00,GN0572,D,CBW,XYO,0,2018-01-20 23:50:00,2018-01-21 09:05:00,0,1,0,1,2018-01-20 23:50:00,2018-01-21 09:50:00,2018-01-20 23:55:00,1430,1435,286,287 251 | PK440,2018-01-20 00:00:00,23:55:00,GN0405,D,73E,2018-01-21 00:00:00, 9:25,GN0548,D,ETO,CBW,0,2018-01-20 23:55:00,2018-01-21 09:25:00,0,1,0,1,2018-01-20 23:55:00,2018-01-21 10:10:00,2018-01-20 23:55:00,1435,1435,287,287 252 | PK441,2018-01-20 00:00:00, 0:10,GN0349,D,73E,2018-01-20 00:00:00,15:50:00,GN0488,D,TZY,LXM,0,2018-01-20 00:10:00,2018-01-20 15:50:00,0,1,0,1,2018-01-20 00:10:00,2018-01-20 16:35:00,2018-01-20 16:35:00,10,995,2,199 253 | PK442,2018-01-20 00:00:00, 0:15,GN0401,D,738,2018-01-20 00:00:00, 8:30,GN0678,D,DHP,DHP,0,2018-01-20 00:15:00,2018-01-20 08:30:00,0,1,0,1,2018-01-20 00:15:00,2018-01-20 09:15:00,2018-01-20 09:15:00,15,555,3,111 254 | PK443,2018-01-20 00:00:00, 0:15,NV6723,D,323,2018-01-20 00:00:00, 7:50,NV6708,D,EMD,DHR,0,2018-01-20 00:15:00,2018-01-20 07:50:00,0,1,0,1,2018-01-20 00:15:00,2018-01-20 08:35:00,2018-01-20 08:35:00,15,515,3,103 255 | PK444,2018-01-20 00:00:00, 0:20,GN967,I,738,2018-01-20 00:00:00, 8:50,GN0456,D,CLL,DHP,0,2018-01-20 00:20:00,2018-01-20 08:50:00,1,0,0,1,2018-01-20 00:20:00,2018-01-20 09:35:00,2018-01-20 09:35:00,20,575,4,115 256 | PK445,2018-01-20 00:00:00, 0:25,NV6589,D,33H,2018-01-20 00:00:00,12:25:00,NV810,I,LNH,NBE,1,2018-01-20 00:25:00,2018-01-20 12:25:00,0,1,1,0,2018-01-20 00:25:00,2018-01-20 13:10:00,2018-01-20 13:10:00,25,790,5,158 257 | PK446,2018-01-20 00:00:00,0:05:00,GN0657,D,738,2018-01-20 00:00:00, 8:10,GN0454,D,XVU,EZH,0,2018-01-20 00:05:00,2018-01-20 08:10:00,0,1,0,1,2018-01-20 00:05:00,2018-01-20 08:55:00,2018-01-20 08:55:00,5,535,1,107 258 | PK447,2018-01-20 00:00:00, 1:30,NV6487,D,319,2018-01-20 00:00:00, 6:55,NV3615,D,EZH,XVI,0,2018-01-20 01:30:00,2018-01-20 06:55:00,0,1,0,1,2018-01-20 01:30:00,2018-01-20 07:40:00,2018-01-20 07:40:00,90,460,18,92 259 | PK448,2018-01-20 00:00:00, 1:35,GN0453,D,738,2018-01-20 00:00:00, 9:15,GN0630,D,EZH,XOA,0,2018-01-20 01:35:00,2018-01-20 09:15:00,0,1,0,1,2018-01-20 01:35:00,2018-01-20 10:00:00,2018-01-20 10:00:00,95,600,19,120 260 | PK449,2018-01-20 00:00:00, 4:10,NV677,I,33L,2018-01-20 00:00:00, 7:55,NV380,I,TJO,DUT,1,2018-01-20 04:10:00,2018-01-20 07:55:00,1,0,1,0,2018-01-20 04:10:00,2018-01-20 08:40:00,2018-01-20 08:40:00,250,520,50,104 261 | PK450,2018-01-20 00:00:00, 4:25,NV625,I,325,2018-01-20 00:00:00, 9:15,NV6152,I,SFQ,JDO,0,2018-01-20 04:25:00,2018-01-20 09:15:00,1,0,1,0,2018-01-20 04:25:00,2018-01-20 10:00:00,2018-01-20 10:00:00,265,600,53,120 262 | PK451,2018-01-20 00:00:00, 4:40,GN947,I,738,2018-01-20 00:00:00,10:15:00,GN0464,D,IOE,XFI,0,2018-01-20 04:40:00,2018-01-20 10:15:00,1,0,0,1,2018-01-20 04:40:00,2018-01-20 11:00:00,2018-01-20 11:00:00,280,660,56,132 263 | PK452,2018-01-20 00:00:00, 4:55,NV675,I,33L,2018-01-20 00:00:00, 6:55,NV675,D,EFM,QFL,1,2018-01-20 04:55:00,2018-01-20 06:55:00,1,0,0,1,2018-01-20 04:55:00,2018-01-20 07:40:00,2018-01-20 07:40:00,295,460,59,92 264 | PK453,2018-01-20 00:00:00,5:00:00,NV847,I,773,2018-01-20 00:00:00,13:20:00,NV694,I,TZE,MBY,1,2018-01-20 05:00:00,2018-01-20 13:20:00,1,0,1,0,2018-01-20 05:00:00,2018-01-20 14:05:00,2018-01-20 14:05:00,300,845,60,169 265 | PK454,2018-01-20 00:00:00, 5:15,NV309,I,773,2018-01-20 00:00:00, 9:10,NV634,I,KGL,OSU,1,2018-01-20 05:15:00,2018-01-20 09:10:00,1,0,1,0,2018-01-20 05:15:00,2018-01-20 09:55:00,2018-01-20 09:55:00,315,595,63,119 266 | PK455,2018-01-20 00:00:00, 5:20,NV871,I,325,2018-01-20 00:00:00, 9:25,NV812,I,QOI,ILH,0,2018-01-20 05:20:00,2018-01-20 09:25:00,1,0,1,0,2018-01-20 05:20:00,2018-01-20 10:10:00,2018-01-20 10:10:00,320,610,64,122 267 | PK456,2018-01-20 00:00:00, 5:35,NV347,I,33L,2018-01-20 00:00:00,12:10:00,NV346,I,NMF,NMF,1,2018-01-20 05:35:00,2018-01-20 12:10:00,1,0,1,0,2018-01-20 05:35:00,2018-01-20 12:55:00,2018-01-20 12:55:00,335,775,67,155 268 | PK457,2018-01-20 00:00:00, 5:40,NV655,I,332,2018-01-21 00:00:00,12:10:00,NV6118,I,TJO,UQF,1,2018-01-20 05:40:00,2018-01-21 12:10:00,1,0,1,0,2018-01-20 05:40:00,2018-01-21 12:55:00,2018-01-20 23:55:00,340,1435,68,287 269 | PK458,2018-01-20 00:00:00, 5:45,NV891,I,773,2018-01-21 00:00:00, 0:55,NV880,I,BLM,BLM,1,2018-01-20 05:45:00,2018-01-21 00:55:00,1,0,1,0,2018-01-20 05:45:00,2018-01-21 01:40:00,2018-01-20 23:55:00,345,1435,69,287 270 | PK459,2018-01-20 00:00:00, 5:55,GN979,I,73H,2018-01-20 00:00:00, 7:10,GN0290,D,CLJ,KOA,0,2018-01-20 05:55:00,2018-01-20 07:10:00,1,0,0,1,2018-01-20 05:55:00,2018-01-20 07:55:00,2018-01-20 07:55:00,355,475,71,95 271 | PK460,2018-01-20 00:00:00, 5:55,NV343,I,33E,2018-01-20 00:00:00,12:15:00,NV6118,I,DNC,UQF,1,2018-01-20 05:55:00,2018-01-20 12:15:00,1,0,1,0,2018-01-20 05:55:00,2018-01-20 13:00:00,2018-01-20 13:00:00,355,780,71,156 272 | PK461,2018-01-20 00:00:00, 5:55,NV851,I,773,2018-01-20 00:00:00,11:40:00,NV828,I,NFM,PSE,1,2018-01-20 05:55:00,2018-01-20 11:40:00,1,0,1,0,2018-01-20 05:55:00,2018-01-20 12:25:00,2018-01-20 12:25:00,355,745,71,149 273 | PK462,2018-01-20 00:00:00,6:00:00,GN977,I,738,2018-01-20 00:00:00,10:25:00,GN0628,D,LCW,XOA,0,2018-01-20 06:00:00,2018-01-20 10:25:00,1,0,0,1,2018-01-20 06:00:00,2018-01-20 11:10:00,2018-01-20 11:10:00,360,670,72,134 274 | PK463,2018-01-20 00:00:00, 6:25,NV6181,I,332,2018-01-20 00:00:00,14:35:00,NV676,I,DHL,TJO,1,2018-01-20 06:25:00,2018-01-20 14:35:00,1,0,1,0,2018-01-20 06:25:00,2018-01-20 15:20:00,2018-01-20 15:20:00,385,920,77,184 275 | PK464,2018-01-20 00:00:00, 6:25,NV689,I,773,2018-01-20 00:00:00,12:05:00,NV318,I,MBY,ZZA,1,2018-01-20 06:25:00,2018-01-20 12:05:00,1,0,1,0,2018-01-20 06:25:00,2018-01-20 12:50:00,2018-01-20 12:50:00,385,770,77,154 276 | PK465,2018-01-20 00:00:00, 6:30,GN943,I,73H,2018-01-20 00:00:00, 9:20,GN996,I,ILU,LVM,0,2018-01-20 06:30:00,2018-01-20 09:20:00,1,0,1,0,2018-01-20 06:30:00,2018-01-20 10:05:00,2018-01-20 10:05:00,390,605,78,121 277 | PK466,2018-01-20 00:00:00, 6:55,NV883,I,33H,2018-01-20 00:00:00,13:00:00,NV640,I,BNT,IOE,1,2018-01-20 06:55:00,2018-01-20 13:00:00,1,0,1,0,2018-01-20 06:55:00,2018-01-20 13:45:00,2018-01-20 13:45:00,415,825,83,165 278 | PK467,2018-01-20 00:00:00,7:00:00,NV6157,I,320,2018-01-20 00:00:00, 8:30,NV6762,D,DSL,ZOK,0,2018-01-20 07:00:00,2018-01-20 08:30:00,1,0,0,1,2018-01-20 07:00:00,2018-01-20 09:15:00,2018-01-20 09:15:00,420,555,84,111 279 | PK468,2018-01-20 00:00:00,7:00:00,NV665,I,773,2018-01-20 00:00:00,12:25:00,NV670,I,DEH,DEH,1,2018-01-20 07:00:00,2018-01-20 12:25:00,1,0,1,0,2018-01-20 07:00:00,2018-01-20 13:10:00,2018-01-20 13:10:00,420,790,84,158 280 | PK469,2018-01-20 00:00:00, 7:15,GN969,I,73H,2018-01-20 00:00:00,12:00:00,GN0492,D,ILU,LXM,0,2018-01-20 07:15:00,2018-01-20 12:00:00,1,0,0,1,2018-01-20 07:15:00,2018-01-20 12:45:00,2018-01-20 12:45:00,435,765,87,153 281 | PK470,2018-01-20 00:00:00, 7:20,GN973,I,73H,2018-01-20 00:00:00, 8:35,GN940,I,LVM,CLL,0,2018-01-20 07:20:00,2018-01-20 08:35:00,1,0,1,0,2018-01-20 07:20:00,2018-01-20 09:20:00,2018-01-20 09:20:00,440,560,88,112 282 | PK471,2018-01-20 00:00:00, 7:20,NV659,I,33L,2018-01-20 00:00:00,17:20:00,NV682,I,CLL,IOM,1,2018-01-20 07:20:00,2018-01-20 17:20:00,1,0,1,0,2018-01-20 07:20:00,2018-01-20 18:05:00,2018-01-20 18:05:00,440,1085,88,217 283 | PK472,2018-01-20 00:00:00,7:05:00,NV393,I,320,2018-01-20 00:00:00, 9:30,NV6576,D,THO,LIO,0,2018-01-20 07:05:00,2018-01-20 09:30:00,1,0,0,1,2018-01-20 07:05:00,2018-01-20 10:15:00,2018-01-20 10:15:00,425,615,85,123 284 | PK473,2018-01-20 00:00:00, 7:55,NV6700,D,320,2018-01-20 00:00:00, 9:30,NV6700,D,OHC,VSD,0,2018-01-20 07:55:00,2018-01-20 09:30:00,0,1,0,1,2018-01-20 07:55:00,2018-01-20 10:15:00,2018-01-20 10:15:00,475,615,95,123 285 | PK474,2018-01-20 00:00:00, 8:25,NV3992,D,320,2018-01-20 00:00:00, 9:30,NV630,I,OLH,OHP,0,2018-01-20 08:25:00,2018-01-20 09:30:00,0,1,1,0,2018-01-20 08:25:00,2018-01-20 10:15:00,2018-01-20 10:15:00,505,615,101,123 286 | PK475,2018-01-20 00:00:00, 8:35,NV6135,I,320,2018-01-20 00:00:00,10:20:00,NV3196,I,DFC,PLB,0,2018-01-20 08:35:00,2018-01-20 10:20:00,1,0,1,0,2018-01-20 08:35:00,2018-01-20 11:05:00,2018-01-20 11:05:00,515,665,103,133 287 | PK476,2018-01-20 00:00:00, 8:35,*****,D,738,2018-01-20 00:00:00, 9:25,GN0408,D,***,DTY,0,2018-01-20 08:35:00,2018-01-20 09:25:00,0,1,0,1,2018-01-20 08:35:00,2018-01-20 10:10:00,2018-01-20 10:10:00,515,610,103,122 288 | PK477,2018-01-20 00:00:00, 8:40,NV6577,D,320,2018-01-20 00:00:00, 9:50,NV6577,D,LIO,TIF,0,2018-01-20 08:40:00,2018-01-20 09:50:00,0,1,0,1,2018-01-20 08:40:00,2018-01-20 10:35:00,2018-01-20 10:35:00,520,635,104,127 289 | PK478,2018-01-20 00:00:00, 8:40,NV6697,D,73H,2018-01-20 00:00:00, 9:45,NV6612,D,XOA,XOA,0,2018-01-20 08:40:00,2018-01-20 09:45:00,0,1,0,1,2018-01-20 08:40:00,2018-01-20 10:30:00,2018-01-20 10:30:00,520,630,104,126 290 | PK479,2018-01-20 00:00:00, 8:45,NV6645,D,320,2018-01-20 00:00:00,10:20:00,NV6644,D,UOB,UOB,0,2018-01-20 08:45:00,2018-01-20 10:20:00,0,1,0,1,2018-01-20 08:45:00,2018-01-20 11:05:00,2018-01-20 11:05:00,525,665,105,133 291 | PK480,2018-01-20 00:00:00, 8:45,NV6698,D,320,2018-01-20 00:00:00,21:35:00,NV6578,D,IGF,IGF,0,2018-01-20 08:45:00,2018-01-20 21:35:00,0,1,0,1,2018-01-20 08:45:00,2018-01-20 22:20:00,2018-01-20 22:20:00,525,1340,105,268 292 | PK481,2018-01-20 00:00:00, 8:55,NV3620,D,73E,2018-01-20 00:00:00,10:00:00,NV626,I,XVI,LJY,0,2018-01-20 08:55:00,2018-01-20 10:00:00,0,1,1,0,2018-01-20 08:55:00,2018-01-20 10:45:00,2018-01-20 10:45:00,535,645,107,129 293 | PK482,2018-01-20 00:00:00, 8:55,NV6684,D,320,2018-01-20 00:00:00,10:05:00,NV6684,D,UBP,LPX,0,2018-01-20 08:55:00,2018-01-20 10:05:00,0,1,0,1,2018-01-20 08:55:00,2018-01-20 10:50:00,2018-01-20 10:50:00,535,650,107,130 294 | PK483,2018-01-20 00:00:00,9:00:00,NV603,I,33L,2018-01-20 00:00:00,10:25:00,NV603,D,TWP,TZY,1,2018-01-20 09:00:00,2018-01-20 10:25:00,1,0,0,1,2018-01-20 09:00:00,2018-01-20 11:10:00,2018-01-20 11:10:00,540,670,108,134 295 | PK484,2018-01-20 00:00:00, 9:10,GN0631,D,738,2018-01-20 00:00:00,10:00:00,*****,D,XOA,***,0,2018-01-20 09:10:00,2018-01-20 10:00:00,0,1,0,1,2018-01-20 09:10:00,2018-01-20 10:45:00,2018-01-20 10:45:00,550,645,110,129 296 | PK485,2018-01-20 00:00:00, 9:15,NV628,D,73H,2018-01-20 00:00:00,10:35:00,NV628,I,XVI,GVL,0,2018-01-20 09:15:00,2018-01-20 10:35:00,0,1,1,0,2018-01-20 09:15:00,2018-01-20 11:20:00,2018-01-20 11:20:00,555,680,111,136 297 | PK486,2018-01-20 00:00:00, 9:20,GN0369,D,738,2018-01-20 00:00:00,10:35:00,GN0202,D,YNO,EMD,0,2018-01-20 09:20:00,2018-01-20 10:35:00,0,1,0,1,2018-01-20 09:20:00,2018-01-20 11:20:00,2018-01-20 11:20:00,560,680,112,136 298 | PK487,2018-01-20 00:00:00, 9:20,NV698,D,773,2018-01-20 00:00:00,11:30:00,NV698,I,GPD,KGL,1,2018-01-20 09:20:00,2018-01-20 11:30:00,0,1,1,0,2018-01-20 09:20:00,2018-01-20 12:15:00,2018-01-20 12:15:00,560,735,112,147 299 | PK488,2018-01-20 00:00:00, 9:25,NV6773,D,325,2018-01-20 00:00:00,10:40:00,NV6773,D,EMD,GPD,0,2018-01-20 09:25:00,2018-01-20 10:40:00,0,1,0,1,2018-01-20 09:25:00,2018-01-20 11:25:00,2018-01-20 11:25:00,565,685,113,137 300 | PK489,2018-01-20 00:00:00, 9:30,GN0439,D,738,2018-01-20 00:00:00,11:00:00,GN0284,D,DHP,KOH,0,2018-01-20 09:30:00,2018-01-20 11:00:00,0,1,0,1,2018-01-20 09:30:00,2018-01-20 11:45:00,2018-01-20 11:45:00,570,705,114,141 301 | PK490,2018-01-20 00:00:00, 9:35,NV3513,D,73H,2018-01-20 00:00:00,10:45:00,NV3512,D,UZO,UZO,0,2018-01-20 09:35:00,2018-01-20 10:45:00,0,1,0,1,2018-01-20 09:35:00,2018-01-20 11:30:00,2018-01-20 11:30:00,575,690,115,138 302 | PK491,2018-01-20 00:00:00, 9:35,NV6655,D,320,2018-01-20 00:00:00,11:15:00,NV6622,D,ZOU,UBP,0,2018-01-20 09:35:00,2018-01-20 11:15:00,0,1,0,1,2018-01-20 09:35:00,2018-01-20 12:00:00,2018-01-20 12:00:00,575,720,115,144 303 | PK492,2018-01-20 00:00:00, 9:40,GN0571,D,73H,2018-01-20 00:00:00,14:15:00,GN966,I,LXF,CLL,0,2018-01-20 09:40:00,2018-01-20 14:15:00,0,1,1,0,2018-01-20 09:40:00,2018-01-20 15:00:00,2018-01-20 15:00:00,580,900,116,180 304 | PK493,2018-01-20 00:00:00, 9:40,NV6533,D,320,2018-01-20 00:00:00,11:05:00,NV6536,D,DLH,DLH,0,2018-01-20 09:40:00,2018-01-20 11:05:00,0,1,0,1,2018-01-20 09:40:00,2018-01-20 11:50:00,2018-01-20 11:50:00,580,710,116,142 305 | PK494,2018-01-20 00:00:00, 9:45,GN0493,D,738,2018-01-20 00:00:00,10:50:00,GN0493,D,LXM,DHR,0,2018-01-20 09:45:00,2018-01-20 10:50:00,0,1,0,1,2018-01-20 09:45:00,2018-01-20 11:35:00,2018-01-20 11:35:00,585,695,117,139 306 | PK495,2018-01-20 00:00:00, 9:45,NV6163,I,325,2018-01-20 00:00:00,11:25:00,NV6390,D,JDO,AVI,0,2018-01-20 09:45:00,2018-01-20 11:25:00,1,0,0,1,2018-01-20 09:45:00,2018-01-20 12:10:00,2018-01-20 12:10:00,585,730,117,146 307 | PK496,2018-01-20 00:00:00, 9:50,GN0181,D,738,2018-01-20 00:00:00,11:05:00,GN0298,D,UTO,TIF,0,2018-01-20 09:50:00,2018-01-20 11:05:00,0,1,0,1,2018-01-20 09:50:00,2018-01-20 11:50:00,2018-01-20 11:50:00,590,710,118,142 308 | PK497,2018-01-20 00:00:00, 9:50,GN0413,D,738,2018-01-20 00:00:00,11:10:00,GN0530,D,DBO,IOZ,0,2018-01-20 09:50:00,2018-01-20 11:10:00,0,1,0,1,2018-01-20 09:50:00,2018-01-20 11:55:00,2018-01-20 11:55:00,590,715,118,143 309 | PK498,2018-01-20 00:00:00, 9:50,NV6479,D,319,2018-01-20 00:00:00,11:05:00,NV6752,D,DTY,EMD,0,2018-01-20 09:50:00,2018-01-20 11:05:00,0,1,0,1,2018-01-20 09:50:00,2018-01-20 11:50:00,2018-01-20 11:50:00,590,710,118,142 310 | PK499,2018-01-20 00:00:00, 9:50,NV837,I,319,2018-01-20 00:00:00,13:00:00,NV3194,D,ILH,UTO,0,2018-01-20 09:50:00,2018-01-20 13:00:00,1,0,0,1,2018-01-20 09:50:00,2018-01-20 13:45:00,2018-01-20 13:45:00,590,825,118,165 311 | PK500,2018-01-20 00:00:00, 9:55,GN0471,D,73A,2018-01-20 00:00:00,11:30:00,GN0208,D,AIB,BPH,0,2018-01-20 09:55:00,2018-01-20 11:30:00,0,1,0,1,2018-01-20 09:55:00,2018-01-20 12:15:00,2018-01-20 12:15:00,595,735,119,147 312 | PK501,2018-01-20 00:00:00, 9:55,NV6313,D,325,2018-01-20 00:00:00,11:00:00,NV6518,D,IBL,DUV,0,2018-01-20 09:55:00,2018-01-20 11:00:00,0,1,0,1,2018-01-20 09:55:00,2018-01-20 11:45:00,2018-01-20 11:45:00,595,705,119,141 313 | -------------------------------------------------------------------------------- /data/tickets_pass_totoal (1).csv: -------------------------------------------------------------------------------- 1 | "到达 2 | 航班","出发 3 | 航班",到达类型,出发类型,到达转场号,出发转场号,乘客数 4 | NV677,NV6154,I,I,PK449,PK156,49 5 | NV323,NV318,I,I,PK260,PK464,44 6 | NV883,NV6773,I,D,PK466,PK488,30 7 | NV343,NV6152,I,I,PK460,PK450,27 8 | NV6155,NV656,I,I,PK285,PK304,26 9 | NV871,NV6152,I,I,PK455,PK450,26 10 | NV6241,NV880,D,I,PK168,PK106,24 11 | NV6575,NV830,D,I,PK293,PK275,23 12 | NV323,NV692,I,I,PK260,PK089,23 13 | NV6117,NV664,I,I,PK393,PK363,22 14 | NV615,NV6720,I,D,PK354,PK346,20 15 | NV6241,NV880,D,I,PK412,PK458,20 16 | NV655,NV6734,I,D,PK457,PK171,19 17 | NV3119,NV6632,I,D,PK368,PK398,18 18 | NV635,NV859,I,D,PK333,PK366,18 19 | NV841,NV3703,I,D,PK274,PK278,17 20 | NV323,NV694,I,I,PK260,PK453,17 21 | NV858,NV6144,D,I,PK265,PK261,17 22 | NV883,NV6577,I,D,PK466,PK477,16 23 | NV6684,NV618,D,I,PK482,PK262,16 24 | NV847,NV6230,I,D,PK453,PK155,14 25 | NV883,NV3196,I,I,PK466,PK475,14 26 | NV849,NV6297,I,D,PK377,PK368,14 27 | NV382,NV638,D,I,PK313,PK334,14 28 | NV309,NV6616,I,D,PK454,PK185,13 29 | NV383,NV6742,I,D,PK290,PK295,12 30 | NV6785,NV610,D,I,PK271,PK274,12 31 | NV6551,NV6134,D,I,PK388,PK391,12 32 | NV6575,NV382,D,I,PK293,PK313,12 33 | NV6171,NV616,I,I,PK295,PK303,11 34 | NV689,NV6152,I,I,PK464,PK450,11 35 | NV665,NV6612,I,D,PK468,PK478,11 36 | NV673,NV6714,I,D,PK373,PK369,11 37 | NV689,NV6446,I,D,PK464,PK184,11 38 | NV6697,NV898,D,I,PK478,PK159,11 39 | NV3120,NV858,D,I,PK257,PK265,11 40 | NV871,NV6154,I,I,PK455,PK156,11 41 | NV3703,NV6742,I,D,PK278,PK295,11 42 | NV6753,NV654,D,I,PK378,PK377,11 43 | NV6171,NV656,I,I,PK295,PK304,10 44 | NV6699,NV840,D,I,PK408,PK349,10 45 | NV6145,NV308,I,I,PK343,PK333,10 46 | NV6633,NV880,D,I,PK398,PK458,10 47 | NV673,NV320,I,I,PK373,PK373,10 48 | NV820,NV676,D,I,PK263,PK463,10 49 | NV633,NV846,I,I,PK375,PK370,10 50 | NV3421,NV658,D,I,PK355,PK352,10 51 | NV309,NV634,I,I,PK454,PK454,10 52 | NV655,NV6358,I,D,PK457,PK136,10 53 | NV673,NV664,I,I,PK131,PK107,10 54 | NV6405,NV846,D,I,PK418,PK370,10 55 | NV6713,NV614,D,I,PK266,PK260,10 56 | NV6753,NV826,D,I,PK378,PK382,10 57 | NV3119,NV6714,I,D,PK368,PK369,9 58 | NV659,NV318,I,I,PK471,PK464,9 59 | NV659,NV698,I,I,PK471,PK487,9 60 | NV891,NV6154,I,I,PK458,PK156,9 61 | NV673,NV664,I,I,PK373,PK363,9 62 | NV6709,NV656,D,I,PK297,PK304,9 63 | NV323,NV690,I,I,PK260,PK208,9 64 | NV6145,NV658,I,I,PK343,PK352,9 65 | NV6735,NV6556,D,D,PK286,PK282,8 66 | NV3260,NV308,D,I,PK326,PK333,8 67 | NV6697,NV670,D,I,PK478,PK468,8 68 | NV673,NV6578,I,D,PK373,PK480,8 69 | NV6135,NV810,I,I,PK475,PK445,8 70 | NV689,NV6230,I,D,PK464,PK155,8 71 | NV6527,NV6134,D,I,PK139,PK149,8 72 | NV6163,NV674,I,I,PK495,PK280,8 73 | NV6653,NV880,D,I,PK407,PK458,8 74 | NV655,NV6708,I,D,PK457,PK443,8 75 | NV6479,NV820,D,I,PK498,PK263,8 76 | NV615,NV688,I,I,PK354,PK347,7 77 | NV6725,NV880,D,I,PK389,PK458,7 78 | NV3513,NV346,D,I,PK490,PK456,7 79 | NV851,NV6152,I,I,PK461,PK450,7 80 | NV3654,NV830,D,I,PK294,PK275,7 81 | NV655,NV6154,I,I,PK457,PK156,7 82 | NV6533,NV318,D,I,PK493,PK464,7 83 | NV6773,NV618,D,I,PK488,PK262,7 84 | NV6405,NV880,D,I,PK418,PK458,7 85 | NV6737,NV6134,D,I,PK414,PK391,7 86 | NV698,NV318,D,I,PK487,PK464,7 87 | NV393,NV318,I,I,PK472,PK464,7 88 | NV6301,NV6714,D,D,PK346,PK369,7 89 | NV6117,NV664,I,I,PK151,PK107,7 90 | NV6241,NV6134,D,I,PK412,PK391,7 91 | NV6171,NV3273,I,D,PK295,PK297,7 92 | NV6737,NV880,D,I,PK414,PK458,7 93 | NV657,NV308,I,I,PK316,PK333,7 94 | NV673,NV320,I,I,PK131,PK131,7 95 | NV883,NV3280,I,D,PK466,PK174,7 96 | NV309,NV6152,I,I,PK454,PK450,7 97 | NV827,NV3652,I,D,PK382,PK415,6 98 | NV6155,NV629,I,D,PK285,PK311,6 99 | NV849,NV664,I,I,PK377,PK363,6 100 | NV6735,NV656,D,I,PK286,PK304,6 101 | NV841,NV674,I,I,PK274,PK280,6 102 | NV851,NV6154,I,I,PK461,PK156,6 103 | NV6699,NV608,D,I,PK165,PK108,6 104 | NV382,NV308,D,I,PK313,PK333,6 105 | NV6145,NV6478,I,D,PK343,PK396,6 106 | NV6489,NV6714,D,D,PK352,PK369,6 107 | NV651,NV846,I,I,PK400,PK370,6 108 | NV3119,NV6652,I,D,PK368,PK407,6 109 | NV6294,NV398,D,I,PK253,PK271,6 110 | NV3260,NV688,D,I,PK326,PK347,6 111 | NV6199,NV654,I,I,PK372,PK377,6 112 | NV302,NV642,D,I,PK319,PK337,6 113 | NV3992,NV670,D,I,PK474,PK468,6 114 | NV621,NV6632,I,D,PK386,PK398,6 115 | NV659,NV306,I,I,PK471,PK148,6 116 | NV6117,NV6811,I,D,PK393,PK399,6 117 | NV628,NV318,D,I,PK485,PK464,6 118 | NV6117,NV840,I,I,PK151,PK104,6 119 | NV827,NV664,I,I,PK382,PK363,6 120 | NV6575,NV6162,D,I,PK293,PK324,6 121 | NV847,NV6154,I,I,PK453,PK156,6 122 | NV619,NV6784,I,D,PK344,PK359,6 123 | NV6119,NV6784,I,D,PK340,PK359,5 124 | NV309,NV612,I,I,PK454,PK177,5 125 | NV3702,NV308,D,I,PK330,PK333,5 126 | NV891,NV6576,I,D,PK458,PK472,5 127 | NV689,NV612,I,I,PK464,PK177,5 128 | NV6643,NV840,D,I,PK161,PK104,5 129 | NV6772,NV846,D,I,PK153,PK129,5 130 | NV6153,NV656,I,I,PK292,PK304,5 131 | NV643,NV6722,I,D,PK269,PK196,5 132 | NV6773,NV692,D,I,PK488,PK089,5 133 | NV6145,NV826,I,I,PK343,PK382,5 134 | NV677,NV6738,I,D,PK449,PK117,5 135 | NV383,NV6574,I,D,PK290,PK293,5 136 | NV6443,NV670,D,I,PK256,PK468,5 137 | NV6135,NV694,I,I,PK475,PK453,5 138 | NV6642,NV880,D,I,PK160,PK106,5 139 | NV304,NV308,D,I,PK332,PK333,5 140 | NV835,NV6718,I,D,PK275,PK288,5 141 | NV851,NV6230,I,D,PK461,PK155,5 142 | NV673,NV6652,I,D,PK373,PK407,5 143 | NV619,NV308,I,I,PK344,PK333,5 144 | NV6713,NV318,D,I,PK266,PK464,5 145 | NV6714,NV6632,D,D,PK369,PK398,5 146 | NV6735,NV616,D,I,PK286,PK303,5 147 | NV3260,NV860,D,I,PK326,PK365,5 148 | NV6700,NV626,D,I,PK473,PK481,5 149 | NV827,NV6652,I,D,PK382,PK407,5 150 | NV698,NV898,D,I,PK487,PK159,5 151 | NV698,NV670,D,I,PK487,PK468,5 152 | NV3553,NV840,D,I,PK176,PK104,5 153 | NV6163,NV676,I,I,PK495,PK463,5 154 | NV698,NV6144,D,I,PK487,PK261,5 155 | NV673,NV6528,I,D,PK373,PK381,5 156 | NV6241,NV654,D,I,PK412,PK377,5 157 | NV633,NV840,I,I,PK375,PK349,5 158 | NV849,NV699,I,D,PK377,PK374,5 159 | NV677,NV6708,I,D,PK449,PK443,4 160 | NV827,NV6528,I,D,PK382,PK381,4 161 | NV6119,NV308,I,I,PK340,PK333,4 162 | NV628,NV398,D,I,PK485,PK271,4 163 | NV621,NV320,I,I,PK386,PK373,4 164 | NV655,NV6738,I,D,PK457,PK117,4 165 | NV3197,NV6784,I,D,PK329,PK359,4 166 | NV657,NV6162,I,I,PK316,PK324,4 167 | NV677,NV3615,I,D,PK449,PK447,4 168 | NV6119,NV6720,I,D,PK340,PK346,4 169 | NV305,NV6488,I,D,PK270,PK256,4 170 | NV6153,NV629,I,D,PK292,PK311,4 171 | NV317,NV882,I,I,PK391,PK338,4 172 | NV6535,NV640,D,I,PK273,PK466,4 173 | NV619,NV6714,I,D,PK344,PK369,4 174 | NV309,NV3263,I,D,PK454,PK170,4 175 | NV6307,NV662,D,I,PK272,PK094,4 176 | NV651,NV664,I,I,PK159,PK107,4 177 | NV6145,NV688,I,I,PK343,PK347,4 178 | NV687,NV6574,I,D,PK261,PK293,4 179 | NV689,NV866,I,D,PK464,PK151,4 180 | NV633,NV6478,I,D,PK375,PK396,4 181 | NV6155,NV6742,I,D,PK285,PK295,4 182 | NV689,NV3196,I,I,PK464,PK475,4 183 | NV309,NV866,I,D,PK454,PK151,4 184 | NV635,NV672,I,I,PK333,PK308,4 185 | NV883,NV6230,I,D,PK466,PK155,4 186 | NV827,NV320,I,I,PK382,PK373,4 187 | NV847,NV6724,I,D,PK453,PK147,4 188 | NV621,NV6652,I,D,PK386,PK407,4 189 | NV3992,NV318,D,I,PK474,PK464,4 190 | NV6709,NV642,D,I,PK297,PK337,4 191 | NV6698,NV820,D,I,PK480,PK263,4 192 | NV6698,NV632,D,I,PK480,PK258,4 193 | NV347,NV6514,I,D,PK456,PK195,4 194 | NV347,NV6504,I,D,PK456,PK193,4 195 | NV6642,NV654,D,I,PK401,PK377,4 196 | NV6633,NV880,D,I,PK157,PK106,4 197 | NV6713,NV674,D,I,PK266,PK280,4 198 | NV343,NV6577,I,D,PK460,PK477,4 199 | NV382,NV682,D,I,PK313,PK471,4 200 | NV891,NV6230,I,D,PK458,PK155,4 201 | NV673,NV6811,I,D,PK373,PK399,4 202 | GN0631,NV670,D,I,PK484,PK468,4 203 | NV6715,NV658,D,I,PK325,PK352,4 204 | NV6697,NV698,D,I,PK478,PK487,4 205 | NV3702,NV860,D,I,PK330,PK365,4 206 | NV659,NV6152,I,I,PK471,PK450,4 207 | NV3703,NV6718,I,D,PK278,PK288,4 208 | NV6719,NV616,D,I,PK288,PK303,4 209 | NV3992,NV6773,D,D,PK474,PK488,4 210 | NV6685,NV6726,D,D,PK300,PK329,3 211 | NV6731,NV6713,D,D,PK262,PK266,3 212 | NV6698,NV858,D,I,PK480,PK265,3 213 | NV632,NV346,D,I,PK258,PK456,3 214 | NV6684,NV810,D,I,PK482,PK445,3 215 | NV891,NV6616,I,D,PK458,PK185,3 216 | NV633,NV6714,I,D,PK375,PK369,3 217 | NV633,NV6544,I,D,PK375,PK376,3 218 | NV689,NV6616,I,D,PK464,PK185,3 219 | NV6698,NV628,D,I,PK480,PK485,3 220 | NV6733,NV654,D,I,PK410,PK377,3 221 | NV6733,NV846,D,I,PK410,PK370,3 222 | NV3120,NV318,D,I,PK257,PK464,3 223 | NV6699,NV880,D,I,PK165,PK106,3 224 | NV6731,NV6488,D,D,PK262,PK256,3 225 | NV6241,NV320,D,I,PK168,PK131,3 226 | NV6725,NV846,D,I,PK147,PK129,3 227 | NV6725,NV392,D,I,PK389,PK402,3 228 | NV6241,NV840,D,I,PK168,PK104,3 229 | NV3120,NV6144,D,I,PK257,PK261,3 230 | NV6715,NV834,D,I,PK325,PK327,3 231 | NV6715,NV624,D,I,PK325,PK344,3 232 | GN0629,NV664,D,I,PK406,PK363,3 233 | NV6714,NV6720,D,D,PK369,PK346,3 234 | NV629,NV834,I,I,PK311,PK327,3 235 | NV6713,NV670,D,I,PK266,PK468,3 236 | NV6711,NV848,D,I,PK301,PK316,3 237 | NV6684,NV694,D,I,PK482,PK453,3 238 | NV827,NV320,I,I,PK140,PK131,3 239 | NV6294,NV898,D,I,PK253,PK159,3 240 | NV6731,NV614,D,I,PK262,PK260,3 241 | NV6307,NV640,D,I,PK272,PK466,3 242 | NV883,NV6514,I,D,PK466,PK195,3 243 | NV891,NV6152,I,I,PK458,PK450,3 244 | NV6684,NV632,D,I,PK482,PK258,3 245 | NV659,NV634,I,I,PK471,PK454,3 246 | NV6527,NV846,D,I,PK381,PK370,3 247 | NV6533,NV858,D,I,PK493,PK265,3 248 | NV675,NV6708,I,D,PK452,PK443,3 249 | NV6772,NV846,D,I,PK395,PK370,3 250 | NV302,NV638,D,I,PK319,PK334,3 251 | NV6772,NV664,D,I,PK153,PK107,3 252 | NV6753,NV6134,D,I,PK378,PK391,3 253 | NV6633,NV840,D,I,PK398,PK349,3 254 | NV6633,NV664,D,I,PK398,PK363,3 255 | NV6551,NV840,D,I,PK388,PK349,3 256 | NV6405,NV840,D,I,PK418,PK349,3 257 | NV6763,NV6472,D,D,PK376,PK356,3 258 | NV6551,NV846,D,I,PK146,PK129,3 259 | NV6551,NV880,D,I,PK146,PK106,3 260 | NV303,NV676,I,I,PK268,PK463,3 261 | NV304,NV642,D,I,PK332,PK337,3 262 | NV657,NV3702,I,I,PK316,PK330,3 263 | NV831,NV699,I,D,PK353,PK374,3 264 | NV6763,NV836,D,I,PK376,PK378,3 265 | NV6577,NV694,D,I,PK477,PK453,3 266 | NV6642,NV880,D,I,PK401,PK458,3 267 | NV6643,NV846,D,I,PK402,PK370,3 268 | NV665,GN0628,I,D,PK468,PK462,3 269 | NV6785,NV662,D,I,PK271,PK094,3 270 | NV309,NV6230,I,D,PK454,PK155,3 271 | NV6577,NV632,D,I,PK477,PK258,3 272 | NV6684,NV346,D,I,PK482,PK456,3 273 | NV6684,NV318,D,I,PK482,PK464,3 274 | NV643,NV674,I,I,PK269,PK280,3 275 | NV6737,NV654,D,I,PK414,PK377,3 276 | NV687,NV6488,I,D,PK261,PK256,3 277 | NV6737,NV846,D,I,PK169,PK129,3 278 | NV6655,NV670,D,I,PK491,PK468,3 279 | NV6653,NV846,D,I,PK407,PK370,3 280 | NV6443,NV810,D,I,PK256,PK445,3 281 | NV6453,NV304,D,I,PK315,PK332,3 282 | NV6453,NV686,D,I,PK315,PK301,3 283 | NV6653,NV840,D,I,PK407,PK349,3 284 | NV6479,NV690,D,I,PK498,PK208,3 285 | NV6739,NV6811,D,D,PK357,PK399,3 286 | NV6489,NV6811,D,D,PK352,PK399,3 287 | NV665,NV6616,I,D,PK468,PK185,3 288 | NV674,NV6116,D,I,PK280,PK292,3 289 | NV6405,NV880,D,I,PK174,PK106,3 290 | NV859,NV6811,I,D,PK366,PK399,3 291 | NV309,NV6514,I,D,PK454,PK195,3 292 | NV317,NV664,I,I,PK391,PK363,3 293 | NV847,NV675,I,D,PK453,PK452,3 294 | NV6145,NV3131,I,D,PK343,PK351,3 295 | NV347,NV6734,I,D,PK456,PK171,3 296 | NV3992,NV698,D,I,PK474,PK487,3 297 | NV3992,NV632,D,I,PK474,PK258,3 298 | NV3992,NV628,D,I,PK474,PK485,3 299 | NV3620,NV346,D,I,PK481,PK456,3 300 | NV851,NV336,I,I,PK461,PK165,3 301 | NV3622,NV608,D,I,PK134,PK108,3 302 | NV399,NV688,I,I,PK359,PK347,3 303 | NV849,NV6772,I,D,PK377,PK395,3 304 | NV3654,NV686,D,I,PK294,PK301,3 305 | NV849,NV6652,I,D,PK377,PK407,3 306 | NV3702,NV848,D,I,PK330,PK316,3 307 | NV6157,NV3196,I,I,PK467,PK475,3 308 | NV6145,NV831,I,D,PK343,PK353,3 309 | NV873,NV629,I,D,PK296,PK311,3 310 | NV383,NV6685,I,D,PK290,PK300,3 311 | NV6145,NV848,I,I,PK343,PK316,3 312 | NV6145,NV860,I,I,PK343,PK365,3 313 | NV383,NV0746,I,D,PK290,PK315,3 314 | NV613,NV6710,I,D,PK303,PK325,3 315 | NV382,NV624,D,I,PK313,PK344,3 316 | NV859,NV836,I,I,PK366,PK378,3 317 | NV323,NV898,I,I,PK260,PK159,3 318 | NV883,GN0628,I,D,PK466,PK462,3 319 | NV3992,NV346,D,I,PK474,PK456,3 320 | NV6199,NV6642,I,D,PK372,PK401,3 321 | NV831,NV859,I,D,PK353,PK366,3 322 | NV859,NV688,I,I,PK366,PK347,3 323 | NV847,NV6738,I,D,PK453,PK117,3 324 | NV613,NV6726,I,D,PK303,PK329,3 325 | NV6119,NV688,I,I,PK340,PK347,3 326 | NV6117,NV882,I,I,PK393,PK338,3 327 | NV3266,NV686,D,I,PK284,PK301,3 328 | NV6642,NV320,D,I,PK160,PK131,2 329 | NV6117,NV840,I,I,PK393,PK349,2 330 | NV6642,NV320,D,I,PK401,PK373,2 331 | NV6551,NV846,D,I,PK388,PK370,2 332 | NV6642,NV6134,D,I,PK401,PK391,2 333 | NV6119,NV3131,I,D,PK340,PK351,2 334 | NV847,NV6700,I,D,PK453,PK473,2 335 | NV6642,NV846,D,I,PK401,PK370,2 336 | NV6577,NV6144,D,I,PK477,PK261,2 337 | NV847,NV6616,I,D,PK453,PK185,2 338 | NV6633,NV882,D,I,PK398,PK338,2 339 | NV849,NV3655,I,D,PK377,PK372,2 340 | NV6643,NV664,D,I,PK402,PK363,2 341 | NV847,NV6514,I,D,PK453,PK195,2 342 | NV6643,NV880,D,I,PK402,PK458,2 343 | NV6772,NV608,D,I,PK153,PK108,2 344 | NV675,NV336,I,I,PK452,PK165,2 345 | NV674,NV682,D,I,PK280,PK471,2 346 | NV305,NV676,I,I,PK270,PK463,2 347 | NV6645,NV632,D,I,PK479,PK258,2 348 | NV6551,NV320,D,I,PK388,PK373,2 349 | NV323,NV6510,I,D,PK260,PK276,2 350 | NV6577,NV318,D,I,PK477,PK464,2 351 | NV393,NV6160,I,I,PK472,PK190,2 352 | NV677,NV3446,I,D,PK449,PK150,2 353 | NV3992,NV828,D,I,PK474,PK461,2 354 | NV6577,NV698,D,I,PK477,PK487,2 355 | NV6575,NV686,D,I,PK293,PK301,2 356 | NV6575,NV642,D,I,PK293,PK337,2 357 | NV6577,NV858,D,I,PK477,PK265,2 358 | NV6117,NV320,I,I,PK151,PK131,2 359 | NV6578,NV840,D,I,PK394,PK349,2 360 | NV6575,NV616,D,I,PK293,PK303,2 361 | NV3992,NV6160,D,I,PK474,PK190,2 362 | NV382,NV860,D,I,PK313,PK365,2 363 | NV3992,NV316,D,I,PK474,PK112,2 364 | NV659,NV6577,I,D,PK471,PK477,2 365 | NV659,NV6616,I,D,PK471,PK185,2 366 | NV399,NV699,I,D,PK359,PK374,2 367 | NV831,NV6714,I,D,PK353,PK369,2 368 | NV659,NV828,I,I,PK471,PK461,2 369 | NV6633,NV320,D,I,PK157,PK131,2 370 | NV6753,NV882,D,I,PK378,PK338,2 371 | NV303,NV3703,I,D,PK268,PK278,2 372 | NV6575,NV302,D,I,PK293,PK319,2 373 | NV6117,NV608,I,I,PK151,PK108,2 374 | NV399,NV6528,I,D,PK359,PK381,2 375 | NV383,GN0348,I,D,PK290,PK307,2 376 | NV849,NV6632,I,D,PK377,PK398,2 377 | NV6739,NV836,D,I,PK357,PK378,2 378 | NV343,NV630,I,I,PK460,PK474,2 379 | NV6709,NV6742,D,D,PK297,PK295,2 380 | NV6709,NV834,D,I,PK297,PK327,2 381 | NV6711,NV3702,D,I,PK301,PK330,2 382 | NV6731,NV346,D,I,PK262,PK456,2 383 | NV6711,NV642,D,I,PK301,PK337,2 384 | NV851,NV6738,I,D,PK461,PK117,2 385 | NV347,NV6152,I,I,PK456,PK450,2 386 | NV6713,NV346,D,I,PK266,PK456,2 387 | NV6731,NV318,D,I,PK262,PK464,2 388 | NV6713,NV610,D,I,PK266,PK274,2 389 | NV347,NV3263,I,D,PK456,PK170,2 390 | NV6731,NV3118,D,I,PK262,PK253,2 391 | NV858,NV6118,D,I,PK265,PK460,2 392 | NV891,NV6724,I,D,PK458,PK147,2 393 | NV3270,NV320,D,I,PK170,PK131,2 394 | NV665,NV6504,I,D,PK468,PK193,2 395 | NV343,NV336,I,I,PK460,PK165,2 396 | NV6715,NV642,D,I,PK325,PK337,2 397 | GN0571,NV318,D,I,PK492,PK464,2 398 | NV6717,NV834,D,I,PK337,PK327,2 399 | GN0477,NV686,D,I,PK299,PK301,2 400 | NV3287,NV616,D,I,PK282,PK303,2 401 | NV673,NV6325,I,D,PK373,PK380,2 402 | NV673,NV6297,I,D,PK373,PK368,2 403 | NV6725,NV608,D,I,PK147,PK108,2 404 | NV3278,NV608,D,I,PK150,PK108,2 405 | NV6725,NV846,D,I,PK389,PK370,2 406 | NV6725,NV880,D,I,PK147,PK106,2 407 | GN0423,NV686,D,I,PK310,PK301,2 408 | NV673,NV3655,I,D,PK373,PK372,2 409 | GN0629,NV882,D,I,PK406,PK338,2 410 | NV6709,NV616,D,I,PK297,PK303,2 411 | NV6700,NV698,D,I,PK473,PK487,2 412 | NV6700,NV670,D,I,PK473,PK468,2 413 | NV665,NV6576,I,D,PK468,PK472,2 414 | NV6739,NV688,D,I,PK357,PK347,2 415 | NV382,NV642,D,I,PK313,PK337,2 416 | NV6655,NV640,D,I,PK491,PK466,2 417 | NV3786,NV658,D,I,PK348,PK352,2 418 | NV6737,NV840,D,I,PK414,PK349,2 419 | NV6737,NV664,D,I,PK414,PK363,2 420 | NV3260,NV672,D,I,PK326,PK308,2 421 | GN0641,NV664,D,I,PK367,PK363,2 422 | NV6737,NV608,D,I,PK169,PK108,2 423 | NV6663,NV392,D,I,PK365,PK402,2 424 | NV6737,NV322,D,I,PK414,PK386,2 425 | NV3703,NV6722,I,D,PK278,PK196,2 426 | GN0641,NV664,D,I,PK126,PK107,2 427 | NV6735,NV6318,D,D,PK286,PK294,2 428 | NV6685,NV830,D,I,PK300,PK275,2 429 | NV6697,NV346,D,I,PK478,PK456,2 430 | GN0639,NV880,D,I,PK424,PK458,2 431 | NV851,NV3263,I,D,PK461,PK170,2 432 | NV6697,NV828,D,I,PK478,PK461,2 433 | NV3620,NV828,D,I,PK481,PK461,2 434 | NV3260,NV830,D,I,PK326,PK275,2 435 | NV6698,NV640,D,I,PK480,PK466,2 436 | NV3620,NV628,D,I,PK481,PK485,2 437 | NV6699,NV320,D,I,PK408,PK373,2 438 | NV3620,NV318,D,I,PK481,PK464,2 439 | NV851,NV6577,I,D,PK461,PK477,2 440 | NV3513,NV674,D,I,PK490,PK280,2 441 | NV6700,NV3120,D,I,PK473,PK257,2 442 | NV883,NV6612,I,D,PK466,PK478,2 443 | NV6117,NV320,I,I,PK393,PK373,2 444 | NV6772,NV880,D,I,PK395,PK458,2 445 | NV641,NV860,I,I,PK317,PK365,2 446 | NV6377,NV831,D,D,PK327,PK353,2 447 | NV6294,NV698,D,I,PK253,PK487,2 448 | NV6405,NV840,D,I,PK174,PK104,2 449 | NV835,NV690,I,I,PK275,PK208,2 450 | NV6153,NV3273,I,D,PK292,PK297,2 451 | NV835,NV6722,I,D,PK275,PK196,2 452 | NV841,NV6574,I,D,PK274,PK293,2 453 | NV6294,NV614,D,I,PK253,PK260,2 454 | NV6171,NV6685,I,D,PK295,PK300,2 455 | NV317,NV320,I,I,PK391,PK373,2 456 | NV6294,NV318,D,I,PK253,PK464,2 457 | NV689,NV316,I,I,PK464,PK112,2 458 | NV629,NV848,I,I,PK311,PK316,2 459 | NV6453,NV308,D,I,PK315,PK333,2 460 | NV643,NV3194,I,D,PK269,PK499,2 461 | NV687,NV6713,I,D,PK261,PK266,2 462 | NV643,NV6488,I,D,PK269,PK256,2 463 | NV643,NV670,I,I,PK269,PK468,2 464 | NV615,NV6325,I,D,PK354,PK380,2 465 | NV619,NV688,I,I,PK344,PK347,2 466 | NV6443,NV632,D,I,PK256,PK258,2 467 | NV837,NV3194,I,D,PK499,PK499,2 468 | NV629,NV3273,I,D,PK311,PK297,2 469 | NV6145,NV672,I,I,PK343,PK308,2 470 | NV6145,NV6588,I,D,PK343,PK331,2 471 | NV628,NV858,D,I,PK485,PK265,2 472 | NV6294,NV828,D,I,PK253,PK461,2 473 | NV837,NV318,I,I,PK499,PK464,2 474 | NV871,NV6616,I,D,PK455,PK185,2 475 | NV859,NV6478,I,D,PK366,PK396,2 476 | NV632,NV692,D,I,PK258,PK089,2 477 | NV632,NV858,D,I,PK258,PK265,2 478 | NV6163,NV698,I,I,PK495,PK487,2 479 | NV689,NV6734,I,D,PK464,PK171,2 480 | NV698,NV810,D,I,PK487,PK445,2 481 | NV689,NV6700,I,D,PK464,PK473,2 482 | NV689,NV6684,I,D,PK464,PK482,2 483 | NV633,NV3993,I,D,PK375,PK414,2 484 | NV6163,NV810,I,I,PK495,PK445,2 485 | NV837,NV670,I,I,PK499,PK468,2 486 | NV813,NV3702,I,I,PK324,PK330,2 487 | NV6307,NV690,D,I,PK272,PK208,2 488 | NV633,NV840,I,I,PK133,PK104,2 489 | NV6163,NV898,I,I,PK495,PK159,2 490 | NV617,NV880,I,I,PK427,PK458,2 491 | NV309,NV675,I,D,PK454,PK452,2 492 | NV689,NV634,I,I,PK464,PK454,2 493 | NV689,NV630,I,I,PK464,PK474,2 494 | NV6301,NV6720,D,D,PK346,PK346,2 495 | NV6153,NV6742,I,D,PK292,PK295,2 496 | NV689,NV6160,I,I,PK464,PK190,2 497 | NV6549,NV840,D,I,PK390,PK349,2 498 | NV841,NV3269,I,D,PK274,PK284,2 499 | NV3120,NV898,D,I,PK257,PK159,2 500 | NV873,NV6736,I,D,PK296,PK317,2 501 | NV317,NV608,I,I,PK149,PK108,2 502 | NV698,NV398,D,I,PK487,PK271,2 503 | NV679,NV880,I,I,PK411,PK458,2 504 | NV6505,NV664,D,I,PK405,PK363,2 505 | NV6785,NV674,D,I,PK271,PK280,2 506 | NV651,NV846,I,I,PK159,PK129,2 507 | NV6535,NV6198,D,I,PK273,PK286,2 508 | NV317,NV6652,I,D,PK391,PK407,2 509 | NV6513,NV670,D,I,PK254,PK468,2 510 | NV6785,NV640,D,I,PK271,PK466,2 511 | NV6513,NV698,D,I,PK254,PK487,2 512 | NV309,NV3615,I,D,PK454,PK447,2 513 | NV628,NV828,D,I,PK485,PK461,2 514 | NV6135,NV303,I,D,PK475,PK268,2 515 | NV831,NV6544,I,D,PK353,PK376,2 516 | NV3120,NV662,D,I,PK257,PK094,2 517 | NV309,NV316,I,I,PK454,PK112,2 518 | NV6135,NV318,I,I,PK475,PK464,2 519 | NV6773,NV6118,D,I,PK488,PK460,2 520 | NV6533,NV698,D,I,PK493,PK487,2 521 | NV831,NV836,I,I,PK353,PK378,2 522 | NV6527,NV880,D,I,PK381,PK458,2 523 | NV6533,NV3120,D,I,PK493,PK257,2 524 | NV307,NV6784,I,D,PK334,PK359,2 525 | NV6533,NV346,D,I,PK493,PK456,2 526 | NV6505,NV840,D,I,PK405,PK349,2 527 | NV651,NV840,I,I,PK159,PK104,2 528 | NV6145,NV3655,I,D,PK343,PK372,2 529 | NV6145,NV633,I,D,PK343,PK375,2 530 | NV621,NV664,I,I,PK386,PK363,2 531 | NV6145,NV6544,I,D,PK343,PK376,2 532 | NV679,NV664,I,I,PK167,PK107,2 533 | NV827,NV664,I,I,PK140,PK107,2 534 | NV6479,NV318,D,I,PK498,PK464,2 535 | NV679,NV608,I,I,PK167,PK108,2 536 | NV627,NV860,I,I,PK322,PK365,2 537 | NV6479,NV670,D,I,PK498,PK468,2 538 | NV621,NV664,I,I,PK144,PK107,2 539 | NV6785,NV692,D,I,PK271,PK089,2 540 | NV6773,NV305,D,D,PK488,PK254,2 541 | NV831,NV860,I,I,PK353,PK365,2 542 | NV847,NV336,I,I,PK453,PK165,2 543 | NV6489,NV6784,D,D,PK352,PK359,2 544 | NV6199,NV6652,I,D,PK372,PK407,2 545 | NV883,NV316,I,I,PK466,PK112,1 546 | NV698,NV690,D,I,PK487,PK208,1 547 | NV831,NV6578,I,D,PK353,PK480,1 548 | NV6731,NV674,D,I,PK262,PK280,1 549 | NV831,NV6642,I,D,PK353,PK401,1 550 | NV698,NV820,D,I,PK487,PK263,1 551 | NV873,NV6308,I,D,PK296,PK272,1 552 | NV813,NV308,I,I,PK324,PK333,1 553 | NV6731,NV898,D,I,PK262,PK159,1 554 | NV851,NV6576,I,D,PK461,PK472,1 555 | NV851,NV6514,I,D,PK461,PK195,1 556 | NV6731,NV692,D,I,PK262,PK089,1 557 | NV859,NV308,I,I,PK366,PK333,1 558 | NV673,NV3993,I,D,PK373,PK414,1 559 | NV858,NV694,D,I,PK265,PK453,1 560 | NV827,NV6632,I,D,PK382,PK398,1 561 | NV858,NV690,D,I,PK265,PK208,1 562 | NV673,NV6642,I,D,PK373,PK401,1 563 | NV827,NV6578,I,D,PK382,PK480,1 564 | NV891,NV6700,I,D,PK458,PK473,1 565 | NV835,NV383,I,D,PK275,PK290,1 566 | NV835,NV6198,I,I,PK275,PK286,1 567 | NV827,NV6772,I,D,PK382,PK395,1 568 | NV673,NV608,I,I,PK131,PK108,1 569 | NV6731,NV610,D,I,PK262,PK274,1 570 | NV827,NV6811,I,D,PK382,PK399,1 571 | NV831,NV6325,I,D,PK353,PK380,1 572 | NV851,NV6734,I,D,PK461,PK171,1 573 | NV859,NV3655,I,D,PK366,PK372,1 574 | NV813,NV638,I,I,PK324,PK334,1 575 | NV851,NV6616,I,D,PK461,PK185,1 576 | NV858,NV398,D,I,PK265,PK271,1 577 | NV6737,NV846,D,I,PK414,PK370,1 578 | NV6733,NV664,D,I,PK410,PK363,1 579 | NV675,NV3446,I,D,PK452,PK150,1 580 | NV675,NV634,I,I,PK452,PK454,1 581 | NV871,NV3263,I,D,PK455,PK170,1 582 | NV849,NV3652,I,D,PK377,PK415,1 583 | NV6811,NV880,D,I,PK399,PK458,1 584 | NV6753,NV3652,D,D,PK378,PK415,1 585 | NV849,NV320,I,I,PK377,PK373,1 586 | NV847,NV6762,I,D,PK453,PK467,1 587 | NV679,NV664,I,I,PK411,PK363,1 588 | NV6753,NV846,D,I,PK378,PK370,1 589 | NV6785,NV694,D,I,PK271,PK453,1 590 | NV847,GN0678,I,D,PK453,PK442,1 591 | NV6763,NV392,D,I,PK376,PK402,1 592 | NV6785,NV690,D,I,PK271,PK208,1 593 | NV6785,NV676,D,I,PK271,PK463,1 594 | NV6763,NV654,D,I,PK376,PK377,1 595 | NV847,NV6748,I,D,PK453,PK179,1 596 | NV6773,NV828,D,I,PK488,PK461,1 597 | NV847,NV3446,I,D,PK453,PK150,1 598 | NV847,NV3615,I,D,PK453,PK447,1 599 | NV6773,NV670,D,I,PK488,PK468,1 600 | NV871,NV3615,I,D,PK455,PK447,1 601 | NV847,NV6708,I,D,PK453,PK443,1 602 | NV891,NV3263,I,D,PK458,PK170,1 603 | NV6773,NV614,D,I,PK488,PK260,1 604 | NV677,NV6724,I,D,PK449,PK147,1 605 | NV6773,NV318,D,I,PK488,PK464,1 606 | NV883,NV6616,I,D,PK466,PK185,1 607 | NV847,NV6376,I,D,PK453,PK168,1 608 | NV847,NV634,I,I,PK453,PK454,1 609 | NV687,NV6540,I,D,PK261,PK145,1 610 | NV849,NV608,I,I,PK135,PK108,1 611 | NV851,NV3280,I,D,PK461,PK174,1 612 | NV6749,NV6742,D,D,PK276,PK295,1 613 | NV883,NV6160,I,I,PK466,PK190,1 614 | NV837,NV346,I,I,PK499,PK456,1 615 | NV6733,NV880,D,I,PK410,PK458,1 616 | NV6735,NV6116,D,I,PK286,PK292,1 617 | NV849,NV882,I,I,PK377,PK338,1 618 | NV849,NV6714,I,D,PK377,PK369,1 619 | NV689,NV6644,I,D,PK464,PK479,1 620 | NV849,NV6642,I,D,PK377,PK401,1 621 | NV837,NV6316,I,D,PK499,PK270,1 622 | NV849,NV664,I,I,PK135,PK107,1 623 | NV837,NV810,I,I,PK499,PK445,1 624 | NV6737,NV320,D,I,PK414,PK373,1 625 | NV837,NV820,I,I,PK499,PK263,1 626 | NV689,NV6577,I,D,PK464,PK477,1 627 | NV6737,NV6134,D,I,PK169,PK149,1 628 | NV6737,NV664,D,I,PK169,PK107,1 629 | NV837,NV898,I,I,PK499,PK159,1 630 | NV6737,NV880,D,I,PK169,PK106,1 631 | NV891,NV6548,I,D,PK458,PK187,1 632 | NV891,NV6446,I,D,PK458,PK184,1 633 | NV6739,NV6486,D,D,PK357,PK362,1 634 | NV6739,NV654,D,I,PK357,PK377,1 635 | NV689,NV3263,I,D,PK464,PK170,1 636 | NV891,NV634,I,I,PK458,PK454,1 637 | NV841,NV6540,I,D,PK274,PK145,1 638 | NV6739,NV826,D,I,PK357,PK382,1 639 | NV871,NV6230,I,D,PK455,PK155,1 640 | NV674,NV616,D,I,PK280,PK303,1 641 | NV674,NV656,D,I,PK280,PK304,1 642 | NV831,NV688,I,I,PK353,PK347,1 643 | GN0409,NV320,D,I,PK403,PK373,1 644 | NV6727,NV6116,D,I,PK291,PK292,1 645 | NV6163,NV618,I,I,PK495,PK262,1 646 | NV6157,NV698,I,I,PK467,PK487,1 647 | NV6155,NV6574,I,D,PK285,PK293,1 648 | NV6155,NV6318,I,D,PK285,PK294,1 649 | NV6155,NV3273,I,D,PK285,PK297,1 650 | NV6153,NV6556,I,D,PK292,PK282,1 651 | NV6153,NV616,I,I,PK292,PK303,1 652 | NV6153,NV3465,I,D,PK292,PK309,1 653 | NV6153,NV0746,I,D,PK292,PK315,1 654 | NV615,NV6578,I,D,PK354,PK480,1 655 | NV6145,NV6325,I,D,PK343,PK380,1 656 | NV6145,NV3787,I,D,PK343,PK322,1 657 | NV6135,NV692,I,I,PK475,PK089,1 658 | NV6135,NV670,I,I,PK475,PK468,1 659 | NV613,NV682,I,I,PK303,PK471,1 660 | NV613,NV638,I,I,PK303,PK334,1 661 | NV6119,NV859,I,D,PK340,PK366,1 662 | NV6119,NV831,I,D,PK340,PK353,1 663 | NV6119,NV6325,I,D,PK340,PK380,1 664 | NV6119,NV3787,I,D,PK340,PK322,1 665 | NV6119,NV3631,I,D,PK340,PK348,1 666 | NV6117,NV6652,I,D,PK393,PK407,1 667 | NV6117,NV6632,I,D,PK393,PK398,1 668 | NV6117,NV3993,I,D,PK393,PK414,1 669 | NV3992,NV820,D,I,PK474,PK263,1 670 | NV3992,NV810,D,I,PK474,PK445,1 671 | NV393,NV634,I,I,PK472,PK454,1 672 | NV393,NV628,I,I,PK472,PK485,1 673 | NV391,NV658,I,I,PK336,PK352,1 674 | NV383,NV629,I,D,PK290,PK311,1 675 | NV6163,NV346,I,I,PK495,PK456,1 676 | NV6163,NV670,I,I,PK495,PK468,1 677 | NV6725,NV664,D,I,PK147,PK107,1 678 | NV6171,NV629,I,D,PK295,PK311,1 679 | NV6313,NV3194,D,D,PK501,PK499,1 680 | NV6307,NV6198,D,I,PK272,PK286,1 681 | NV6301,NV6325,D,D,PK346,PK380,1 682 | NV6294,NV694,D,I,PK253,PK453,1 683 | NV6294,NV670,D,I,PK253,PK468,1 684 | NV6294,NV346,D,I,PK253,PK456,1 685 | NV629,NV6308,I,D,PK311,PK272,1 686 | NV629,NV3277,I,D,PK311,PK326,1 687 | NV628,NV820,D,I,PK485,PK263,1 688 | NV628,NV698,D,I,PK485,PK487,1 689 | NV628,NV670,D,I,PK485,PK468,1 690 | NV628,NV632,D,I,PK485,PK258,1 691 | NV628,NV3120,D,I,PK485,PK257,1 692 | NV627,NV6710,I,D,PK322,PK325,1 693 | NV627,NV308,I,I,PK322,PK333,1 694 | NV6241,NV882,D,I,PK412,PK338,1 695 | NV6241,NV6156,D,I,PK412,PK371,1 696 | NV6241,NV608,D,I,PK168,PK108,1 697 | NV621,NV846,I,I,PK386,PK370,1 698 | NV621,NV840,I,I,PK144,PK104,1 699 | NV621,NV6811,I,D,PK386,PK399,1 700 | NV6199,NV840,I,I,PK372,PK349,1 701 | NV6199,NV6772,I,D,PK372,PK395,1 702 | NV6199,NV6578,I,D,PK372,PK480,1 703 | NV619,NV831,I,D,PK344,PK353,1 704 | NV619,NV6720,I,D,PK344,PK346,1 705 | NV6171,NV6736,I,D,PK295,PK317,1 706 | NV6171,NV6556,I,D,PK295,PK282,1 707 | NV6171,NV6462,I,D,PK295,PK323,1 708 | NV383,NV616,I,I,PK290,PK303,1 709 | NV382,NV686,D,I,PK313,PK301,1 710 | NV3786,NV699,D,D,PK348,PK374,1 711 | NV3703,NV6540,I,D,PK278,PK145,1 712 | NV3195,NV322,D,I,PK437,PK386,1 713 | NV317,NV840,I,I,PK391,PK349,1 714 | NV3131,NV699,I,D,PK351,PK374,1 715 | NV3131,NV6714,I,D,PK351,PK369,1 716 | NV3131,NV6578,I,D,PK351,PK480,1 717 | NV3131,NV6297,I,D,PK351,PK368,1 718 | NV3120,NV810,D,I,PK257,PK445,1 719 | NV3120,NV694,D,I,PK257,PK453,1 720 | NV3120,NV670,D,I,PK257,PK468,1 721 | NV3120,NV640,D,I,PK257,PK466,1 722 | NV3119,NV6578,I,D,PK368,PK480,1 723 | NV3119,NV6325,I,D,PK368,PK380,1 724 | NV309,NV6738,I,D,PK454,PK117,1 725 | NV309,NV6734,I,D,PK454,PK171,1 726 | NV309,NV6708,I,D,PK454,PK443,1 727 | NV307,NV6528,I,D,PK334,PK381,1 728 | NV305,NV690,I,I,PK270,PK208,1 729 | NV305,NV6540,I,D,PK270,PK145,1 730 | NV304,NV848,D,I,PK332,PK316,1 731 | NV303,NV810,I,I,PK268,PK445,1 732 | NV303,NV692,I,I,PK268,PK089,1 733 | NV303,NV674,I,I,PK268,PK280,1 734 | NV0747,NV608,D,I,PK184,PK108,1 735 | NV0747,NV322,D,I,PK426,PK386,1 736 | GN0645,NV880,D,I,PK422,PK458,1 737 | GN0639,NV882,D,I,PK424,PK338,1 738 | GN0639,NV846,D,I,PK183,PK129,1 739 | GN0629,NV846,D,I,PK406,PK370,1 740 | GN0629,NV846,D,I,PK164,PK129,1 741 | NV3197,NV672,I,I,PK329,PK308,1 742 | NV323,NV810,I,I,PK260,PK445,1 743 | NV3260,NV642,D,I,PK326,PK337,1 744 | NV3553,NV880,D,I,PK176,PK106,1 745 | NV3702,NV830,D,I,PK330,PK275,1 746 | NV3702,NV688,D,I,PK330,PK347,1 747 | NV3702,NV642,D,I,PK330,PK337,1 748 | NV3654,NV682,D,I,PK294,PK471,1 749 | NV3654,NV642,D,I,PK294,PK337,1 750 | NV3654,NV638,D,I,PK294,PK334,1 751 | NV3654,NV3702,D,I,PK294,PK330,1 752 | NV3654,NV304,D,I,PK294,PK332,1 753 | NV3622,NV688,D,I,PK362,PK347,1 754 | NV3622,NV320,D,I,PK134,PK131,1 755 | NV3620,NV820,D,I,PK481,PK263,1 756 | NV3620,NV6118,D,I,PK481,PK460,1 757 | NV3620,NV3120,D,I,PK481,PK257,1 758 | NV3513,NV820,D,I,PK490,PK263,1 759 | NV3270,NV608,D,I,PK170,PK108,1 760 | NV3513,NV694,D,I,PK490,PK453,1 761 | NV3513,NV670,D,I,PK490,PK468,1 762 | NV3513,NV3120,D,I,PK490,PK257,1 763 | NV347,NV6154,I,I,PK456,PK156,1 764 | NV343,NV6612,I,D,PK460,PK478,1 765 | NV343,NV6504,I,D,PK460,PK193,1 766 | NV343,NV634,I,I,PK460,PK454,1 767 | NV343,NV6230,I,D,PK460,PK155,1 768 | NV337,NV688,I,I,PK371,PK347,1 769 | NV337,NV6642,I,D,PK371,PK401,1 770 | NV3278,NV880,D,I,PK392,PK458,1 771 | NV3270,NV882,D,I,PK420,PK338,1 772 | NV3270,NV6134,D,I,PK170,PK149,1 773 | NV6313,NV6144,D,I,PK501,PK261,1 774 | NV6313,NV632,D,I,PK501,PK258,1 775 | NV6313,NV6510,D,D,PK501,PK276,1 776 | NV6633,NV322,D,I,PK398,PK386,1 777 | NV6663,NV3652,D,D,PK365,PK415,1 778 | NV6657,NV860,D,I,PK323,PK365,1 779 | NV6657,NV848,D,I,PK323,PK316,1 780 | NV6657,NV834,D,I,PK323,PK327,1 781 | NV6657,NV638,D,I,PK323,PK334,1 782 | NV6657,NV304,D,I,PK323,PK332,1 783 | NV6655,NV674,D,I,PK491,PK280,1 784 | NV6655,NV6713,D,D,PK491,PK266,1 785 | NV6655,NV662,D,I,PK491,PK094,1 786 | NV6655,NV6488,D,D,PK491,PK256,1 787 | NV6655,NV318,D,I,PK491,PK464,1 788 | NV6653,NV664,D,I,PK407,PK363,1 789 | NV6653,NV320,D,I,PK407,PK373,1 790 | NV665,NV6734,I,D,PK468,PK171,1 791 | NV665,NV6644,I,D,PK468,PK479,1 792 | NV665,NV628,I,I,PK468,PK485,1 793 | NV665,NV336,I,I,PK468,PK165,1 794 | NV665,NV316,I,I,PK468,PK112,1 795 | NV665,GN0630,I,D,PK468,PK448,1 796 | NV6645,NV694,D,I,PK479,PK453,1 797 | NV6645,NV618,D,I,PK479,PK262,1 798 | NV6645,NV614,D,I,PK479,PK260,1 799 | NV6645,NV318,D,I,PK479,PK464,1 800 | NV6643,NV654,D,I,PK402,PK377,1 801 | NV6642,NV840,D,I,PK160,PK104,1 802 | NV6642,NV664,D,I,PK160,PK107,1 803 | NV6633,NV846,D,I,PK398,PK370,1 804 | NV6633,NV846,D,I,PK157,PK129,1 805 | NV6633,NV654,D,I,PK398,PK377,1 806 | NV6663,NV6472,D,D,PK365,PK356,1 807 | NV6663,NV654,D,I,PK365,PK377,1 808 | NV6684,NV614,D,I,PK482,PK260,1 809 | NV6711,NV6162,D,I,PK301,PK324,1 810 | NV6725,NV654,D,I,PK389,PK377,1 811 | NV6719,NV686,D,I,PK288,PK301,1 812 | NV6719,NV656,D,I,PK288,PK304,1 813 | NV6719,NV6556,D,D,PK288,PK282,1 814 | NV6719,NV6116,D,I,PK288,PK292,1 815 | NV6717,NV658,D,I,PK337,PK352,1 816 | NV6715,NV308,D,I,PK325,PK333,1 817 | NV6714,NV688,D,I,PK369,PK347,1 818 | NV6714,NV6325,D,D,PK369,PK380,1 819 | NV6713,NV810,D,I,PK266,PK445,1 820 | NV6713,NV690,D,I,PK266,PK208,1 821 | NV6713,NV676,D,I,PK266,PK463,1 822 | NV6713,NV398,D,I,PK266,PK271,1 823 | NV6711,NV382,D,I,PK301,PK313,1 824 | NV6684,NV670,D,I,PK482,PK468,1 825 | NV6711,NV302,D,I,PK301,PK319,1 826 | NV6699,NV880,D,I,PK408,PK458,1 827 | NV6699,NV840,D,I,PK165,PK104,1 828 | NV6699,NV320,D,I,PK165,PK131,1 829 | NV6698,NV810,D,I,PK480,PK445,1 830 | NV6698,NV3120,D,I,PK480,PK257,1 831 | NV6697,NV858,D,I,PK478,PK265,1 832 | NV6697,NV810,D,I,PK478,PK445,1 833 | NV6697,NV692,D,I,PK478,PK089,1 834 | NV6685,NV831,D,D,PK300,PK353,1 835 | NV6685,NV6736,D,D,PK300,PK317,1 836 | NV6685,NV3702,D,I,PK300,PK330,1 837 | NV6684,NV698,D,I,PK482,PK487,1 838 | NV6633,NV3652,D,D,PK398,PK415,1 839 | NV6633,NV320,D,I,PK398,PK373,1 840 | NV6313,NV6732,D,D,PK501,PK269,1 841 | NV659,NV630,I,I,PK471,PK474,1 842 | NV6453,NV642,D,I,PK315,PK337,1 843 | NV6453,NV3702,D,I,PK315,PK330,1 844 | NV6443,NV858,D,I,PK256,PK265,1 845 | NV6443,NV6510,D,D,PK256,PK276,1 846 | NV6443,NV346,D,I,PK256,PK456,1 847 | NV643,NV694,I,I,PK269,PK453,1 848 | NV643,NV3703,I,D,PK269,PK278,1 849 | NV641,NV624,I,I,PK317,PK344,1 850 | NV6405,NV846,D,I,PK174,PK129,1 851 | NV6405,NV320,D,I,PK174,PK131,1 852 | NV6375,NV840,D,I,PK155,PK104,1 853 | NV6375,NV664,D,I,PK155,PK107,1 854 | NV635,NV834,I,I,PK333,PK327,1 855 | NV635,NV6784,I,D,PK333,PK359,1 856 | NV635,NV6588,I,D,PK333,PK331,1 857 | NV635,NV3631,I,D,PK333,PK348,1 858 | NV635,NV3410,I,D,PK333,PK355,1 859 | NV635,NV308,I,I,PK333,PK333,1 860 | NV633,NV6642,I,D,PK375,PK401,1 861 | NV633,NV608,I,I,PK133,PK108,1 862 | NV633,NV3655,I,D,PK375,PK372,1 863 | NV633,GN0428,I,D,PK375,PK367,1 864 | NV6324,NV880,D,I,PK380,PK458,1 865 | NV6324,NV654,D,I,PK380,PK377,1 866 | NV632,NV898,D,I,PK258,PK159,1 867 | NV632,NV690,D,I,PK258,PK208,1 868 | NV632,NV318,D,I,PK258,PK464,1 869 | NV6317,NV6632,D,D,PK387,PK398,1 870 | NV6317,NV320,D,I,PK387,PK373,1 871 | NV6453,NV830,D,I,PK315,PK275,1 872 | NV6479,NV640,D,I,PK498,PK466,1 873 | NV6479,NV662,D,I,PK498,PK094,1 874 | NV655,NV3263,I,D,PK457,PK170,1 875 | NV659,NV6160,I,I,PK471,PK190,1 876 | NV6578,NV880,D,I,PK152,PK106,1 877 | NV6578,NV6772,D,D,PK394,PK395,1 878 | NV6577,NV670,D,I,PK477,PK468,1 879 | NV657,NV682,I,I,PK316,PK471,1 880 | NV6551,NV840,D,I,PK146,PK104,1 881 | NV6551,NV826,D,I,PK388,PK382,1 882 | NV6551,NV654,D,I,PK388,PK377,1 883 | GN0409,NV840,D,I,PK403,PK349,1 884 | NV655,NV6724,I,D,PK457,PK147,1 885 | NV655,NV630,I,I,PK457,PK474,1 886 | NV655,NV6230,I,D,PK457,PK155,1 887 | NV655,NV380,I,I,PK457,PK449,1 888 | NV6535,NV692,D,I,PK273,PK089,1 889 | NV6479,NV698,D,I,PK498,PK487,1 890 | NV6535,NV690,D,I,PK273,PK208,1 891 | NV6533,NV828,D,I,PK493,PK461,1 892 | NV6533,NV6510,D,D,PK493,PK276,1 893 | NV6527,NV840,D,I,PK381,PK349,1 894 | NV6527,NV6811,D,D,PK381,PK399,1 895 | NV6525,NV688,D,I,PK356,PK347,1 896 | NV6513,NV898,D,I,PK254,PK159,1 897 | NV6513,NV828,D,I,PK254,PK461,1 898 | NV6513,NV694,D,I,PK254,PK453,1 899 | NV6513,NV318,D,I,PK254,PK464,1 900 | NV651,NV840,I,I,PK400,PK349,1 901 | NV6479,NV858,D,I,PK498,PK265,1 902 | NV6479,NV828,D,I,PK498,PK461,1 903 | NV891,NV6738,I,D,PK458,PK117,1 904 | -------------------------------------------------------------------------------- /data/tickets_property_ranking.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/data/tickets_property_ranking.csv -------------------------------------------------------------------------------- /model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/model/__init__.py -------------------------------------------------------------------------------- /model/question1.py: -------------------------------------------------------------------------------- 1 | # 导入程序所需要的包 2 | import pandas as pd 3 | import numpy as np 4 | import matplotlib.pyplot as plt 5 | import csv 6 | # 下面这三行代码是为了画图可以显示中文 7 | from pylab import * 8 | mpl.rcParams['font.sans-serif'] = ['SimHei'] 9 | mpl.rcParams['axes.unicode_minus'] = False 10 | 11 | 12 | 13 | def type_is_same(puck_type, airport_type): 14 | # 判断飞机的到达(或起飞)类型是否与登机口的到达(或起飞)类型相同 15 | airport_type = airport_type.split(',') 16 | if puck_type in airport_type: 17 | return 1 18 | else: 19 | return 0 20 | 21 | 22 | def classify_airport(all_airports): 23 | # airport 是所有的登机口 24 | # classes: 字典用于存储每种类别的登机口 25 | # 第一问我们将登机口按照到达类型,出发类型,允许降落的飞机类型分类 26 | classes = {0: [], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 27 | 9: [], 10: [], 11: [], 12: [], 13: [], 14: [], 15: [], 16: [], 17: []} 28 | 29 | for airport in all_airports: 30 | # 登机口的飞机类型为窄体机 31 | if airport['body_type'] == 'N': 32 | if airport['a_type'] == 'D': 33 | if airport['d_type'] == 'D': 34 | classes[0].append(airport) 35 | elif airport['d_type'] == 'I': 36 | classes[1].append(airport) 37 | else: 38 | classes[2].append(airport) 39 | elif airport['a_type'] == 'I': 40 | if airport['d_type'] == 'D': 41 | classes[3].append(airport) 42 | elif airport['d_type'] == 'I': 43 | classes[4].append(airport) 44 | else: 45 | classes[5].append(airport) 46 | else: 47 | if airport['d_type'] == 'D': 48 | classes[6].append(airport) 49 | elif airport['d_type'] == 'I': 50 | classes[7].append(airport) 51 | else: 52 | classes[8].append(airport) 53 | else: 54 | if airport['a_type'] == 'D': 55 | if airport['d_type'] == 'D': 56 | classes[9].append(airport) 57 | elif airport['d_type'] == 'I': 58 | classes[10].append(airport) 59 | else: 60 | classes[11].append(airport) 61 | elif airport['a_type'] == 'I': 62 | if airport['d_type'] == 'D': 63 | classes[12].append(airport) 64 | elif airport['d_type'] == 'I': 65 | classes[13].append(airport) 66 | else: 67 | classes[14].append(airport) 68 | else: 69 | if airport['d_type'] == 'D': 70 | classes[15].append(airport) 71 | elif airport['d_type'] == 'I': 72 | classes[16].append(airport) 73 | else: 74 | classes[17].append(airport) 75 | 76 | return classes 77 | 78 | 79 | def classify_puck(all_pucks): 80 | # all_pucks: 列表,所有转场记录的飞机航班 81 | # puck_classes: 字典,每种类别的转场记录飞机航班 82 | 83 | puck_classes = {0: [], 1: [], 2: [], 3: [], 84 | 4: [], 5: [], 6: [], 7: []} 85 | for puck in all_pucks: 86 | if puck['plane_type'] == 'N': 87 | if puck['a_type'] == 'D': 88 | if puck['d_type'] == 'D': 89 | puck_classes[0].append(puck) 90 | else: 91 | puck_classes[1].append(puck) 92 | else: 93 | if puck['d_type'] == 'D': 94 | puck_classes[2].append(puck) 95 | else: 96 | puck_classes[3].append(puck) 97 | else: 98 | if puck['a_type'] == 'D': 99 | if puck['d_type'] == 'D': 100 | puck_classes[4].append(puck) 101 | else: 102 | puck_classes[5].append(puck) 103 | else: 104 | if puck['d_type'] == 'D': 105 | puck_classes[6].append(puck) 106 | else: 107 | puck_classes[7].append(puck) 108 | 109 | return puck_classes 110 | 111 | 112 | def create_gates(gates): 113 | # puck_data : puck_dataFrame类型,包含全部登机口的信息 114 | # puck_data的形状是[num_gates, 6] 115 | # 返回:airports: 包含全部登机口的列表,每一个元素是一个登机口 116 | airports = [] 117 | for i in range(gates.shape[0]): 118 | gate_data = gates.loc[i, :] 119 | gate = {'gate': gate_data['登机口'], 'terminal': gate_data['终端厅'], 'region': gate_data['区域'], 120 | 'a_type': gate_data['到达类型'], 121 | 'd_type': gate_data['出发类型'], 'body_type': gate_data['机体类别'], 'puck_records': [], 'assign_flag': False} 122 | airports.append(gate) 123 | 124 | return airports 125 | 126 | 127 | def create_pucks(pucks): 128 | # puck_data : puck_dataFrame类型,包含全部转场记录的信息 129 | # puck_data的形状是[num_pucks, 8] 130 | # 返回:allpucks: 包含全部转场记录的列表,每一个元素是一个转场记录 131 | allpucks = [] 132 | for i in range(pucks.shape[0]): 133 | puck_data = pucks.loc[i, :] 134 | puck = {'record': puck_data['飞机转场记录号'], 'arrive_time': puck_data['到达相对时间min'], 'a_flight': puck_data['到达航班'], 135 | 'a_type': puck_data['到达类型'], 136 | 'plane_type': puck_data['飞机型号'], 'depart_time': puck_data['出发相对时间min'], 'de_flight': puck_data['出发航班'], 137 | 'd_type': puck_data['出发类型'], 138 | 'airport': '', 'temporary': 0} 139 | 140 | allpucks.append(puck) 141 | 142 | return allpucks 143 | 144 | 145 | def plane_type_map(plane_type): 146 | # 本函数的功能是将飞机专场记录中的飞机型号转换为飞机类型 147 | # 宽体积的飞机类型 148 | Wide_body = ['332', '333', '33E', '33H', '33L', '773'] 149 | #窄体机的飞机类型 150 | Narrow_body = ['319', '320', '321', '323', '325', '738', '73A', '73E', '73H', '73L'] 151 | plane_type = str(plane_type) 152 | if (plane_type in Wide_body): 153 | return 'W' 154 | else: 155 | return 'N' 156 | 157 | 158 | def sort_pucks(puck_class): 159 | # 此函数将同一类别的转场记录按照起飞时间的先后排序 160 | # puck_class:列表 161 | # sort_puckclass: 排序好的转场记录,按照起飞时间非递减排序 162 | de_times = [puck['depart_time'] for puck in puck_class] 163 | sort_index = np.argsort(de_times) 164 | sort_puckclass = [puck_class[ind] for ind in sort_index] 165 | 166 | return sort_puckclass 167 | 168 | 169 | def greedyselector(sort_puck_class, airport): 170 | # 该函数的功能是采用贪心算法分配航班到登机口 171 | # sort_puck_class: 排序好的转场记录,列表形式 172 | # airport: 一个登机口 173 | if airport['assign_flag'] == False: # 登机口没有被分配 174 | start_times = [puck['arrive_time'] for puck in sort_puck_class] 175 | depart_times = [puck['depart_time'] for puck in sort_puck_class] 176 | j = 0 # 在输入的航班中,出发时间最早的航班下标 177 | while (sort_puck_class[j]['airport'] != ''): 178 | # 此while循环找到输入的所有航班中第一个没有被分配的航班下标 179 | j = j + 1 180 | # 将没有分配的航班分配给登机口 181 | sort_puck_class[j]['airport'] = airport['gate'] 182 | airport['puck_records'].append(sort_puck_class[j]['record']) 183 | k = j 184 | for i in range(j + 1, len(sort_puck_class)): 185 | if start_times[i] >= depart_times[k]: 186 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 187 | sort_puck_class[i]['airport'] = airport['gate'] 188 | k = i 189 | airport['puck_records'].append(sort_puck_class[k]['record']) 190 | 191 | airport['assign_flag'] = True 192 | print('gates{} is {}'.format(airport['gate'], airport['puck_records'])) 193 | return sort_puck_class, airport 194 | 195 | 196 | def greedyselector1(sort_puck_class, airport): 197 | # 该函数的功能是采用贪心算法分配航班到登机口 198 | # sort_puck_class: 排序好的转场记录,列表形式 199 | # airport: 一个登机口 200 | # airport['busy_time']表示该登机口的被占用时间,初始化为所有元素均为0的数组 201 | # 数组长度为288,我们将一天24小时按照5分钟分段,一共有288段。0表示该段时间没有被 202 | # 占用,1表示该段时间被占用了。比如,如果一个登机口0:00-1:00之间被航班占用,那么该 203 | # 登机口的'busy_time'前12个元素为1 204 | 205 | 206 | start_times = [puck['arrive_time'] for puck in sort_puck_class] 207 | depart_times = [puck['depart_time'] for puck in sort_puck_class] 208 | 209 | j = 0 210 | while (sort_puck_class[j]['airport'] != ''): 211 | # 此while循环找到输入的所有航班中第一个没有被分配的航班下标 212 | j = j + 1 213 | 214 | if airport['assign_flag'] == False: # 登机口没有被分配 215 | # 登机口被占用时间,初始化为空闲,24小时一共有288个5min段 216 | airport['busy_time'] = np.zeros(288) 217 | if start_times[j]==0: 218 | sp_ind = 0 219 | else: 220 | sp_ind = int(start_times[j] / 5) - 1 221 | ep_ind = int(depart_times[j] / 5) 222 | # 将没有分配的第j个航班分配给登机口 223 | sort_puck_class[j]['airport'] = airport['gate'] 224 | airport['puck_records'].append(sort_puck_class[j]['record']) 225 | airport['busy_time'][sp_ind:ep_ind] = 1 # 将航班占用的时间段标记为繁忙(1) 226 | 227 | k = j 228 | for i in range(j + 1, len(sort_puck_class)): 229 | if start_times[i] >= depart_times[k]: 230 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 231 | sort_puck_class[i]['airport'] = airport['gate'] 232 | k = i 233 | airport['puck_records'].append(sort_puck_class[k]['record']) 234 | s_ind = max(int(start_times[i] / 5) - 1, 0) 235 | e_ind = int(depart_times[i] / 5) 236 | airport['busy_time'][s_ind:e_ind] = 1 237 | airport['assign_flag'] = True 238 | else: 239 | for i in range(j + 1, len(sort_puck_class)): 240 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 241 | puck_time = np.zeros(288) 242 | s_ind = max(int(start_times[i] / 5) - 1, 0) 243 | e_ind = int(depart_times[i] / 5) 244 | puck_time[s_ind:e_ind] = 1 245 | temp_time = puck_time + airport['busy_time'] 246 | if np.max(temp_time) <= 1: 247 | airport['busy_time'] = temp_time 248 | sort_puck_class[i]['airport'] = airport['gate'] 249 | airport['puck_records'].append(sort_puck_class[k]['record']) 250 | 251 | print('gates{} has assigned {}'.format(airport['gate'], airport['puck_records'])) 252 | return sort_puck_class, airport 253 | 254 | 255 | def assign_puck(puck_class, gate_class): 256 | # 该函数的功能是分配航班到登机口 257 | if len(puck_class) == 0 or len(gate_class) == 0: 258 | return puck_class, gate_class 259 | sort_puck_class = sort_pucks(puck_class) 260 | puck = sort_puck_class[0] 261 | gate = gate_class[0] 262 | if puck['plane_type'] == gate['body_type']: 263 | if (type_is_same(puck['a_type'], gate['a_type']) & (type_is_same(puck['d_type'], gate['d_type']))): 264 | # final_gates = [] #; final_pucks = [] 265 | for i in range(len(gate_class)): 266 | puck_not_assign = [puck for puck in sort_puck_class if puck['airport'] == ''] 267 | if len(puck_not_assign) == 0: 268 | break 269 | sort_puck_class, airport = greedyselector1(sort_puck_class, gate_class[i]) 270 | gate_class[i] = airport 271 | # final_pucks.extend(assign_pucks) 272 | return sort_puck_class, gate_class 273 | else: 274 | return sort_puck_class, gate_class 275 | else: 276 | return sort_puck_class, gate_class 277 | 278 | 279 | # 读取文件 280 | gates = pd.read_csv('../data/gates (1).csv') 281 | new_gates = gates[['登机口', '终端厅', '区域', '到达类型', '出发类型', '机体类别']] 282 | 283 | puck_data = pd.read_csv('../data/puck_data.csv', encoding='gbk') 284 | cols = ['飞机转场记录号', '到达相对时间min', '到达航班', '到达类型', 285 | '飞机型号', '出发相对时间min', '出发航班', '出发类型'] 286 | puck_data = puck_data[cols] 287 | 288 | # 创建登机口列表和专场航班记录列表,每个元素为一个登机口或者航班,类型为字典类型 289 | airports = create_gates(new_gates) 290 | allpucks = create_pucks(puck_data) 291 | 292 | # 将登机口和转场记录航班分类 293 | puck_classes = classify_puck(allpucks) 294 | gate_classes = classify_airport(airports) 295 | 296 | # 出发类型和到达类型均为单类型的登机口类别在gate_classes的下标 297 | single_type_gate = [0, 1, 3, 4, 9, 10, 12, 13] 298 | # 出发类型或到达类型至少有一个为国内和国际的登机口类别在gate_classes的下标 299 | multi_type_gate = [2, 5, 6, 7, 8, 11, 14, 15, 16, 17] 300 | single_gate_classes = [gate_classes[code] for code in single_type_gate] 301 | multi_gate_classes = [gate_classes[code] for code in multi_type_gate] 302 | 303 | # 用于存储登机口和转场记录被分配的情况 304 | assign_pucks = []; 305 | assign_gates = [] 306 | 307 | # 先将所有类别的转场记录按照贪心算法分配到对应的单类型登机口 308 | for i in range(len(puck_classes)): 309 | as_puck, as_gate = assign_puck(puck_classes[i], single_gate_classes[i]) 310 | assign_pucks.append(as_puck) 311 | assign_gates.append(as_gate) 312 | 313 | # 将更新后的飞机转场记录分配到多类型登机口 314 | for j in range(len(multi_type_gate)): 315 | print(len(multi_gate_classes[j])) 316 | for k in range(len(puck_classes)): 317 | am_puck, am_gate = assign_puck(assign_pucks[k], multi_gate_classes[j]) 318 | ass_puck = [puck for puck in am_puck if puck['airport'] != ''] 319 | print('has assigned ' + str(len(ass_puck))) 320 | print(len(am_puck)) 321 | print('-------------------------------') 322 | assign_pucks[k] = am_puck 323 | multi_gate_classes[j] = am_gate 324 | # print(len(multi_gate_classes[j])) 325 | print('=================================') 326 | assign_gates.append(multi_gate_classes[j]) 327 | 328 | # assign_gates记录了所有的登机口分配的情况 329 | assign_gates = [assign_gates[i] for i in range(len(assign_gates)) if len(assign_gates[i]) > 0] 330 | 331 | gate_sum = 0 # 计数被分配的登机口数量 332 | puck_sum = 0 # 计数被分配的转场飞机记录数量 333 | 334 | final_assign_pucks = [] # 记录最终被分配到每个登机口的转场记录 335 | final_assign_gates = [] # 记录使用的登机口 336 | 337 | for i in range(len(assign_gates)): 338 | for j in range(len(assign_gates[i])): 339 | num_pucks = len(assign_gates[i][j]['puck_records']) 340 | puck_sum += num_pucks 341 | if num_pucks > 0: 342 | gate_sum += 1 343 | print(assign_gates[i][j]['puck_records']) 344 | final_assign_gates.append(assign_gates[i][j]['gate']) 345 | final_assign_pucks.append(assign_gates[i][j]['puck_records']) 346 | 347 | # 将使用的登机口与该登机口分配的转场飞机记录对应起来,存储成一个字典 348 | assign_dict = dict(zip(final_assign_gates, final_assign_pucks)) 349 | 350 | # 从字典写入csv文件 351 | 352 | csvFile3 = open('../result/问题一答案.csv', 'w', newline='') 353 | writer2 = csv.writer(csvFile3) 354 | for key in assign_dict: 355 | writer2.writerow([key, assign_dict[key]]) 356 | csvFile3.close() 357 | 358 | ###################### 画图 ################## 359 | 360 | num_assign_pucks = [len(pucks) for pucks in final_assign_pucks] # 每个登机口分配的飞机转场记录数量 361 | assign_dict = dict(zip(final_assign_gates, final_assign_pucks)) 362 | assign_dict1 = dict(zip(final_assign_gates, num_assign_pucks)) 363 | assigns = pd.DataFrame(assign_dict1, index=[0]) 364 | assigns = assigns.T 365 | 366 | ### 367 | # 画出被使用的登机口安排的航班数量图 368 | plt.figure(figsize=(20, 10)) 369 | x = list(assigns.index) 370 | plt.bar(x, assigns[0] * 2, facecolor='b') 371 | plt.xlabel('登机口', fontsize=18) 372 | plt.ylabel('登机口分配的总航班数量', fontsize=18) 373 | plt.xticks(rotation=90, fontsize=16) 374 | plt.title('登机口航班分配情况', fontsize=18) 375 | plt.yticks(fontsize=16) 376 | plt.show() 377 | 378 | # 按照宽体机和窄体机画出登机口安排的航班数量 379 | wide_gates = [airport['gate'] for airport in airports if airport['body_type'] == 'W'] 380 | narrow_gates = [airport['gate'] for airport in airports if airport['body_type'] == 'N'] 381 | 382 | narrow_assign_num = {}; 383 | wide_assign_num = {} 384 | for gate in assign_dict.keys(): 385 | if gate in wide_gates: 386 | # print(len(assign_dict[gate])) 387 | wide_assign_num[gate] = len(assign_dict[gate]) 388 | else: 389 | # print('narrow'+str(len(assign_dict[gate]))) 390 | narrow_assign_num[gate] = len(assign_dict[gate]) 391 | 392 | narrow_assign_num = pd.DataFrame(narrow_assign_num, index=[0]).T 393 | wide_assign_num = pd.DataFrame(wide_assign_num, index=[0]).T 394 | 395 | # 窄体登机口航班分配 396 | plt.figure(figsize=(20, 10)) 397 | x = list(narrow_assign_num.index) 398 | plt.bar(x, narrow_assign_num[0] * 2, facecolor='b') 399 | plt.xlabel('窄体机登机口', fontsize=18) 400 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 401 | plt.xticks(rotation=90, fontsize=16) 402 | plt.yticks(fontsize=16) 403 | plt.title('窄体登机口航班分配情况', fontsize=18) 404 | plt.show() 405 | 406 | # 宽体机登机口航班分 407 | plt.figure(figsize=(20, 10)) 408 | x = list(wide_assign_num.index) 409 | plt.bar(x, wide_assign_num[0] * 2, facecolor='b') 410 | plt.xlabel('宽体机登机口', fontsize=18) 411 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 412 | plt.xticks(rotation=90, fontsize=14) 413 | plt.yticks(fontsize=14) 414 | plt.title('宽体机登机口航班分配情况', fontsize=18) 415 | plt.show() 416 | 417 | ######## 按照卫星厅和航站楼登机口画出登机口的使用数目和登机口的平均使用率 ############# 418 | 419 | s_gates = [airport['gate'] for airport in airports if 'S' in airport['gate']] 420 | t_gates = [airport['gate'] for airport in airports if 'T' in airport['gate']] 421 | 422 | s_gates_assign = {}; 423 | t_gates_assign = {} 424 | for gate in assign_dict.keys(): 425 | if gate in s_gates: 426 | # print(len(assign_dict[gate])) 427 | s_gates_assign[gate] = len(assign_dict[gate]) 428 | else: 429 | # print('narrow'+str(len(assign_dict[gate]))) 430 | t_gates_assign[gate] = len(assign_dict[gate]) 431 | 432 | s_gates_assign = pd.DataFrame(s_gates_assign, index=[0]).T 433 | t_gates_assign = pd.DataFrame(t_gates_assign, index=[0]).T 434 | 435 | # 航站楼登机口航班分配 436 | plt.figure(figsize=(20, 10)) 437 | x = list(t_gates_assign.index) 438 | plt.bar(x, t_gates_assign[0] * 2, facecolor='b') 439 | plt.xlabel('航站楼登机口', fontsize=18) 440 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 441 | plt.xticks(rotation=90, fontsize=16) 442 | plt.yticks(fontsize=16) 443 | plt.title('航站楼登机口航班分配情况', fontsize=18) 444 | plt.show() 445 | 446 | # 卫星厅登机口航班分配 447 | plt.figure(figsize=(20, 10)) 448 | x = list(s_gates_assign.index) 449 | plt.bar(x, s_gates_assign[0] * 2, facecolor='b') 450 | plt.xlabel('卫星厅登机口', fontsize=18) 451 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 452 | plt.xticks(rotation=90, fontsize=16) 453 | plt.yticks(fontsize=16) 454 | plt.title('卫星厅登机口航班分配情况', fontsize=18) 455 | plt.show() 456 | 457 | #################### 登机口使用情况 ###################### 458 | 459 | s_airports = [airport for airport in airports if 'S' in airport['gate']] 460 | t_airports = [airport for airport in airports if 'T' in airport['gate']] 461 | 462 | s_busy_ratio = {}; 463 | t_busy_ratio = {} 464 | assign_airport = list(assign_dict.keys()) 465 | for s_airport in s_airports: 466 | if s_airport['gate'] in assign_airport: 467 | all_time = len(s_airport['busy_time']) 468 | num_pucks = len(s_airport['puck_records']) 469 | busy_ratio = np.round((np.sum(s_airport['busy_time']) - 9 * num_pucks) / all_time, 4) * 100 470 | s_busy_ratio[s_airport['gate']] = busy_ratio 471 | 472 | for t_airport in t_airports: 473 | if t_airport['gate'] in assign_airport: 474 | all_timet = len(t_airport['busy_time']) 475 | num_pucks = len(t_airport['puck_records']) 476 | busy_ratio = np.round((np.sum(t_airport['busy_time']) - 9 * num_pucks) / all_timet, 4) * 100 477 | t_busy_ratio[t_airport['gate']] = busy_ratio 478 | 479 | s_busy_ratio = pd.DataFrame(s_busy_ratio, index=[0]).T 480 | t_busy_ratio = pd.DataFrame(t_busy_ratio, index=[0]).T 481 | 482 | # 卫星厅登机口使用情况 483 | plt.figure(figsize=(20, 10)) 484 | x = list(s_busy_ratio.index) 485 | plt.bar(x, s_busy_ratio[0], facecolor='b') 486 | plt.xlabel('卫星厅登机口', fontsize=18) 487 | plt.ylabel('每个登机口使用率(%)', fontsize=18) 488 | plt.xticks(rotation=90, fontsize=16) 489 | plt.yticks(fontsize=16) 490 | plt.title('卫星厅登机口使用情况', fontsize=18) 491 | plt.show() 492 | 493 | # 航站楼登机口使用情况 494 | plt.figure(figsize=(20, 10)) 495 | x = list(t_busy_ratio.index) 496 | plt.bar(x, t_busy_ratio[0], facecolor='b') 497 | plt.xlabel('航站楼登机口', fontsize=18) 498 | plt.ylabel('每个登机口使用率(%)', fontsize=18) 499 | plt.xticks(rotation=90, fontsize=16) 500 | plt.yticks(fontsize=16) 501 | plt.title('航站楼登机口使用情况', fontsize=18) 502 | plt.show() 503 | -------------------------------------------------------------------------------- /model/question2.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | import csv 5 | # 下面这三行代码是为了画图可以显示中文 6 | from pylab import * 7 | 8 | mpl.rcParams['font.sans-serif'] = ['SimHei'] 9 | mpl.rcParams['axes.unicode_minus'] = False 10 | 11 | 12 | def type_is_same(puck_type, airport_type): 13 | # 判断飞机的到达(或起飞)类型是否与登机口的到达(或起飞)类型相同 14 | airport_type = airport_type.replace(' ', '') 15 | airport_type = airport_type.split(',') 16 | # airport_type = [s.split() for s in airport_type] 17 | # print('puck type is {}'.format(puck_type)) 18 | # print('gate type is {}'.format(airport_type)) 19 | if puck_type in airport_type: 20 | return True 21 | else: 22 | return False 23 | 24 | 25 | def classify_airport2(all_airports): 26 | # airport 是所有的登机口 27 | # classes: 字典用于存储每种类别的登机口 28 | # classes: 0存储航空楼的登机口, 1存储卫星厅的登机口 29 | classes = {0: [], 1: []} 30 | 31 | for airport in all_airports: 32 | if 'T' in airport['gate']: # 卫星厅的登机口 33 | classes[0].append(airport) 34 | if 'S' in airport['gate']: 35 | classes[1].append(airport) 36 | 37 | return classes 38 | 39 | 40 | def classify_puck2(all_pucks): 41 | # all_pucks: 列表,所有转场记录的飞机航班 42 | # puck_classes: 字典,每种类别的转场记录飞机航班 43 | # 此函数将all_pucks进行分类,并且按照优先级依次放入puck_classes字典中, 44 | # 字典中的键值越小,该类别的优先级越高 45 | 46 | puck_classes = {0: [], 1: [], 2: [], 3: []} 47 | for puck in all_pucks: 48 | if puck['a_type'] == 'I': 49 | if puck['d_type'] == 'D': 50 | puck_classes[0].append(puck) 51 | if puck['a_type'] == 'D': 52 | if puck['d_type'] == 'D': 53 | puck_classes[1].append(puck) 54 | if puck['a_type'] == 'D': 55 | if puck['d_type'] == 'I': 56 | puck_classes[2].append(puck) 57 | if puck['a_type'] == 'I': 58 | if puck['d_type'] == 'I': 59 | puck_classes[3].append(puck) 60 | 61 | return puck_classes 62 | 63 | 64 | def create_gates(gates): 65 | # puck_data : puck_dataFrame类型,包含全部登机口的信息 66 | # puck_data的形状是[num_gates, 6] 67 | # 返回:airports: 包含全部登机口的列表,每一个元素是一个登机口 68 | airports = [] 69 | for i in range(gates.shape[0]): 70 | gate_data = gates.loc[i, :] 71 | gate = {'gate': gate_data['登机口'], 'terminal': gate_data['终端厅'], 'region': gate_data['区域'], 72 | 'a_type': gate_data['到达类型'], 73 | 'd_type': gate_data['出发类型'], 'body_type': gate_data['机体类别'], 'puck_records': [], 'assign_flag': False} 74 | airports.append(gate) 75 | 76 | return airports 77 | 78 | 79 | def create_pucks(pucks): 80 | # puck_data : puck_dataFrame类型,包含全部转场记录的信息 81 | # puck_data的形状是[num_pucks, 8] 82 | # 返回:allpucks: 包含全部转场记录的列表,每一个元素是一个转场记录 83 | allpucks = [] 84 | for i in range(pucks.shape[0]): 85 | puck_data = pucks.loc[i, :] 86 | puck = {'record': puck_data['飞机转场记录号'], 'arrive_time': puck_data['到达相对时间min'], 'a_flight': puck_data['到达航班'], 87 | 'a_type': puck_data['到达类型'], 88 | 'plane_type': puck_data['飞机型号'], 'depart_time': puck_data['出发相对时间min'], 'de_flight': puck_data['出发航班'], 89 | 'd_type': puck_data['出发类型'], 90 | 'airport': '', 'temporary': 0} 91 | 92 | allpucks.append(puck) 93 | 94 | return allpucks 95 | 96 | 97 | def plane_type_map(plane_type): 98 | Wide_body = ['332', '333', '33E', '33H', '33L', '773'] 99 | Narrow_body = ['319', '320', '321', '323', '325', '738', '73A', '73E', '73H', '73L'] 100 | plane_type = str(plane_type) 101 | if (plane_type in Wide_body): 102 | return 'W' 103 | else: 104 | return 'N' 105 | 106 | 107 | def sort_pucks(puck_class): 108 | # 此函数将同一类别的转场记录按照起飞时间的先后排序 109 | # puck_class:列表 110 | # sort_puckclass: 排序好的转场记录,按照起飞时间非递减排序 111 | de_times = [puck['depart_time'] for puck in puck_class] 112 | sort_index = np.argsort(de_times) 113 | sort_puckclass = [puck_class[ind] for ind in sort_index] 114 | 115 | return sort_puckclass 116 | 117 | 118 | def greedyselector2(sort_puck_class, airport): 119 | # 本函数采用贪心算法进行分配航班到登机口 120 | # sort_puck_class: 排序好的转场记录,列表形式,以转场记录起飞时间从早到晚排序 121 | # airport: 一个登机口类实例 122 | start_times = [puck['arrive_time'] for puck in sort_puck_class] 123 | depart_times = [puck['depart_time'] for puck in sort_puck_class] 124 | 125 | j = 0 126 | while (sort_puck_class[j]['airport'] != ''): 127 | # 该循环寻找第一个没有被分配的转场记录 128 | j = j + 1 129 | 130 | if airport['assign_flag'] == False: # 登机口没有被分配 131 | airport['busy_time'] = np.zeros(288) 132 | sp_ind = max(int(start_times[j] / 5) - 1, 0) 133 | ep_ind = int(depart_times[j] / 5) 134 | if sort_puck_class[j]['plane_type'] == airport['body_type']: 135 | if (type_is_same(sort_puck_class[j]['a_type'], airport['a_type']) & 136 | (type_is_same(sort_puck_class[j]['d_type'], airport['d_type']))): 137 | print('类型相匹配...') 138 | sort_puck_class[j]['airport'] = airport['gate'] 139 | airport['puck_records'].append(sort_puck_class[j]['record']) 140 | airport['busy_time'][sp_ind:ep_ind] = 1 141 | airport['assign_flag'] = True 142 | 143 | k = j 144 | for i in range(j + 1, len(sort_puck_class)): 145 | if sort_puck_class[i]['plane_type'] == airport['body_type']: # 飞机类型与登机口的机体类别相同 146 | # 飞机到达的类型与出发类型和登机口类型均吻合 147 | if (type_is_same(sort_puck_class[i]['a_type'], airport['a_type']) & 148 | (type_is_same(sort_puck_class[i]['d_type'], airport['d_type']))): 149 | 150 | if start_times[i] >= depart_times[k]: 151 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 152 | sort_puck_class[i]['airport'] = airport['gate'] 153 | k = i 154 | airport['puck_records'].append(sort_puck_class[k]['record']) 155 | if start_times[i] == 0: 156 | s_ind = 0 157 | else: 158 | s_ind = int(start_times[i] / 5) 159 | e_ind = int(depart_times[i] / 5) 160 | airport['busy_time'][s_ind:e_ind] = 1 161 | airport['assign_flag'] = True 162 | else: 163 | for i in range(j + 1, len(sort_puck_class)): 164 | if sort_puck_class[i]['plane_type'] == airport['body_type']: # 飞机类型与登机口的机体类别相同 165 | # 飞机到达的类型与出发类型和登机口类型均吻合 166 | if (type_is_same(sort_puck_class[i]['a_type'], airport['a_type']) & 167 | (type_is_same(sort_puck_class[i]['d_type'], airport['d_type']))): 168 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 169 | puck_time = np.zeros(288) 170 | if start_times[i] == 0: 171 | s_ind = 0 172 | else: 173 | s_ind = int(start_times[i] / 5) 174 | e_ind = int(depart_times[i] / 5) 175 | # print('该记录的起止时间下标分别是{}和{}'.format(s_ind, e_ind)) 176 | puck_time[s_ind:e_ind] = 1 177 | temp_time = puck_time + airport['busy_time'] 178 | if np.max(temp_time) <= 1: 179 | print('可以安排插入航班......') 180 | airport['busy_time'] = temp_time 181 | sort_puck_class[i]['airport'] = airport['gate'] 182 | airport['puck_records'].append(sort_puck_class[i]['record']) 183 | 184 | print('gates{} has assigned {}'.format(airport['gate'], airport['puck_records'])) 185 | return sort_puck_class, airport 186 | 187 | 188 | def assign_puck2(puck_class, gate_class): 189 | # 该函数是分配登机口和转场记录 190 | if len(puck_class) == 0 or len(gate_class) == 0: 191 | # 如果该类别的登机口数量为0或者该类别的飞机转场记录数量为0 192 | return puck_class, gate_class 193 | sort_puck_class = sort_pucks(puck_class) # 将飞机转场记录按照起飞时间排序 194 | 195 | for i in range(len(gate_class)): 196 | puck_not_assign = [puck for puck in sort_puck_class if puck['airport'] == ''] 197 | if len(puck_not_assign) == 0: 198 | break 199 | sort_puck_class, airport = greedyselector2(sort_puck_class, gate_class[i]) 200 | gate_class[i] = airport 201 | 202 | return sort_puck_class, gate_class 203 | 204 | 205 | gates = pd.read_csv('../data/gates (1).csv') 206 | new_gates = gates[['登机口', '终端厅', '区域', '到达类型', '出发类型', '机体类别']] 207 | 208 | puck_data = pd.read_csv('../data/puck_data.csv', encoding='gbk') 209 | cols = ['飞机转场记录号', '到达相对时间min', '到达航班', '到达类型', 210 | '飞机型号', '出发相对时间min', '出发航班', '出发类型'] 211 | puck_data = puck_data[cols] 212 | 213 | airports = create_gates(new_gates) 214 | allpucks = create_pucks(puck_data) 215 | 216 | puck_classes = classify_puck2(allpucks) 217 | gate_classes = classify_airport2(airports) 218 | 219 | # single_type_gate = [0, 1, 3, 4, 9, 10, 12, 13] 220 | # multi_type_gate = [2, 5, 6, 7, 8, 11, 14, 15, 16, 17] 221 | # single_gate_classes = [gate_classes[code] for code in single_type_gate] 222 | # multi_gate_classes = [gate_classes[code] for code in multi_type_gate] 223 | 224 | # 用航空楼的登机口尽可能先安排到达类型为国际,出发类型为国内的转场飞机 225 | at_puck, at_gate = assign_puck2(puck_classes[0], gate_classes[0]) 226 | puck_classes[0] = at_puck; 227 | gate_classes[0] = at_gate 228 | 229 | # 用航空楼的登机口尽可能先安排到达类型和出发类型均为国内的转场飞机 230 | at_puck, at_gate = assign_puck2(puck_classes[1], gate_classes[0]) 231 | puck_classes[1] = at_puck; 232 | gate_classes[0] = at_gate 233 | 234 | # 用卫星厅的登机口尽可能先安排到达类型为国内,出发类型为国际的转场飞机 235 | at_puck, at_gate = assign_puck2(puck_classes[2], gate_classes[1]) 236 | puck_classes[2] = at_puck; 237 | gate_classes[1] = at_gate 238 | 239 | # 用卫星厅的登机口尽可能先安排到达类型和出发类型均为国际的转场飞机 240 | at_puck, at_gate = assign_puck2(puck_classes[3], gate_classes[1]) 241 | puck_classes[3] = at_puck; 242 | gate_classes[1] = at_gate 243 | 244 | # 用卫星厅的登机口尽可能安排到达类型为国际且出发类型为国内,目前还没有安排的转场飞机 245 | at_puck, at_gate = assign_puck2(puck_classes[0], gate_classes[1]) 246 | puck_classes[0] = at_puck; 247 | gate_classes[1] = at_gate 248 | 249 | # 用卫星厅的登机口尽可能安排到达类型和出发类型均为国内,目前还没有安排的转场飞机 250 | at_puck, at_gate = assign_puck2(puck_classes[1], gate_classes[1]) 251 | puck_classes[1] = at_puck; 252 | gate_classes[1] = at_gate 253 | 254 | # 用航空楼的登机口尽可能安排到达类型为国内且出发类型为国际,目前还没有安排的转场飞机 255 | at_puck, at_gate = assign_puck2(puck_classes[2], gate_classes[0]) 256 | puck_classes[2] = at_puck; 257 | gate_classes[0] = at_gate 258 | 259 | # 用航空楼的登机口尽可能安排到达类型和出发类型均为国际,目前还没有安排的转场飞机 260 | at_puck, at_gate = assign_puck2(puck_classes[3], gate_classes[0]) 261 | puck_classes[3] = at_puck; 262 | gate_classes[0] = at_gate 263 | 264 | gate_sum = 0 265 | puck_sum = 0 266 | 267 | assign_pucks = []; 268 | assign_gates = [] 269 | for clas in gate_classes.keys(): 270 | for gate in gate_classes[clas]: 271 | if gate['assign_flag'] == True: 272 | assign_pucks.append(gate['puck_records']) 273 | assign_gates.append(gate['gate']) 274 | gate_sum += 1 275 | puck_sum += len(gate['puck_records']) 276 | 277 | assign_dict = dict(zip(assign_gates, assign_pucks)) 278 | 279 | # 从字典写入csv文件 280 | csvFile3 = open('../result/问题二答案.csv', 'w', newline='') 281 | writer2 = csv.writer(csvFile3) 282 | for key in assign_dict: 283 | writer2.writerow([key, assign_dict[key]]) 284 | csvFile3.close() 285 | 286 | ############################## 画图 ################################ 287 | 288 | num_assign_pucks = [len(pucks) for pucks in assign_pucks] 289 | assign_dict = dict(zip(assign_gates, assign_pucks)) 290 | assign_dict1 = dict(zip(assign_gates, num_assign_pucks)) 291 | assigns = pd.DataFrame(assign_dict1, index=[0]) 292 | assigns = assigns.T 293 | 294 | # 画出被使用的登机口安排的航班数量图 295 | plt.figure(figsize=(20, 10)) 296 | x = list(assigns.index) 297 | plt.bar(x, assigns[0] * 2, facecolor='b') 298 | plt.xlabel('登机口', fontsize=18) 299 | plt.ylabel('登机口分配的总航班数量', fontsize=18) 300 | plt.xticks(rotation=90, fontsize=16) 301 | plt.yticks(fontsize=16) 302 | plt.title('登机口航班分配情况', fontsize=18) 303 | plt.show() 304 | 305 | ############### 按照宽体机和窄体机画出登机口安排的航班数量 #################### 306 | 307 | wide_gates = [airport['gate'] for airport in airports if airport['body_type'] == 'W'] 308 | narrow_gates = [airport['gate'] for airport in airports if airport['body_type'] == 'N'] 309 | 310 | narrow_assign_num = {}; 311 | wide_assign_num = {} 312 | for gate in assign_dict.keys(): 313 | if gate in wide_gates: 314 | # print(len(assign_dict[gate])) 315 | wide_assign_num[gate] = len(assign_dict[gate]) 316 | else: 317 | # print('narrow'+str(len(assign_dict[gate]))) 318 | narrow_assign_num[gate] = len(assign_dict[gate]) 319 | 320 | narrow_assign_num = pd.DataFrame(narrow_assign_num, index=[0]).T 321 | wide_assign_num = pd.DataFrame(wide_assign_num, index=[0]).T 322 | 323 | plt.figure(figsize=(20, 10)) 324 | x = list(narrow_assign_num.index) 325 | plt.bar(x, narrow_assign_num[0] * 2, facecolor='b') 326 | plt.xlabel('窄体机登机口', fontsize=18) 327 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 328 | plt.xticks(rotation=90, fontsize=16) 329 | plt.yticks(fontsize=16) 330 | plt.title('窄体登机口航班分配情况', fontsize=18) 331 | plt.show() 332 | 333 | plt.figure(figsize=(20, 10)) 334 | x = list(wide_assign_num.index) 335 | plt.bar(x, wide_assign_num[0] * 2, facecolor='b') 336 | plt.xlabel('宽体机登机口', fontsize=18) 337 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 338 | plt.xticks(rotation=90, fontsize=14) 339 | plt.yticks(fontsize=14) 340 | plt.title('宽体机登机口航班分配情况', fontsize=18) 341 | plt.show() 342 | 343 | ########## 按照卫星厅和航站楼登机口画出登机口的使用数目和登机口的平均使用率 ############# 344 | 345 | s_gates = [airport['gate'] for airport in airports if 'S' in airport['gate']] 346 | t_gates = [airport['gate'] for airport in airports if 'T' in airport['gate']] 347 | 348 | s_gates_assign = {}; 349 | t_gates_assign = {} 350 | for gate in assign_dict.keys(): 351 | if gate in s_gates: 352 | # print(len(assign_dict[gate])) 353 | s_gates_assign[gate] = len(assign_dict[gate]) 354 | else: 355 | # print('narrow'+str(len(assign_dict[gate]))) 356 | t_gates_assign[gate] = len(assign_dict[gate]) 357 | 358 | s_gates_assign = pd.DataFrame(s_gates_assign, index=[0]).T 359 | t_gates_assign = pd.DataFrame(t_gates_assign, index=[0]).T 360 | 361 | # 航站楼登机口航班分配情况 362 | plt.figure(figsize=(20, 10)) 363 | x = list(t_gates_assign.index) 364 | plt.bar(x, t_gates_assign[0] * 2, facecolor='b') 365 | plt.xlabel('航站楼登机口', fontsize=18) 366 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 367 | plt.xticks(rotation=90, fontsize=16) 368 | plt.yticks(fontsize=16) 369 | plt.title('航站楼登机口航班分配情况', fontsize=18) 370 | plt.show() 371 | 372 | # 卫星厅登机口航班分配情况 373 | plt.figure(figsize=(20, 10)) 374 | x = list(s_gates_assign.index) 375 | plt.bar(x, s_gates_assign[0] * 2, facecolor='b') 376 | plt.xlabel('卫星厅登机口', fontsize=18) 377 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 378 | plt.xticks(rotation=90, fontsize=16) 379 | plt.yticks(fontsize=16) 380 | plt.title('卫星厅登机口航班分配情况', fontsize=18) 381 | plt.show() 382 | 383 | ###################### 航站楼和卫星厅登机口使用情况 ################## 384 | 385 | s_airports = [airport for airport in airports if 'S' in airport['gate']] 386 | t_airports = [airport for airport in airports if 'T' in airport['gate']] 387 | 388 | s_busy_ratio = {}; 389 | t_busy_ratio = {} 390 | assign_airport = list(assign_dict.keys()) 391 | for s_airport in s_airports: 392 | if s_airport['gate'] in assign_airport: 393 | all_time = len(s_airport['busy_time']) 394 | num_pucks = len(s_airport['puck_records']) 395 | busy_ratio = np.round((np.sum(s_airport['busy_time']) - 9 * num_pucks) / all_time, 4) * 100 396 | s_busy_ratio[s_airport['gate']] = busy_ratio 397 | 398 | for t_airport in t_airports: 399 | if t_airport['gate'] in assign_airport: 400 | all_timet = len(t_airport['busy_time']) 401 | num_pucks = len(t_airport['puck_records']) 402 | busy_ratio = np.round((np.sum(t_airport['busy_time']) - 9 * num_pucks) / all_timet, 4) * 100 403 | t_busy_ratio[t_airport['gate']] = busy_ratio 404 | 405 | s_busy_ratio = pd.DataFrame(s_busy_ratio, index=[0]).T 406 | t_busy_ratio = pd.DataFrame(t_busy_ratio, index=[0]).T 407 | 408 | plt.figure(figsize=(20, 10)) 409 | x = list(s_busy_ratio.index) 410 | plt.bar(x, s_busy_ratio[0], facecolor='b') 411 | plt.xlabel('卫星厅登机口', fontsize=18) 412 | plt.ylabel('每个登机口使用率(%)', fontsize=18) 413 | plt.xticks(rotation=90, fontsize=16) 414 | plt.yticks(fontsize=16) 415 | plt.title('卫星厅登机口使用情况', fontsize=18) 416 | plt.show() 417 | 418 | plt.figure(figsize=(20, 10)) 419 | x = list(t_busy_ratio.index) 420 | plt.bar(x, t_busy_ratio[0], facecolor='b') 421 | plt.xlabel('航站楼登机口', fontsize=18) 422 | plt.ylabel('每个登机口使用率(%)', fontsize=18) 423 | plt.xticks(rotation=90, fontsize=16) 424 | plt.yticks(fontsize=16) 425 | plt.title('航站楼登机口使用情况', fontsize=18) 426 | plt.show() 427 | 428 | # 计算中转失败乘客数量和比例 429 | 430 | all_assign_pucks = [] # 所有已经分配的飞机转场记录号 431 | for pucks in assign_pucks: 432 | all_assign_pucks.extend(pucks) 433 | 434 | tickets = pd.read_csv('../data/tickets_pass_totoal (1).csv') 435 | 436 | 437 | def is_assign_pucks(puck): 438 | if puck in all_assign_pucks: 439 | return 1 440 | else: 441 | return 0 442 | 443 | 444 | tickets['到达分配登机口'] = tickets['到达转场号'].map(is_assign_pucks) 445 | tickets['出发分配登机口'] = tickets['出发转场号'].map(is_assign_pucks) 446 | tickets['均分配到登机口'] = (tickets['到达分配登机口'] & tickets['出发分配登机口']) 447 | 448 | tmpsum = tickets[(tickets.到达分配登机口 == 0) & (tickets.出发分配登机口 == 1)]['乘客数'].sum() 449 | tmprate = tmpsum / 2833 450 | print(tmpsum) 451 | print(tmprate) 452 | -------------------------------------------------------------------------------- /model/question3.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | import csv 5 | 6 | # 下面这三行代码是为了画图可以显示中文 7 | from pylab import * 8 | 9 | mpl.rcParams['font.sans-serif'] = ['SimHei'] 10 | mpl.rcParams['axes.unicode_minus'] = False 11 | 12 | 13 | def type_is_same(puck_type, airport_type): 14 | # 判断飞机的到达(或起飞)类型是否与登机口的到达(或起飞)类型相同 15 | airport_type = airport_type.replace(' ', '') 16 | airport_type = airport_type.split(',') 17 | # airport_type = [s.split() for s in airport_type] 18 | # print('puck type is {}'.format(puck_type)) 19 | # print('gate type is {}'.format(airport_type)) 20 | if puck_type in airport_type: 21 | return True 22 | else: 23 | return False 24 | 25 | 26 | def classify_airport2(all_airports): 27 | # airport 是所有的登机口 28 | # classes: 字典用于存储每种类别的登机口 29 | # classes: 0存储航空楼的登机口, 1存储卫星厅的登机口 30 | classes = {0: [], 1: []} 31 | 32 | 33 | def create_gates(gates): 34 | # puck_data : puck_dataFrame类型,包含全部登机口的信息 35 | # puck_data的形状是[num_gates, 6] 36 | # 返回:airports: 包含全部登机口的列表,每一个元素是一个登机口 37 | airports = [] 38 | for i in range(gates.shape[0]): 39 | gate_data = gates.loc[i, :] 40 | gate = {'gate': gate_data['登机口'], 'terminal': gate_data['终端厅'], 'region': gate_data['区域'], 41 | 'a_type': gate_data['到达类型'], 42 | 'd_type': gate_data['出发类型'], 'body_type': gate_data['机体类别'], 'puck_records': [], 'assign_flag': False} 43 | airports.append(gate) 44 | 45 | return airports 46 | 47 | 48 | def create_pucks(pucks): 49 | # puck_data : puck_dataFrame类型,包含全部转场记录的信息 50 | # puck_data的形状是[num_pucks, 8] 51 | # 返回:allpucks: 包含全部转场记录的列表,每一个元素是一个转场记录 52 | allpucks = [] 53 | for i in range(pucks.shape[0]): 54 | puck_data = pucks.loc[i, :] 55 | puck = {'record': puck_data['飞机转场记录号'], 'arrive_time': puck_data['到达相对时间min'], 'a_flight': puck_data['到达航班'], 56 | 'a_type': puck_data['到达类型'], 57 | 'plane_type': puck_data['飞机型号'], 'depart_time': puck_data['出发相对时间min'], 'de_flight': puck_data['出发航班'], 58 | 'd_type': puck_data['出发类型'], 59 | 'airport': '', 'temporary': 0} 60 | 61 | allpucks.append(puck) 62 | 63 | return allpucks 64 | 65 | 66 | def sort_pucks(puck_class): 67 | # 此函数将同一类别的转场记录按照起飞时间的先后排序 68 | # puck_class:列表 69 | # sort_puckclass: 排序好的转场记录,按照起飞时间非递减排序 70 | de_times = [puck['depart_time'] for puck in puck_class] 71 | sort_index = np.argsort(de_times) 72 | sort_puckclass = [puck_class[ind] for ind in sort_index] 73 | 74 | return sort_puckclass 75 | 76 | 77 | def greedyselector2(sort_puck_class, airport): 78 | # sort_puck_class: 排序好的转场记录,列表形式 79 | # airport: 一个登机口类实例 80 | start_times = [puck['arrive_time'] for puck in sort_puck_class] 81 | depart_times = [puck['depart_time'] for puck in sort_puck_class] 82 | 83 | j = 0 84 | while (sort_puck_class[j]['airport'] != ''): 85 | j = j + 1 86 | 87 | if airport['assign_flag'] == False: # 登机口没有被分配 88 | airport['busy_time'] = np.zeros(288) 89 | sp_ind = max(int(start_times[j] / 5) - 1, 0) 90 | ep_ind = int(depart_times[j] / 5) 91 | if sort_puck_class[j]['plane_type'] == airport['body_type']: 92 | if (type_is_same(sort_puck_class[j]['a_type'], airport['a_type']) & 93 | (type_is_same(sort_puck_class[j]['d_type'], airport['d_type']))): 94 | print('类型相匹配...') 95 | sort_puck_class[j]['airport'] = airport['gate'] 96 | airport['puck_records'].append(sort_puck_class[j]['record']) 97 | airport['busy_time'][sp_ind:ep_ind] = 1 98 | airport['assign_flag'] = True 99 | 100 | k = j 101 | for i in range(j + 1, len(sort_puck_class)): 102 | if sort_puck_class[i]['plane_type'] == airport['body_type']: # 飞机类型与登机口的机体类别相同 103 | # 飞机到达的类型与出发类型和登机口类型均吻合 104 | if (type_is_same(sort_puck_class[i]['a_type'], airport['a_type']) & 105 | (type_is_same(sort_puck_class[i]['d_type'], airport['d_type']))): 106 | 107 | if start_times[i] >= depart_times[k]: 108 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 109 | sort_puck_class[i]['airport'] = airport['gate'] 110 | k = i 111 | airport['puck_records'].append(sort_puck_class[k]['record']) 112 | if start_times[i] == 0: 113 | s_ind = 0 114 | else: 115 | s_ind = int(start_times[i] / 5) 116 | e_ind = int(depart_times[i] / 5) 117 | airport['busy_time'][s_ind:e_ind] = 1 118 | airport['assign_flag'] = True 119 | else: 120 | for i in range(j + 1, len(sort_puck_class)): 121 | if sort_puck_class[i]['plane_type'] == airport['body_type']: # 飞机类型与登机口的机体类别相同 122 | # 飞机到达的类型与出发类型和登机口类型均吻合 123 | if (type_is_same(sort_puck_class[i]['a_type'], airport['a_type']) & 124 | (type_is_same(sort_puck_class[i]['d_type'], airport['d_type']))): 125 | if sort_puck_class[i]['airport'] == '': # 如果该转场记录没有被分配 126 | puck_time = np.zeros(288) 127 | if start_times[i] == 0: 128 | s_ind = 0 129 | else: 130 | s_ind = int(start_times[i] / 5) 131 | e_ind = int(depart_times[i] / 5) 132 | # print('该记录的起止时间下标分别是{}和{}'.format(s_ind, e_ind)) 133 | puck_time[s_ind:e_ind] = 1 134 | temp_time = puck_time + airport['busy_time'] 135 | if np.max(temp_time) <= 1: 136 | print('可以安排插入航班......') 137 | airport['busy_time'] = temp_time 138 | sort_puck_class[i]['airport'] = airport['gate'] 139 | airport['puck_records'].append(sort_puck_class[i]['record']) 140 | 141 | print('gates{} has assigned {}'.format(airport['gate'], airport['puck_records'])) 142 | return sort_puck_class, airport 143 | 144 | 145 | def assign_puck3(allpucks, all_gates, tickets_info): 146 | all_priority_degree = sorted(tickets_info['航班乘客总体最大换乘紧张度'].unique(), reverse=True) # 数组 147 | 148 | allpucks_record = [puck['record'] for puck in allpucks] 149 | 150 | for degree in all_priority_degree: 151 | tickets_degree = tickets_info[tickets_info['航班乘客总体最大换乘紧张度'] == degree] 152 | puck1 = list(tickets_degree['到达转场号']) 153 | puck2 = list(tickets_degree['出发转场号']) 154 | puck1.extend(puck2) 155 | puck_record_set = list(set(puck1)) # 该优先级别的登机口集合 156 | puck_set = [allpucks[allpucks_record.index(puck_record)] for puck_record in puck_record_set if 157 | (puck_record in allpucks_record)] 158 | if len(puck_set) > 0: 159 | sort_puck_class = sort_pucks(puck_set) 160 | for i in range(len(all_gates)): 161 | puck_not_assign = [puck for puck in sort_puck_class if puck['airport'] == ''] 162 | if len(puck_not_assign) == 0: 163 | break 164 | sort_puck_class, airport = greedyselector2(sort_puck_class, all_gates[i]) 165 | all_gates[i] = airport 166 | sort_puck_classrecord = [puck['record'] for puck in sort_puck_class] 167 | 168 | # 更新pucks信息 169 | for puck in sort_puck_class: 170 | ind = allpucks_record.index(puck['record']) 171 | allpucks[ind] = puck 172 | 173 | return allpucks, all_gates 174 | 175 | 176 | gates = pd.read_csv('../data/gates (1).csv') 177 | new_gates = gates[['登机口', '终端厅', '区域', '到达类型', '出发类型', '机体类别']] 178 | 179 | puck_data = pd.read_csv('../data/puck_data.csv', encoding='gbk') 180 | cols = ['飞机转场记录号', '到达相对时间min', '到达航班', '到达类型', 181 | '飞机型号', '出发相对时间min', '出发航班', '出发类型'] 182 | puck_data = puck_data[cols] 183 | 184 | tickets_info = pd.read_csv('../data/tickets_property_ranking.csv', encoding='gbk') 185 | 186 | airports = create_gates(new_gates) 187 | allpucks = create_pucks(puck_data) 188 | # puck_classes = classify_puck2(allpucks) 189 | # gate_classes = classify_airport2(airports) 190 | 191 | # single_type_gate = [0, 1, 3, 4, 9, 10, 12, 13] 192 | # multi_type_gate = [2, 5, 6, 7, 8, 11, 14, 15, 16, 17] 193 | # single_gate_classes = [gate_classes[code] for code in single_type_gate] 194 | # multi_gate_classes = [gate_classes[code] for code in multi_type_gate] 195 | 196 | allpucks, airports = assign_puck3(allpucks, airports, tickets_info) 197 | 198 | gate_sum = 0 199 | puck_sum = 0 200 | 201 | assign_pucks = []; 202 | assign_gates = [] 203 | for gate in airports: 204 | if gate['assign_flag'] == True: 205 | assign_pucks.append(gate['puck_records']) 206 | assign_gates.append(gate['gate']) 207 | gate_sum += 1 208 | puck_sum += len(gate['puck_records']) 209 | 210 | print(gate_sum) 211 | print(puck_sum) 212 | 213 | assign_dict = dict(zip(assign_gates, assign_pucks)) 214 | 215 | # 从字典写入csv文件 216 | csvFile3 = open('../result/问题三答案.csv', 'w', newline='') 217 | writer2 = csv.writer(csvFile3) 218 | for key in assign_dict: 219 | writer2.writerow([key, assign_dict[key]]) 220 | csvFile3.close() 221 | 222 | ########################### 画图 ####################### 223 | 224 | num_assign_pucks = [len(pucks) for pucks in assign_pucks] 225 | assign_dict = dict(zip(assign_gates, assign_pucks)) 226 | assign_dict1 = dict(zip(assign_gates, num_assign_pucks)) 227 | assigns = pd.DataFrame(assign_dict1, index=[0]) 228 | assigns = assigns.T 229 | 230 | # 画出被使用的登机口安排的航班数量图 231 | 232 | plt.figure(figsize=(20, 10)) 233 | x = list(assigns.index) 234 | plt.bar(x, assigns[0] * 2, facecolor='b') 235 | plt.xlabel('登机口', fontsize=18) 236 | plt.ylabel('登机口分配的总航班数量', fontsize=18) 237 | plt.xticks(rotation=90, fontsize=16) 238 | plt.yticks(fontsize=16) 239 | plt.title('登机口航班分配情况', fontsize=18) 240 | plt.show() 241 | 242 | # 按照宽体机和窄体机画出登机口安排的航班数量 243 | wide_gates = [airport['gate'] for airport in airports if airport['body_type'] == 'W'] 244 | narrow_gates = [airport['gate'] for airport in airports if airport['body_type'] == 'N'] 245 | 246 | narrow_assign_num = {}; 247 | wide_assign_num = {} 248 | for gate in assign_dict.keys(): 249 | if gate in wide_gates: 250 | # print(len(assign_dict[gate])) 251 | wide_assign_num[gate] = len(assign_dict[gate]) 252 | else: 253 | # print('narrow'+str(len(assign_dict[gate]))) 254 | narrow_assign_num[gate] = len(assign_dict[gate]) 255 | 256 | narrow_assign_num = pd.DataFrame(narrow_assign_num, index=[0]).T 257 | wide_assign_num = pd.DataFrame(wide_assign_num, index=[0]).T 258 | 259 | plt.figure(figsize=(20, 10)) 260 | x = list(narrow_assign_num.index) 261 | plt.bar(x, narrow_assign_num[0] * 2, facecolor='b') 262 | plt.xlabel('窄体机登机口', fontsize=18) 263 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 264 | plt.xticks(rotation=90, fontsize=16) 265 | plt.yticks(fontsize=16) 266 | plt.title('窄体登机口航班分配情况', fontsize=18) 267 | plt.show() 268 | 269 | plt.figure(figsize=(20, 10)) 270 | x = list(wide_assign_num.index) 271 | plt.bar(x, wide_assign_num[0] * 2, facecolor='b') 272 | plt.xlabel('宽体机登机口', fontsize=18) 273 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 274 | plt.xticks(rotation=90, fontsize=14) 275 | plt.yticks(fontsize=14) 276 | plt.title('宽体机登机口航班分配情况', fontsize=18) 277 | plt.show() 278 | 279 | ########## 按照卫星厅和航站楼登机口画出登机口的使用数目和登机口的平均使用率 ############### 280 | 281 | s_gates = [airport['gate'] for airport in airports if 'S' in airport['gate']] 282 | t_gates = [airport['gate'] for airport in airports if 'T' in airport['gate']] 283 | 284 | s_gates_assign = {}; 285 | t_gates_assign = {} 286 | for gate in assign_dict.keys(): 287 | if gate in s_gates: 288 | # print(len(assign_dict[gate])) 289 | s_gates_assign[gate] = len(assign_dict[gate]) 290 | else: 291 | # print('narrow'+str(len(assign_dict[gate]))) 292 | t_gates_assign[gate] = len(assign_dict[gate]) 293 | 294 | s_gates_assign = pd.DataFrame(s_gates_assign, index=[0]).T 295 | t_gates_assign = pd.DataFrame(t_gates_assign, index=[0]).T 296 | 297 | plt.figure(figsize=(20, 10)) 298 | x = list(t_gates_assign.index) 299 | plt.bar(x, t_gates_assign[0] * 2, facecolor='b') 300 | plt.xlabel('航站楼登机口', fontsize=18) 301 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 302 | plt.xticks(rotation=90, fontsize=16) 303 | plt.yticks(fontsize=16) 304 | plt.title('航站楼登机口航班分配情况', fontsize=18) 305 | plt.show() 306 | 307 | plt.figure(figsize=(20, 10)) 308 | x = list(s_gates_assign.index) 309 | plt.bar(x, s_gates_assign[0] * 2, facecolor='b') 310 | plt.xlabel('卫星厅登机口', fontsize=18) 311 | plt.ylabel('每个登机口分配航班数量', fontsize=18) 312 | plt.xticks(rotation=90, fontsize=16) 313 | plt.yticks(fontsize=16) 314 | plt.title('卫星厅登机口航班分配情况', fontsize=18) 315 | plt.show() 316 | 317 | ################ 航站楼和卫星厅登机口使用情况 ################## 318 | 319 | s_airports = [airport for airport in airports if 'S' in airport['gate']] 320 | t_airports = [airport for airport in airports if 'T' in airport['gate']] 321 | 322 | s_busy_ratio = {}; 323 | t_busy_ratio = {} 324 | assign_airport = list(assign_dict.keys()) 325 | for s_airport in s_airports: 326 | if s_airport['gate'] in assign_airport: 327 | all_time = len(s_airport['busy_time']) 328 | num_pucks = len(s_airport['puck_records']) 329 | busy_ratio = np.round((np.sum(s_airport['busy_time']) - 9 * num_pucks) / all_time, 4) * 100 330 | s_busy_ratio[s_airport['gate']] = busy_ratio 331 | 332 | for t_airport in t_airports: 333 | if t_airport['gate'] in assign_airport: 334 | all_timet = len(t_airport['busy_time']) 335 | num_pucks = len(t_airport['puck_records']) 336 | busy_ratio = np.round((np.sum(t_airport['busy_time']) - 9 * num_pucks) / all_timet, 4) * 100 337 | t_busy_ratio[t_airport['gate']] = busy_ratio 338 | 339 | s_busy_ratio = pd.DataFrame(s_busy_ratio, index=[0]).T 340 | t_busy_ratio = pd.DataFrame(t_busy_ratio, index=[0]).T 341 | 342 | print(np.mean(s_busy_ratio)) 343 | print(np.mean(t_busy_ratio)) 344 | 345 | plt.figure(figsize=(20, 10)) 346 | x = list(s_busy_ratio.index) 347 | plt.bar(x, s_busy_ratio[0], facecolor='b') 348 | plt.xlabel('卫星厅登机口', fontsize=18) 349 | plt.ylabel('每个登机口使用率(%)', fontsize=18) 350 | plt.xticks(rotation=90, fontsize=16) 351 | plt.yticks(fontsize=16) 352 | plt.title('卫星厅登机口使用情况', fontsize=18) 353 | plt.show() 354 | 355 | plt.figure(figsize=(20, 10)) 356 | x = list(t_busy_ratio.index) 357 | plt.bar(x, t_busy_ratio[0], facecolor='b') 358 | plt.xlabel('航站楼登机口', fontsize=18) 359 | plt.ylabel('每个登机口使用率(%)', fontsize=18) 360 | plt.xticks(rotation=90, fontsize=16) 361 | plt.yticks(fontsize=16) 362 | plt.title('航站楼登机口使用情况', fontsize=18) 363 | plt.show() 364 | 365 | # 所有已经分配的飞机转场记录号 366 | all_assign_pucks = [] 367 | for pucks in assign_pucks: 368 | all_assign_pucks.extend(pucks) 369 | 370 | # 所有已经分配的飞机转场记录号 371 | all_assign_pucks = [] 372 | for pucks in assign_pucks: 373 | all_assign_pucks.extend(pucks) 374 | 375 | tickets = pd.read_csv('./tickets_pass_totoal (1).csv') 376 | 377 | 378 | def is_assign_pucks(puck): 379 | if puck in all_assign_pucks: 380 | return 1 381 | else: 382 | return 0 383 | 384 | 385 | tickets['到达分配登机口'] = tickets['到达转场号'].apply(is_assign_pucks) 386 | tickets['出发分配登机口'] = tickets['出发转场号'].apply(is_assign_pucks) 387 | tickets['均分配到登机口'] = (tickets['到达分配登机口'] & tickets['出发分配登机口']) 388 | 389 | tmpsum = tickets[(tickets.到达分配登机口 == 0) & (tickets.出发分配登机口 == 0)]['乘客数'].sum() 390 | tmprate = tmpsum / 2833 391 | print(tmpsum) 392 | print(tmprate) 393 | 394 | a2j = {} 395 | for j, v in assign_dict.items(): 396 | for a in v: 397 | tmp = {a: j} 398 | a2j.update(tmp) 399 | 400 | a2j = pd.DataFrame(list(a2j.values()), index=a2j.keys()) 401 | a2j = a2j.reset_index().rename(columns={'index': '到达转场号', 0: '登机口'}) 402 | a2j = pd.merge(a2j, gates, on=['登机口']) 403 | -------------------------------------------------------------------------------- /model/script.m: -------------------------------------------------------------------------------- 1 | tic;clc;clear; 2 | load('data.mat'); 3 | figure(1) 4 | % T10 5 | [nrow, ~] = size(T1); 6 | for idx=1:nrow 7 | x = T1(idx, 2:5); 8 | y = T1(idx, 6:9); 9 | fill(x, y, 'b'); 10 | hold on; 11 | ylim([0, 30]); 12 | end 13 | 14 | % T21 15 | [nrow, ~] = size(T2); 16 | for idx=1:nrow 17 | x = T2(idx, 2:5); 18 | y = T2(idx, 6:9); 19 | fill(x, y, 'b'); 20 | hold on; 21 | ylim([0, 30]); 22 | end 23 | 24 | % S9 25 | [nrow, ~] = size(T3); 26 | for idx=1:nrow 27 | x = T3(idx, 2:5); 28 | y = T3(idx, 6:9); 29 | fill(x, y, 'b'); 30 | hold on; 31 | ylim([0, 30]); 32 | end 33 | 34 | % T25 35 | [nrow, ~] = size(T4); 36 | for idx=1:nrow 37 | x = T4(idx, 2:5); 38 | y = T4(idx, 6:9); 39 | fill(x, y, 'b'); 40 | hold on; 41 | ylim([0, 25]); 42 | end 43 | toc; -------------------------------------------------------------------------------- /preprocessing/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/preprocessing/__init__.py -------------------------------------------------------------------------------- /preprocessing/data_structure.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | class Pucks: 4 | # 飞机转场记录类,包含转场记录的属性信息 5 | airport = '' # 停靠的登机口 6 | temporary = 0 # 是否停靠在临时停机位,0表示没有,初始化为0 7 | 8 | def __init__(self, data): 9 | self.record = data['飞机转场记录号'] # 转场记录号 10 | self.arrive_time = data['到达相对时间min'] # 到达时间 11 | self.a_flight = data['到达航班'] # 到达航班 12 | self.a_type = data['到达类型'] # 航班到达类型 13 | self.plane_type = data['飞机型号'] # 飞机类别 14 | self.depart_time = data['出发相对时间min'] # 航班出发时间 15 | self.de_flight = data['出发航班'] # 出发航班号 16 | self.d_type = data['出发类型'] # 出发类型 17 | 18 | 19 | class Airport: 20 | # 登机口记录类,包含登机口属性以及分配到该登机口的转场记录 21 | puck_records = [] # 用于存储该登机口停放的转场记录,初始化为空 22 | assign_flag = False 23 | 24 | def __init__(self, data): 25 | self.gate = data['登机口'] # 登机口名称 26 | self.terminal = data['终端厅'] # 终端厅 27 | self.region = data['区域'] # 区域 28 | self.a_type = data['到达类型'] # 到达类型 29 | self.d_type = data['出发类型'] # 出发类型 30 | self.body_type = data['机体类别'] # 机体类别 31 | -------------------------------------------------------------------------------- /preprocessing/preprocess1.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | import pandas as pd 4 | import warnings 5 | 6 | warnings.filterwarnings('ignore') 7 | 8 | # 文件读取 9 | gates = pd.read_excel('./InputData.xlsx', sheet_name='Gates') 10 | pucks = pd.read_excel('./InputData.xlsx', sheet_name='Pucks') 11 | tickets = pd.read_excel('./InputData.xlsx', sheet_name='Tickets') 12 | 13 | ######################## 飞机航班转场 ########################################## 14 | 15 | # 航线机体类别映射 16 | W_list = ['332', '333', '33E', '33H', '33L', '773'] 17 | N_list = ['319', '320', '321', '323', '325', '738', '73A', '73E', '73H', '73L'] 18 | pucks['L'] = pucks.飞机型号.apply(lambda x: 1 if str(x) in W_list else 0) 19 | 20 | # 修正时间bug 21 | # 修正到达时刻 22 | # [' 7:0',' 5:0',' 6:0',' 9:0',' 7:5',' 0:5'] 23 | pucks.loc[pucks['到达\n时刻'] == ' 7:0', '到达\n时刻'] = '7:00:00' 24 | pucks.loc[pucks['到达\n时刻'] == ' 5:0', '到达\n时刻'] = '5:00:00' 25 | pucks.loc[pucks['到达\n时刻'] == ' 6:0', '到达\n时刻'] = '6:00:00' 26 | pucks.loc[pucks['到达\n时刻'] == ' 7:5', '到达\n时刻'] = '7:05:00' 27 | pucks.loc[pucks['到达\n时刻'] == ' 9:0', '到达\n时刻'] = '9:00:00' 28 | pucks.loc[pucks['到达\n时刻'] == ' 0:5', '到达\n时刻'] = '0:05:00' 29 | 30 | # 日期时刻合成 31 | pucks['到达时刻'] = pd.to_datetime(pucks['到达\n日期'].astype(str) + ' ' + pucks['到达\n时刻'].astype(str)) 32 | 33 | # 修正出发时刻 34 | pucks.loc[pucks['出发\n时刻'] == ' 9:5', '出发\n时刻'] = '9:05:00' 35 | pucks.loc[pucks['出发\n时刻'] == ' 9:0', '出发\n时刻'] = '9:00:00' 36 | pucks.loc[pucks['出发\n时刻'] == ' 0:5', '出发\n时刻'] = '0:05:00' 37 | pucks.loc[pucks['出发\n时刻'] == ' 8:0', '出发\n时刻'] = '8:00:00' 38 | pucks.loc[pucks['出发\n时刻'] == ' 1:5', '出发\n时刻'] = '1:05:00' 39 | pucks.loc[pucks['出发\n时刻'] == ' 8:5', '出发\n时刻'] = '8:05:00' 40 | pucks.loc[pucks['出发\n时刻'] == ' 0:0', '出发\n时刻'] = '0:00:00' 41 | 42 | # 日期时刻合成 43 | pucks['出发时刻'] = pd.to_datetime(pucks['出发\n日期'].astype(str) + ' ' + pucks['出发\n时刻'].astype(str)) 44 | 45 | # 删失时间 46 | 47 | # 找出到达日期或出发日期在2018年1月20日 48 | pucks20 = pucks.loc[(pucks['到达\n日期'] == pd.to_datetime('2018-1-20')) | (pucks['出发\n日期'] == pd.to_datetime('2018-1-20'))] 49 | 50 | """ 51 | # 1. 考虑转机记录的到达日期在2018-1-20日前 52 | # > 到达时刻修正为2018-1-20,即从改天00:00:00开始占用时间 53 | # 54 | # 2. 考虑转机记录的到达航班为***** 55 | # > 从到达时刻开始占用时间 56 | # 57 | # 3. 考虑转机记录的出发占用时间在2018-1-20后,即出发航班在2018-1-20 11:15:00后 58 | # > 出发时刻修正为2018-1-21 59 | # 60 | # 4. 考虑转机记录的出发航班为***** 61 | # > 此部分转机保留不处理 62 | """ 63 | 64 | # 修正到达时刻在2018-1-20前 65 | pucks20['修正到达时刻'] = pucks20.到达时刻.apply(lambda x: pd.to_datetime('2018-1-20') if x < pd.to_datetime('2018-1-20') else x) 66 | # 偏移出发时刻 67 | pucks20['偏移出发时刻'] = pucks20.出发时刻 + pd.to_timedelta('45 min') 68 | # 修正出发时刻 69 | pucks20['修正出发时刻'] = pucks20.偏移出发时刻.apply( 70 | lambda x: pd.to_datetime('2018-1-20 23:55:00') if x >= pd.to_datetime('2018-1-21') else x) 71 | # 计算相对时间 72 | pucks20['到达相对时间min'] = (pucks20.修正到达时刻 - pd.to_datetime('2018-1-20')).dt.seconds // 60 73 | pucks20['出发相对时间min'] = (pucks20.修正出发时刻 - pd.to_datetime('2018-1-20 00:00:00')).dt.seconds // 60 74 | # 计算时间窗索引 75 | pucks20['占用开始索引'] = (pucks20.到达相对时间min // 5) 76 | pucks20['占用结束索引'] = (pucks20.出发相对时间min // 5) 77 | 78 | ####################################################### 79 | 80 | # 飞机航班到达类型 81 | pucks['F_aI'] = pucks['到达类型'].map({'D': 0, 'I': 1}) 82 | pucks['F_aD'] = pucks['到达类型'].map({'D': 1, 'I': 0}) 83 | # 飞机航班出发类型 84 | pucks['F_oI'] = pucks['出发类型'].map({'D': 0, 'I': 1}) 85 | pucks['F_oD'] = pucks['出发类型'].map({'D': 1, 'I': 0}) 86 | 87 | pucks20.to_csv('../data/pucks20.csv', index=False) 88 | 89 | ################################ 登机口 ################################### 90 | 91 | # gates机体类别 92 | # 宽体机:W;1 93 | # 窄体机:N;0 94 | gates['P'] = gates.机体类别.map({'N': 0, 'W': 1}) 95 | 96 | # 登机口航站楼卫星厅分类 97 | gates['T'] = gates.终端厅.map({'T': 1, 'S': 0}) 98 | gates['S'] = gates.终端厅.map({'S': 1, 'T': 0}) 99 | 100 | # 登机口到达类型 101 | gates.loc[gates.到达类型.str.contains('I'), 'T_aI'] = 1 102 | gates.T_aI = gates.T_aI.fillna(0) 103 | gates.loc[gates.到达类型.str.contains('D'), 'T_aD'] = 1 104 | gates.T_aD = gates.T_aD.fillna(0) 105 | 106 | # 登机口出发类型 107 | gates.loc[gates.出发类型.str.contains('I'), 'T_oI'] = 1 108 | gates.T_oI = gates.T_oI.fillna(0) 109 | gates.loc[gates.出发类型.str.contains('D'), 'T_oD'] = 1 110 | gates.T_oD = gates.T_oD.fillna(0) 111 | 112 | gates.to_csv('../data/gates.csv', index=False) 113 | 114 | ################################## 旅客换乘信息 ######################### 115 | 116 | # 选出在20号有换乘的乘客 117 | tickets20 = tickets.loc[ 118 | (tickets['出发\n日期'] == pd.to_datetime('2018-1-20')) | (tickets['到达\n日期'] == pd.to_datetime('2018-1-20'))] 119 | tickets21 = tickets20.merge(pucks[['到达\n航班', '到达类型', '到达\n日期', '飞机转场记录号']].drop_duplicates(), how='inner', 120 | on=['到达\n航班', '到达\n日期']).rename(columns={'飞机转场记录号': '到达转场号'}) 121 | tickets22 = tickets21.merge(pucks[['出发\n航班', '出发类型', '出发\n日期', '飞机转场记录号']].drop_duplicates(), how='inner', 122 | on=['出发\n航班', '出发\n日期']).rename(columns={'飞机转场记录号': '出发转场号'}) 123 | # tickets23表示乘客转机在同一架航班的旅客记录 124 | tickets23 = pd.merge(tickets22, pucks20[['到达\n航班', '出发\n航班']].drop_duplicates(), on=['到达\n航班', '出发\n航班']) 125 | tickets24 = tickets22.loc[~tickets22['旅客\n记录号'].isin(tickets23['旅客\n记录号'])] 126 | 127 | tickets22.to_csv('./all_tickets.csv', index=False) 128 | tickets23.to_csv('./E_tickets.csv', index=False) 129 | tickets24.to_csv('./unE_tickets.csv', index=False) 130 | 131 | # 将相同航班转场的旅客合并 132 | tickets_pass_num = tickets22.groupby(['到达\n航班', '出发\n航班', '到达类型', '出发类型', '到达转场号', '出发转场号'])[ 133 | '乘客数'].sum().reset_index().sort_values(by='乘客数', ascending=False) 134 | 135 | # 构造指示变量E_mn,表示乘客乘坐同一架飞机 136 | tickets_pass_num.loc[tickets_pass_num['出发转场号'] == tickets_pass_num['到达转场号'], 'E_mn'] = 1 137 | tickets_pass_num.E_mn.fillna(0, inplace=True) 138 | 139 | # 旅客换乘航班类型(国内国际) 140 | tickets_pass_num['A_I'] = tickets_pass_num['到达类型'].map({'I': 1, 'D': 0}) 141 | tickets_pass_num['A_D'] = tickets_pass_num['到达类型'].map({'D': 1, 'I': 0}) 142 | tickets_pass_num['O_I'] = tickets_pass_num['出发类型'].map({'I': 1, 'D': 0}) 143 | tickets_pass_num['O_D'] = tickets_pass_num['出发类型'].map({'D': 1, 'I': 0}) 144 | 145 | # 计算旅客航班连接时间 146 | tickets_pass_num = pd.merge(tickets_pass_num, pucks[['飞机转场记录号', '到达时刻']].drop_duplicates(), how='inner', 147 | left_on='到达转场号', right_on='飞机转场记录号').drop('飞机转场记录号', axis=1) 148 | tickets_pass_num = pd.merge(tickets_pass_num, pucks[['飞机转场记录号', '出发时刻']].drop_duplicates(), how='inner', 149 | left_on='出发转场号', right_on='飞机转场记录号').drop('飞机转场记录号', axis=1) 150 | 151 | tickets_pass_num['conn_gap_min'] = (tickets_pass_num.出发时刻 - tickets_pass_num.到达时刻).dt.seconds / 60 152 | 153 | # 换乘最大时间 154 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'I') & (tickets_pass_num.出发类型 == 'I'), 'transfer_time_max'] = 53 155 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'I') & (tickets_pass_num.出发类型 == 'D'), 'transfer_time_max'] = 81 156 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'D') & (tickets_pass_num.出发类型 == 'I'), 'transfer_time_max'] = 73 157 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'D') & (tickets_pass_num.出发类型 == 'D'), 'transfer_time_max'] = 53 158 | 159 | # 换乘最少时间 160 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'I') & (tickets_pass_num.出发类型 == 'I'), 'transfer_time_min'] = 40 161 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'I') & (tickets_pass_num.出发类型 == 'D'), 'transfer_time_min'] = 55 162 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'D') & (tickets_pass_num.出发类型 == 'I'), 'transfer_time_min'] = 55 163 | tickets_pass_num.loc[(tickets_pass_num.到达类型 == 'D') & (tickets_pass_num.出发类型 == 'D'), 'transfer_time_min'] = 35 164 | 165 | tickets_pass_num.to_csv('./tickets_pass_totoal.csv', index=False) 166 | -------------------------------------------------------------------------------- /question1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/question1.pdf -------------------------------------------------------------------------------- /question2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/question2.pdf -------------------------------------------------------------------------------- /question3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/question3.pdf -------------------------------------------------------------------------------- /result/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/.DS_Store -------------------------------------------------------------------------------- /result/image/question1/卫星厅登机口使用情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/卫星厅登机口使用情况.png -------------------------------------------------------------------------------- /result/image/question1/卫星厅登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/卫星厅登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question1/宽体机登机口分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/宽体机登机口分配情况.png -------------------------------------------------------------------------------- /result/image/question1/登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question1/窄体登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/窄体登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question1/航站楼登机口使用情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/航站楼登机口使用情况.png -------------------------------------------------------------------------------- /result/image/question1/航站楼登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question1/航站楼登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question2/卫星厅登机口使用情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/卫星厅登机口使用情况.png -------------------------------------------------------------------------------- /result/image/question2/卫星厅登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/卫星厅登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question2/宽体机登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/宽体机登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question2/登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question2/窄体机登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/窄体机登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question2/航站楼登机口使用情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/航站楼登机口使用情况.png -------------------------------------------------------------------------------- /result/image/question2/航站楼登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question2/航站楼登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question3/卫星厅登机口使用情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/卫星厅登机口使用情况.png -------------------------------------------------------------------------------- /result/image/question3/卫星厅登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/卫星厅登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question3/宽体机登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/宽体机登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question3/登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question3/窄体机登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/窄体机登机口航班分配情况.png -------------------------------------------------------------------------------- /result/image/question3/航站楼登机口使用情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/航站楼登机口使用情况.png -------------------------------------------------------------------------------- /result/image/question3/航站楼登机口航班分配情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/image/question3/航站楼登机口航班分配情况.png -------------------------------------------------------------------------------- /result/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ASourcePower/2018F/2359a6e328a59d1dcab26d370be9dab92b6b319d/result/sample.png -------------------------------------------------------------------------------- /result/问题一答案.csv: -------------------------------------------------------------------------------- 1 | T10,"['PK179', 'PK476', 'PK259', 'PK276', 'PK293', 'PK325', 'PK355', 'PK396', 'PK422', 'PK440']" 2 | T11,"['PK173', 'PK473', 'PK267', 'PK284', 'PK309', 'PK339', 'PK362', 'PK398', 'PK429']" 3 | T12,"['PK150', 'PK478', 'PK273', 'PK283', 'PK312', 'PK348', 'PK388', 'PK415', 'PK438']" 4 | T13,"['PK188', 'PK477', 'PK266', 'PK288', 'PK323', 'PK360', 'PK406', 'PK431']" 5 | T14,"['PK447', 'PK484', 'PK277', 'PK294', 'PK335', 'PK380', 'PK413', 'PK437']" 6 | T15,"['PK180', 'PK482', 'PK279', 'PK346', 'PK414', 'PK439']" 7 | T16,"['PK175', 'PK479', 'PK305', 'PK345', 'PK416']" 8 | T17,"['PK192', 'PK486', 'PK300', 'PK385', 'PK417']" 9 | T18,"['PK117', 'PK488', 'PK306', 'PK376', 'PK418']" 10 | T19,"['PK443', 'PK490', 'PK299', 'PK364', 'PK419']" 11 | S1,"['PK182', 'PK494', 'PK310', 'PK367', 'PK423']" 12 | S2,"['PK170', 'PK489', 'PK282', 'PK369', 'PK424']" 13 | S3,"['PK446', 'PK501', 'PK298', 'PK356', 'PK425']" 14 | S4,"['PK136', 'PK498', 'PK307', 'PK381', 'PK430']" 15 | S5,"['PK147', 'PK496', 'PK315', 'PK383', 'PK433']" 16 | S6,"['PK187', 'PK493', 'PK297', 'PK395', 'PK435']" 17 | S7,"['PK171', 'PK497', 'PK291', 'PK401']" 18 | S8,"['PK442', 'PK491', 'PK320', 'PK399']" 19 | S9,"['PK181', 'PK500', 'PK326', 'PK407']" 20 | S10,"['PK155', 'PK254', 'PK403']" 21 | S14,"['PK191', 'PK256', 'PK394']" 22 | S15,"['PK195', 'PK264', 'PK392']" 23 | S16,"['PK184', 'PK272', 'PK390']" 24 | S17,"['PK448', 'PK389']" 25 | S18,"['PK193', 'PK342']" 26 | S19,"['PK168', 'PK387']" 27 | S20,"['PK197', 'PK412']" 28 | S21,"['PK174', 'PK410']" 29 | S22,"['PK194', 'PK357']" 30 | S23,"['PK102', 'PK408']" 31 | S24,"['PK145', 'PK428']" 32 | S25,['PK196'] 33 | S26,['PK441'] 34 | S27,['PK062'] 35 | S28,['PK072'] 36 | T1,"['PK149', 'PK470', 'PK260', 'PK287', 'PK324', 'PK358', 'PK409']" 37 | S11,"['PK144', 'PK450', 'PK261', 'PK292', 'PK334', 'PK361', 'PK421']" 38 | S12,"['PK465', 'PK274', 'PK303', 'PK344', 'PK386']" 39 | S13,"['PK455', 'PK314', 'PK371']" 40 | T2,"['PK107', 'PK449', 'PK304', 'PK347']" 41 | T3,"['PK129', 'PK454', 'PK316', 'PK411']" 42 | T4,"['PK131', 'PK461', 'PK333', 'PK400']" 43 | T26,"['PK104', 'PK464', 'PK308']" 44 | T27,"['PK108', 'PK456', 'PK382']" 45 | T28,"['PK460', 'PK373']" 46 | S31,"['PK468', 'PK328']" 47 | S32,"['PK159', 'PK336']" 48 | S33,"['PK094', 'PK338']" 49 | S34,"['PK466', 'PK370']" 50 | S35,"['PK453', 'PK340']" 51 | S36,"['PK089', 'PK349']" 52 | S37,"['PK208', 'PK377']" 53 | S38,"['PK463', 'PK363']" 54 | S39,['PK471'] 55 | S40,['PK458'] 56 | S41,['PK457'] 57 | T20,"['PK480', 'PK436']" 58 | T21,"['PK156', 'PK481', 'PK271', 'PK313', 'PK350', 'PK402', 'PK434']" 59 | T8,"['PK459', 'PK495', 'PK278', 'PK317', 'PK353', 'PK404']" 60 | T9,"['PK467', 'PK269', 'PK285', 'PK311', 'PK351', 'PK427']" 61 | T7,"['PK177', 'PK257', 'PK281', 'PK319', 'PK365', 'PK420']" 62 | T22,"['PK165', 'PK262', 'PK286', 'PK332', 'PK378', 'PK426']" 63 | T5,"['PK452', 'PK483', 'PK331']" 64 | T25,"['PK106', 'PK487', 'PK280', 'PK352']" 65 | T6,"['PK445', 'PK374']" 66 | T23,['PK151'] 67 | -------------------------------------------------------------------------------- /result/问题三答案.csv: -------------------------------------------------------------------------------- 1 | T1,"['PK274', 'PK334', 'PK391', 'PK292', 'PK475', 'PK144']" 2 | T2,"['PK464', 'PK377', 'PK304', 'PK131']" 3 | T3,"['PK449', 'PK373']" 4 | T4,"['PK089', 'PK382']" 5 | T5,"['PK333', 'PK468', 'PK400']" 6 | T6,"['PK106', 'PK458']" 7 | T7,"['PK260', 'PK346', 'PK295', 'PK418', 'PK165']" 8 | T8,"['PK368', 'PK273', 'PK311', 'PK185', 'PK424']" 9 | T9,"['PK488', 'PK354', 'PK282', 'PK147', 'PK427']" 10 | T10,"['PK171', 'PK396', 'PK256', 'PK300', 'PK437', 'PK348']" 11 | T11,"['PK168', 'PK376', 'PK272', 'PK422']" 12 | T12,"['PK398', 'PK196', 'PK310', 'PK362']" 13 | T13,"['PK482', 'PK389', 'PK325', 'PK170', 'PK276']" 14 | T14,"['PK369', 'PK254', 'PK307', 'PK150']" 15 | T15,"['PK412', 'PK299', 'PK501', 'PK442']" 16 | T16,"['PK477', 'PK410', 'PK323']" 17 | T17,"['PK266', 'PK395', 'PK291']" 18 | T18,"['PK293', 'PK356', 'PK491']" 19 | T19,"['PK297', 'PK406', 'PK479']" 20 | T20,"['PK265', 'PK378', 'PK337', 'PK286', 'PK420']" 21 | T21,"['PK156', 'PK263', 'PK332', 'PK402', 'PK365', 'PK426']" 22 | T22,"['PK261', 'PK393', 'PK303', 'PK353', 'PK472']" 23 | T23,"['PK466', 'PK370']" 24 | T24,['PK457'] 25 | T25,"['PK363', 'PK454', 'PK280']" 26 | T26,"['PK453', 'PK349']" 27 | T27,"['PK159', 'PK340']" 28 | T28,"['PK104', 'PK471', 'PK411']" 29 | S1,"['PK355', 'PK394', 'PK145']" 30 | S2,"['PK184', 'PK380']" 31 | S3,"['PK498', 'PK357']" 32 | S4,"['PK478', 'PK367']" 33 | S5,"['PK136', 'PK390']" 34 | S6,['PK480'] 35 | S7,"['PK443', 'PK387']" 36 | S8,"['PK155', 'PK403']" 37 | S9,['PK399'] 38 | S10,['PK408'] 39 | S11,"['PK450', 'PK343']" 40 | S12,"['PK275', 'PK386']" 41 | S13,"['PK455', 'PK324', 'PK371']" 42 | S14,['PK388'] 43 | S15,['PK381'] 44 | S16,"['PK493', 'PK392']" 45 | S17,['PK414'] 46 | S18,['PK490'] 47 | S19,['PK174'] 48 | S20,['PK473'] 49 | S21,['PK415'] 50 | S22,['PK407'] 51 | S23,['PK326'] 52 | S24,['PK117'] 53 | S25,['PK288'] 54 | S26,['PK294'] 55 | S27,['PK315'] 56 | S28,['PK401'] 57 | S31,"['PK460', 'PK316']" 58 | S32,"['PK456', 'PK336']" 59 | S33,['PK461'] 60 | S34,['PK094'] 61 | S35,"['PK108', 'PK463']" 62 | S36,['PK347'] 63 | S37,['PK208'] 64 | S38,['PK107'] 65 | S39,['PK129'] 66 | S40,['PK308'] 67 | S41,['PK338'] 68 | -------------------------------------------------------------------------------- /result/问题二答案.csv: -------------------------------------------------------------------------------- 1 | T1,"['PK149', 'PK455', 'PK314', 'PK391']" 2 | T2,"['PK104', 'PK328']" 3 | T3,"['PK108', 'PK377']" 4 | T4,['PK373'] 5 | T5,"['PK452', 'PK483', 'PK331']" 6 | T6,"['PK374', 'PK487', 'PK280']" 7 | T7,"['PK459', 'PK495', 'PK278', 'PK317', 'PK353', 'PK393', 'PK440']" 8 | T8,"['PK467', 'PK269', 'PK285', 'PK311', 'PK351', 'PK427', 'PK396']" 9 | T9,"['PK444', 'PK270', 'PK290', 'PK329', 'PK359', 'PK404']" 10 | T10,"['PK179', 'PK476', 'PK259', 'PK276', 'PK293', 'PK325', 'PK355', 'PK395', 'PK429']" 11 | T11,"['PK173', 'PK473', 'PK267', 'PK284', 'PK309', 'PK339', 'PK362', 'PK398', 'PK430']" 12 | T12,"['PK150', 'PK478', 'PK273', 'PK283', 'PK312', 'PK348', 'PK388', 'PK415', 'PK438']" 13 | T13,"['PK188', 'PK477', 'PK266', 'PK288', 'PK323', 'PK360', 'PK406', 'PK431']" 14 | T14,"['PK447', 'PK484', 'PK277', 'PK294', 'PK335', 'PK380', 'PK413', 'PK437']" 15 | T15,"['PK180', 'PK482', 'PK279', 'PK346', 'PK414', 'PK439']" 16 | T16,"['PK175', 'PK479', 'PK305', 'PK345', 'PK416']" 17 | T17,"['PK192', 'PK486', 'PK300', 'PK385', 'PK417']" 18 | T18,"['PK117', 'PK488', 'PK306', 'PK376', 'PK418']" 19 | T19,"['PK443', 'PK490', 'PK299', 'PK364', 'PK419']" 20 | T20,"['PK182', 'PK494', 'PK310', 'PK367', 'PK422', 'PK281', 'PK341']" 21 | T21,"['PK170', 'PK489', 'PK282', 'PK369', 'PK423']" 22 | T22,"['PK185', 'PK268', 'PK296', 'PK366', 'PK424', 'PK332']" 23 | T23,"['PK106', 'PK352']" 24 | T24,['PK457'] 25 | T25,['PK458'] 26 | S1,"['PK446', 'PK501', 'PK298', 'PK356', 'PK425']" 27 | S2,"['PK136', 'PK498', 'PK307', 'PK381', 'PK433']" 28 | S3,"['PK147', 'PK496', 'PK315', 'PK383', 'PK435']" 29 | S4,"['PK187', 'PK493', 'PK297', 'PK401']" 30 | S5,"['PK442', 'PK497', 'PK291', 'PK399']" 31 | S6,"['PK171', 'PK491', 'PK320', 'PK407']" 32 | S7,"['PK181', 'PK500', 'PK326', 'PK403']" 33 | S8,"['PK155', 'PK254', 'PK357']" 34 | S9,"['PK191', 'PK264', 'PK408']" 35 | S10,"['PK195', 'PK256', 'PK410']" 36 | S11,"['PK470', 'PK260', 'PK287', 'PK324', 'PK358', 'PK409']" 37 | S12,"['PK450', 'PK261', 'PK292', 'PK334', 'PK361', 'PK421']" 38 | S13,"['PK465', 'PK274', 'PK303', 'PK344', 'PK386']" 39 | S14,"['PK184', 'PK272', 'PK412']" 40 | S15,"['PK448', 'PK387']" 41 | S16,"['PK193', 'PK342']" 42 | S17,"['PK168', 'PK389']" 43 | S18,"['PK197', 'PK390']" 44 | S19,"['PK174', 'PK392']" 45 | S20,"['PK194', 'PK394']" 46 | S21,"['PK102', 'PK428']" 47 | S22,['PK145'] 48 | S23,['PK196'] 49 | S24,['PK441'] 50 | S25,['PK062'] 51 | S26,['PK072'] 52 | S27,['PK480'] 53 | S31,"['PK107', 'PK449', 'PK304', 'PK347']" 54 | S32,"['PK129', 'PK454', 'PK316', 'PK411']" 55 | S33,"['PK131', 'PK461', 'PK333', 'PK400']" 56 | S34,"['PK464', 'PK308']" 57 | S35,"['PK456', 'PK382']" 58 | S36,"['PK460', 'PK336']" 59 | S37,"['PK468', 'PK338']" 60 | S38,"['PK466', 'PK340']" 61 | S39,"['PK453', 'PK349']" 62 | S40,"['PK463', 'PK363']" 63 | S41,"['PK471', 'PK370']" 64 | -------------------------------------------------------------------------------- /三个问题用到的登机口.csv: -------------------------------------------------------------------------------- 1 | T10,T1,T1 2 | T11,T2,T2 3 | T12,T3,T3 4 | T13,T4,T4 5 | T14,T5,T5 6 | T15,T6,T6 7 | T16,T7,T7 8 | T17,T8,T8 9 | T18,T9,T9 10 | T19,T10,T10 11 | S1,T11,T11 12 | S2,T12,T12 13 | S3,T13,T13 14 | S4,T14,T14 15 | S5,T15,T15 16 | S6,T16,T16 17 | S7,T17,T17 18 | S8,T18,T18 19 | S9,T19,T19 20 | S10,T20,T20 21 | S14,T21,T21 22 | S15,T22,T22 23 | S16,T23,T23 24 | S17,T24,T24 25 | S18,T25,T25 26 | S19,S1,T26 27 | S20,S2,T27 28 | S21,S3,T28 29 | S22,S4,S1 30 | S23,S5,S2 31 | S24,S6,S3 32 | S25,S7,S4 33 | S26,S8,S5 34 | S27,S9,S6 35 | S28,S10,S7 36 | T1,S11,S8 37 | S11,S12,S9 38 | S12,S13,S10 39 | S13,S14,S11 40 | T2,S15,S12 41 | T3,S16,S13 42 | T4,S17,S14 43 | T26,S18,S15 44 | T27,S19,S16 45 | T28,S20,S17 46 | S31,S21,S18 47 | S32,S22,S19 48 | S33,S23,S20 49 | S34,S24,S21 50 | S35,S25,S22 51 | S36,S26,S23 52 | S37,S27,S24 53 | S38,S31,S25 54 | S39,S32,S26 55 | S40,S33,S27 56 | S41,S34,S28 57 | T20,S35,S31 58 | T21,S36,S32 59 | T8,S37,S33 60 | T9,S38,S34 61 | T7,S39,S35 62 | T22,S40,S36 63 | T5,S41,S37 64 | T25,,S38 65 | T6,,S39 66 | T23,,S40 67 | ,,S41 68 | -------------------------------------------------------------------------------- /数据结构说明.txt: -------------------------------------------------------------------------------- 1 | 登机口和飞机转场记录的数据结构 2 | 3 | gate_data:包含了一个登机口的所有信息 4 | 登机口的数据结构,以字典形式存储 5 | gate = {'gate': gate_data['登机口'], 6 | 'terminal': gate_data['终端厅'], 7 | 'region': gate_data['区域'], 8 | 'a_type': gate_data['到达类型'], 9 | 'd_type': gate_data['出发类型'], 10 | 'body_type': gate_data['机体类别'], 11 | 'puck_records': [], # 该登机口分配的转场飞机记录列表 12 | 'assign_flag': False # 是否已经被分配 13 | } 14 | 15 | 16 | 转场飞机记录的数据结构,以字典形式存储 17 | puck_data包含了一个转场飞机记录所有的信息 18 | puck = {'record': puck_data['飞机转场记录号'], 19 | 'arrive_time': puck_data['到达相对时间min'], 20 | 'a_flight': puck_data['到达航班'], 21 | 'a_type': puck_data['到达类型'], 22 | 'plane_type': puck_data['飞机型号'], 23 | 'depart_time': puck_data['出发相对时间min'], 24 | 'de_flight': puck_data['出发航班'], 25 | 'd_type': puck_data['出发类型'], 26 | 'airport': '', # 字符串类型,记录该飞机被分配到的登机口 27 | } 28 | 29 | --------------------------------------------------------------------------------