Bối cảnh và vấn đề nghiên cứu

Trong công tác quản lý và vận hành đào tạo tại các trường đại học, bài toán xếp lịch (scheduling/assignment problem) là một trong những bài toán tối ưu hóa tổ hợp kinh điển thuộc lớp bài toán NP-đầy đủ (NP-complete). Bài toán này đặt ra yêu cầu phải phân bổ hiệu quả các nguồn lực giới hạn nhằm thỏa mãn đồng thời một hệ thống ràng buộc phức tạp về thời gian, địa điểm và con người.

Tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM (UIT), mỗi kỳ thi học kỳ thường diễn ra trong khoảng 12 đến 15 ngày với quy mô khoảng 20.000 lượt thí sinh tham gia và khoảng 120 cán bộ coi thi (giám thị). Trong quy trình thực tế, trước mỗi kỳ thi, nhà trường công bố lịch thi cùng số lượng giám thị yêu cầu cho từng môn học/phòng thi, sau đó các giám thị đăng ký lịch tham gia. Việc phân công giám thị thủ công hoặc sử dụng các giải pháp đơn giản thường dẫn đến tình trạng phân tán: một giám thị có thể phải đến trường nhiều ngày trong suốt đợt thi nhưng mỗi ngày chỉ phụ trách 1 hoặc 2 ca thi ngắn. Điều này làm gia tăng đáng kể thời gian di chuyển, gây bất tiện cho cán bộ, đặc biệt là những người ở xa trường.

Từ thực tiễn trên, khóa luận tốt nghiệp kỹ sư ngành Hệ thống Thông tin của nhóm tác giả Nguyễn Hoàng Long và Nguyễn Sơn Lâm (dưới sự hướng dẫn của TS. Đỗ Trọng Hợp) tập trung giải quyết bài toán phân công lịch gác thi (Exam Invigilator Assignment Problem) nhằm tối ưu hóa số ngày giám thị phải có mặt tại trường.

Nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Phân tích bài toán phân công giám thị và đề xuất mô hình giải pháp kỹ thuật hợp lý để xây dựng hệ thống hỗ trợ ra quyết định.
  2. Nghiên cứu cơ sở lý thuyết của Thuật toán Di truyền (Genetic Algorithm - GA) và mô hình Quy hoạch Tuyến tính số nguyên (Integer Linear Programming - ILP) áp dụng cho bài toán tối ưu hóa lịch biểu.
  3. Ứng dụng các thuật toán nêu trên vào việc lập lịch phân công giám thị thỏa mãn hệ thống ràng buộc cứng và mềm.
  4. Phân tích, đánh giá và đối sánh kết quả thực nghiệm giữa hai thuật toán trên tập dữ liệu khảo sát thực tế.
  5. Thiết kế và hiện thực hóa phần mềm ứng dụng có giao diện trực quan hỗ trợ nhập liệu, chạy thuật toán và trích xuất lịch phân công.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình và mô hình toán học phân công cán bộ coi thi trong các kỳ thi đại học.
  • Phạm vi dữ liệu: Tập dữ liệu kỳ thi tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM gồm 115 giám thị, 48 ca thi (chia thành 4 ca/ngày) với tổng nhu cầu 1.309 lượt cán bộ coi thi.
  • Phạm vi công nghệ: Ngôn ngữ lập trình Python, hệ quản trị cơ sở dữ liệu SQLite, môi trường phát triển PyCharm, Jupyter Notebook, Google Colab và thư viện tối ưu hóa PuLP (sử dụng bộ giải PULP_CBC_CMD).

Cơ sở lý thuyết và phương pháp

Khóa luận tiếp cận bài toán dưới dạng bài toán ra quyết định hỗ trợ phân bổ tài nguyên với các thành phần cơ bản:

  • Tài nguyên (Resources): Danh sách cán bộ coi thi (giám thị) với định mức số ca phụ trách.
  • Nhiệm vụ (Tasks): Các ca thi tại các phòng thi cần đủ số lượng cán bộ coi thi theo quy định.
  • Ràng buộc (Constraints):
    • Ràng buộc cứng (Hard constraints): Không được phép vi phạm. (1) Tại một ca thi bất kỳ, một giám thị chỉ được phân công tối đa một phòng thi; (2) Mỗi ca thi/phòng thi phải được bố trí đủ số lượng giám thị theo yêu cầu định mức.
    • Ràng buộc mềm (Soft constraints): Được phép linh hoạt nhưng cần tối ưu hóa. (3) Khoảng cách giữa các ca coi thi của cùng một giám thị phải càng gần nhau càng tốt nhằm giảm thiểu số ngày phải đến trường; (4) Tổng số ca phân công cho mỗi giám thị phải đáp ứng định mức quy định.
  • Hàm mục tiêu (Objective): Tối thiểu hóa tổng khoảng cách từ ca thi đầu tiên đến ca thi cuối cùng của từng giám thị trong toàn bộ kỳ thi.

Khóa luận sử dụng kết hợp hai phương pháp giải quyết bài toán tối ưu:

  1. Phương pháp Quy hoạch Tuyến tính số nguyên (Integer Linear Programming - ILP): Mô hình hóa bài toán dưới dạng hệ phương trình và bất phương trình tuyến tính với các biến quyết định nguyên/nhị phân. Phương pháp này đảm bảo tìm ra nghiệm tối ưu toán học toàn cục thông qua bộ giải PULP_CBC_CMD.
  2. Phương pháp Thuật toán Di truyền (Genetic Algorithm - GA): Phương pháp tìm kiếm phỏng sinh học mô phỏng quá trình tiến hóa tự nhiên (chọn lọc, lai ghép, đột biến) trên không gian nghiệm nhị phân. GA được lựa chọn để triển khai vào ứng dụng thực tế nhờ ưu điểm xử lý tốt không gian tìm kiếm lớn, tránh bẫy tối ưu cục bộ và thời gian phản hồi nhanh.

Nguồn dữ liệu đầu vào:

  • Tập dữ liệu giám thị (invigilator dataset): Gồm 2 trường thông tin chính: ID (Mã cán bộ) và Full_name (Họ và tên).
  • Tập dữ liệu lịch thi (exam schedule dataset): Gồm 6 trường thông tin chuẩn hóa: STT, Tên MH, Ngày thi, Ca thi, Phòng thi, Số CBCT (Số cán bộ coi thi yêu cầu).

Khung giờ của 4 ca thi chuẩn trong mỗi ngày thi được xác định cụ thể trong văn bản như sau:

Ca thi Khung giờ thực hiện
Ca 1 07:30 AM — 09:00 AM
Ca 2 09:30 AM — 11:00 AM
Ca 3 13:30 PM — 15:00 PM
Ca 4 15:30 PM — 17:00 PM

Nội dung chính theo từng chương

Chapter 1: INTRODUCTION

Chương này trình bày tính cấp thiết và động lực nghiên cứu bắt nguồn từ bài toán phân công lịch gác thi thực tế tại Trường Đại học Công nghệ Thông tin. Tác giả chỉ ra hạn chế của các giải pháp truyền thống (như leo đồi, tô màu đồ thị) khi áp dụng cho bài toán quy mô lớn có nhiều ràng buộc. Chương mở đầu xác lập rõ ràng 4 nhiệm vụ nghiên cứu, phạm vi công nghệ (Python, SQLite, PyCharm, Jupyter Notebook), các kết quả dự kiến cần đạt được và cấu trúc tổng thể của toàn bộ báo cáo tốt nghiệp.

Chapter 2: BACKGROUND AND THEORY

Chương 2 tổng hợp cơ sở lý thuyết về bài toán phân công (Assignment Problem) và bài toán phân công cán bộ coi thi (Exam Invigilator Assignment Problem). Nội dung phân định ranh giới rõ ràng giữa ràng buộc cứng và ràng buộc mềm. Chương này phân tích nguyên lý hoạt động của hai phương pháp trọng tâm: Quy hoạch tuyến tính (LP) biểu diễn bài toán qua hàm mục tiêu và hệ ràng buộc toán học, và Thuật toán di truyền (GA) dựa trên biểu diễn nhiễm sắc thể và hàm thích nghi. Tác giả so sánh đặc tính hai phương pháp: LP cho nghiệm tối ưu tuyệt đối nhưng phức tạp trong xây dựng mô hình khi số lượng ràng buộc mở rộng; GA linh hoạt, không đòi hỏi tri thức chuyên gia sâu về không gian tìm kiếm và có tốc độ tính toán phù hợp để tích hợp vào ứng dụng phần mềm.

Chapter 3: EXAM INVIGILATOR ASSIGNMENT PROBLEM

Đây là chương trọng tâm mô tả chi tiết việc xây dựng mô hình toán học và thiết kế thuật toán:

  • Biểu diễn cá thể (Individual representation): Sử dụng ma trận nhị phân 2 chiều kích thước $m \times n$ (với $m$ là số giám thị, $n$ là tổng số ca thi). Giá trị $X_{ij} = 1$ biểu thị giám thị $i$ được phân công ca $j$, ngược lại nhận giá trị $0$. Cách trải phẳng chuỗi ca thi liên tục theo thời gian giúp tự động triệt tiêu ràng buộc trùng ca thi của một giám thị.
  • Hàm tính toán trọng số và hàm thích nghi (weight_compute & fitness):
    • Tính số ngày dự kiến: $\text{actual_days} = \frac{\text{num_of_ones}}{4}$.
    • Xác định vị trí ca gác đầu tiên ($\min_pos$) và ca gác cuối cùng ($\max_pos$) của mỗi giám thị trên từng dòng.
    • Tính số ngày thực tế phải đến trường: $\text{day_spans} = \frac{\max_pos + 1}{4} - \frac{\min_pos}{4}$.
    • Tính ngày phạt: $\text{day_pens} = \text{day_spans} - \text{actual_days}$.
    • Tính trọng số: $\text{weight} = \text{weight} + (\text{num_of_zero} + \text{day_pens} \times \text{pen_val})$, với giá trị hệ số phạt $\text{pen_val} = 10$.
    • Hàm thích nghi tổng thể tính bằng $\text{Fitness} = \text{weight_compute}(\text{individual})$, nếu vi phạm điều kiện đủ số giám thị của ca thi thì cộng mức phạt lớn ($+20000$).
  • Các toán tử di truyền:
    • Toán tử chọn lọc (Selection): Lựa chọn cá thể thích nghi cao hơn trong cặp ngẫu nhiên từ quần thể đã sắp xếp giảm dần theo độ thích nghi; giữ lại 10 cá thể tốt nhất (Elitism) cho thế hệ sau.
    • Toán tử lai ghép (Crossover): Sử dụng lai ghép đa điểm (Multi-point crossover) với xác suất lai ghép $\text{crossover_rate} = 0.5$.
    • Toán tử đột biến (Mutation): Đột biến bit ngẫu nhiên với xác suất thấp $\text{mutation_rate} = 0.05$.
    • Khởi tạo quần thể: Sử dụng tìm kiếm vét cạn (Brute-force search) thông qua hàm arrange_supplies để chia đều số ca thi cho các giám thị nhằm tạo quần thể ban đầu hợp lệ.
  • Mô hình Quy hoạch Tuyến tính số nguyên (ILP):
    • Hàm mục tiêu: $\text{minimize } \sum_{i=1}^{m} (\max_i - \min_i)$.
    • Ràng buộc cung (định mức ca của từng giám thị): $\sum_{j=1}^{n} X_{ij} \ge l_i$.
    • Ràng buộc cầu (nhu cầu giám thị của từng ca thi): $\sum_{i=1}^{m} X_{ij} \ge r_j$.
    • Ràng buộc chặn vị trí cực đại ($\max_i$) và cực tiểu ($\min_i$) thông qua hằng số lớn $a$ và ma trận đường chéo.
    • Triển khai mô hình trên Python với thư viện PuLP và bộ giải PULP_CBC_CMD.

Chapter 4: APPLICATION ANALYSIS AND IMPLEMENTATION

Chương 4 trình bày quá trình phát triển ứng dụng phần mềm hoàn chỉnh:

  • Phân tích yêu cầu: Xác định các yêu cầu chức năng (nhập tập dữ liệu giám thị, nhập tập dữ liệu lịch thi, chạy thuật toán phân công, xem và chỉnh sửa dữ liệu, trích xuất báo cáo) và các yêu cầu phi chức năng.
  • Mô hình hóa hệ thống: Xây dựng sơ đồ ca sử dụng tổng quát (General Use Case Diagram), danh sách use case chi tiết và các sơ đồ hoạt động (Activity Diagrams) cho các luồng: Nhập dữ liệu giám thị, Nhập lịch thi, Sắp xếp phân công giám thị và Xem dữ liệu.
  • Thiết kế cơ sở dữ liệu: Xây dựng mô hình quan hệ thực thể (ERD) với 4 bảng dữ liệu chính: invigilator_db, schedule_db, assign_db và convert_ShiftOD.
  • Giao diện người dùng (UI): Xây dựng các màn hình thao tác bao gồm màn hình chào mừng (WelcomeUI), màn hình chính (HomeUI), màn hình kiểm tra dữ liệu (ReviewUI), màn hình dữ liệu giảng viên (Review teacher data UI), màn hình lịch thi (Review exam schedule data UI) và màn hình chạy thuật toán di truyền (Genetic Algorithm UI).

Chapter 5: CONCLUSION AND FUTURE WORK

Chương tổng kết đánh giá toàn bộ kết quả nghiên cứu, phân tích ưu điểm và tồn tại của hệ thống, đồng thời vạch ra các hướng nghiên cứu mở rộng trong tương lai.


Thiết kế và triển khai

Hệ thống được thiết kế dưới dạng ứng dụng máy tính (Desktop Application) hỗ trợ người quản trị khảo thí thực hiện toàn bộ quy trình phân công lịch gác thi tự động.

1. Kiến trúc công nghệ và thư viện sử dụng

  • Ngôn ngữ thực thi: Python.
  • Quản lý dữ liệu: Hệ quản trị cơ sở dữ liệu SQLite.
  • Công cụ phát triển: PyCharm, Jupyter Notebook, Google Colab.
  • Thư viện tối ưu hóa & xử lý dữ liệu: pulp, PULP_CBC_CMD, pandas, numpy, xlsxwriter.

2. Thiết kế cơ sở dữ liệu (Database Schema)

Cơ sở dữ liệu của hệ thống bao gồm 4 bảng chuyên biệt được chuẩn hóa để lưu trữ và chuyển đổi dữ liệu phân công:

Tên bảng dữ liệu Vai trò và mô tả chức năng
invigilator_db Lưu trữ danh sách thông tin hồ sơ của cán bộ coi thi (ID, Full_name).
schedule_db Lưu trữ thông tin lịch thi chi tiết các môn học (STT, Tên MH, Ngày thi, Ca thi, Phòng thi, Số CBCT).
assign_db Lưu trữ kết quả phân công sau khi chạy thuật toán, ánh xạ giữa giám thị, ca thi và phòng thi tương ứng.
convert_ShiftOD Bảng ánh xạ phụ trợ phục vụ chuyển đổi giữa định dạng ca thi thực tế theo ngày và chỉ số ca thi trải phẳng trong ma trận thuật toán.

3. Quy trình vận hành của phần mềm

Quy trình nghiệp vụ trên phần mềm diễn ra theo các bước tuần tự:

  1. Nhập dữ liệu (Import Data): Người dùng nhập file danh sách giám thị và lịch thi từ định dạng chuẩn vào cơ sở dữ liệu SQLite thông qua giao diện ứng dụng.
  2. Kiểm tra dữ liệu (Review Data): Giao diện cho phép rà soát danh sách giảng viên, các phòng thi và tổng số ca thi của từng đợt thi.
  3. Thực thi thuật toán (Run Algorithm): Hệ thống khởi tạo quần thể ban đầu từ dữ liệu invigilator_db và schedule_db, thực hiện các vòng lặp tiến hóa di truyền (GA) với các tham số đã cấu hình hoặc gọi bộ giải quy hoạch tuyến tính.
  4. Hiển thị và xuất kết quả: Kết quả phân công tối ưu được lưu tự động vào bảng assign_db và hiển thị trực quan trên giao diện bảng phân công để người quản trị theo dõi.

Kết quả và đóng góp

1. Kết quả thực nghiệm và so sánh phương pháp

Mô hình đã được thử nghiệm thực tế trên tập dữ liệu chuẩn của Trường Đại học Công nghệ Thông tin gồm 115 giám thị và 48 ca thi (tổng cộng 1.309 lượt phân công):

Tiêu chí so sánh Quy hoạch Tuyến tính (LP / ILP) Thuật toán Di truyền (GA)
Mô hình triển khai Bộ giải PULP_CBC_CMD qua thư viện PuLP Mã nguồn GA tự thiết kế trên ma trận nhị phân $115 \times 48$
Tính tối ưu nghiệm Đạt nghiệm tối ưu toàn cục toán học của hàm mục tiêu $\sum(\max_i - \min_i)$ Đạt nghiệm xấp xỉ tốt, thỏa mãn hoàn toàn các ràng buộc cứng
Độ phức tạp cài đặt Đòi hỏi mô hình hóa toán học chặt chẽ về ma trận đường chéo và hằng số lớn Cài đặt linh hoạt thông qua hàm thích nghi và các toán tử lai ghép, đột biến
Khả năng tích hợp Phù hợp tính toán trên môi trường máy chủ/Colab Tích hợp trực tiếp và vận hành ổn định trên ứng dụng máy tính

Kết quả phân phối số ngày đến trường của cán bộ coi thi được rút ngắn đáng kể so với việc phân bổ ngẫu nhiên, giúp gom các ca trực của từng giám thị vào các ngày liên tiếp hoặc trong cùng một ngày (tối đa 4 ca/ngày).

2. Đóng góp của khóa luận

  • Về mặt lý thuyết: Thiết lập thành công mô hình toán học quy hoạch nguyên cho bài toán phân công giám thị với kỹ thuật trải phẳng ca thi và chặn biên ($\max$, $\min$); xây dựng công thức tính hàm trọng số phạt (weight_compute) và hàm thích nghi (fitness) phản ánh chính xác mục tiêu giảm thiểu số ngày đến trường.
  • Về mặt ứng dụng: Xây dựng hoàn chỉnh một phần mềm có giao diện đồ họa trực quan (GUI), tích hợp cơ sở dữ liệu SQLite và thuật toán tối ưu, cho phép các phòng ban khảo thí dễ dàng nhập liệu, chạy lịch tự động và tra cứu kết quả phân công.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế:

  • Trong mô hình thử nghiệm, số lượng ca coi thi của các giám thị được phân bổ đồng đều theo thuật toán vét cạn (arrange_supplies) do thiếu dữ liệu về định mức riêng biệt hoặc đăng ký số lượng ca nguyện vọng cụ thể của từng cán bộ.
  • Hệ thống mới chỉ vận hành dưới dạng ứng dụng đơn máy cục bộ với cơ sở dữ liệu SQLite, chưa hỗ trợ đồng bộ trực tuyến đa người dùng qua mạng.

Hướng nghiên cứu tiếp:

  • Bổ sung thêm các ràng buộc mềm nâng cao: xem xét nguyện vọng đăng ký khung giờ rảnh của giám thị, tránh trùng lịch giảng dạy chuyên môn, ưu tiên phân công theo chức danh hoặc khoảng cách địa lý từ nhà đến trường.
  • Nghiên cứu kết hợp mô hình lai (Hybrid GA-LP) nhằm tận dụng khả năng tìm kiếm nhanh của GA kết hợp với độ chính xác tối ưu của LP trên các tập dữ liệu có quy mô lớn hơn.
  • Nâng cấp hệ thống thành ứng dụng nền tảng Web/Cloud tích hợp trực tiếp vào cổng thông tin quản trị đào tạo chung của nhà trường.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị chuyên môn cao cho:

  • Sinh viên và học viên ngành Hệ thống Thông tin, Khoa học Máy tính, Kỹ thuật Phần mềm: Cung cấp tài liệu tham khảo chi tiết về quy trình phân tích bài toán tối ưu hóa tổ hợp, kỹ thuật biểu diễn nhiễm sắc thể nhị phân trong thuật toán di truyền và phương pháp mô hình hóa bài toán quy hoạch tuyến tính bằng thư viện PuLP trong Python.
  • Cán bộ quản lý đào tạo và khảo thí tại các trường đại học, cao đẳng: Cung cấp cơ sở khoa học và giải pháp thực tiễn để tự động hóa khâu xếp lịch gác thi, giảm thiểu chi phí quản lý và nâng cao mức độ hài lòng của đội ngũ giảng viên, giám thị.
  • Các phần đáng tham khảo nhất trong tài liệu:
    • Mục 3.3 & 3.5: Thuật toán di truyền chi tiết, cấu trúc hàm tính điểm phạt và lưu đồ thuật toán.
    • Mục 3.1 (phần mô hình toán): Kỹ thuật xây dựng ma trận và biểu diễn bài toán quy hoạch số nguyên.
    • Mục 4.2 & 4.3: Thiết kế cơ sở dữ liệu (invigilator_db, schedule_db, assign_db) và sơ đồ hoạt động của phần mềm phân công.

Câu hỏi thường gặp

1. Bài toán phân công giám thị trong khóa luận đặt ra những ràng buộc cứng nào?

Hệ thống bắt buộc phải thỏa mãn 2 ràng buộc cứng:

  1. Tại một ca thi nhất định, mỗi giám thị chỉ được phân công tối đa tại 1 phòng thi (không được trùng ca).
  2. Mỗi ca thi/phòng thi phải được bố trí đủ số lượng cán bộ coi thi theo đúng định mức yêu cầu đã công bố.

2. Thuật toán di truyền (GA) biểu diễn nhiễm sắc thể (cá thể) như thế nào?

Mỗi cá thể trong quần thể được biểu diễn bằng một mảng nhị phân 2 chiều (ma trận kích thước $m \times n$). Chiều thứ nhất ($m$) đại diện cho danh sách giám thị, chiều thứ hai ($n$) đại diện cho danh sách các ca thi trải phẳng theo thời gian. Phần tử tại vị trí hàng $i$, cột $j$ nhận giá trị 1 nếu giám thị $i$ được phân công ca $j$, và nhận giá trị 0 nếu không phân công.

3. Hàm mục tiêu trong mô hình Quy hoạch tuyến tính (LP) được thiết lập như thế nào?

Hàm mục tiêu được xây dựng nhằm tối thiểu hóa tổng khoảng cách giữa ca thi đầu tiên có giá trị 1 ($\min_i$) và ca thi cuối cùng có giá trị 1 ($\max_i$) của tất cả các giám thị: $$\text{minimize } \sum_{i=1}^{m} (\max_i - \min_i)$$ với các ràng buộc tìm vị trí $\max_i$ và $\min_i$ được biểu diễn thông qua ma trận đường chéo và hằng số lớn $a$.

4. Các tham số thực nghiệm chính của tập dữ liệu tại Trường ĐH Công nghệ Thông tin trong đề tài là gì?

Tập dữ liệu thực nghiệm bao gồm: 115 giám thị (n_supervisors = 115), 48 ca thi (n_shifts = 48, chia thành 4 ca/ngày) và tổng nhu cầu cần phân công là 1.309 lượt giám thị (total_supervisors_demands = 1309).

5. Ứng dụng phần mềm sử dụng những bảng dữ liệu nào trong cơ sở dữ liệu SQLite?

Hệ thống sử dụng 4 bảng cơ sở dữ liệu:

  • invigilator_db: Lưu danh sách cán bộ coi thi.
  • schedule_db: Lưu lịch thi và số lượng cán bộ yêu cầu cho từng ca/phòng.
  • assign_db: Lưu kết quả phân công giám thị sau khi thuật toán thực thi.
  • convert_ShiftOD: Bảng chuyển đổi định dạng ca thi phục vụ thuật toán.

Kết luận

Khóa luận tốt nghiệp "Study on Exam Invigilator" của nhóm tác giả Trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã giải quyết trọn vẹn bài toán tối ưu hóa phân công giám thị coi thi tại trường đại học công lập. Đề tài đã kết hợp thành công mô hình toán học Quy hoạch Tuyến tính số nguyên và Thuật toán Di truyền trên ma trận nhị phân để giải bài toán với quy mô 115 giám thị và 48 ca thi. Toàn bộ giải pháp đã được hiện thực hóa thành ứng dụng phần mềm máy tính có giao diện trực quan và cơ sở dữ liệu chuẩn hóa, mang lại giá trị thực tiễn cao cho công tác quản lý khảo thí đại học.