Chương 1 cung cấp cái nhìn tổng quan về đề tài nghiên cứu, bao gồm động lực lựa chọn đề tài, mục tiêu, phạm vi và đối tượng nghiên cứu, cũng như tầm quan trọng của đề tài về lý thuyết và thực tiễn. • Chương 2 trình bày cơ sở lý thuyết về bài toán tối ưu tổ hợp và bài toán lập lịch công việc. Chương này cung cấp các định nghĩa, khái niệm cơ bản, phân loại bài toán tối ưu tổ hợp, và giới thiệu một số bài toán điển hình. Đồng thời, chương này cũng mô tả chi tiết các bài toán lập lịch công việc cá nhân và lập lịch công việc nhóm, bao gồm phát biểu bài toán và các phương pháp giải quyết.
• Chương 3 tập trung vào bài toán lập lịch công việc nhóm với ràng buộc công việc–người TWSPwJP, bao gồm phát biểu bài toán, phân tích các đặc điểm và tính chất của bài toán, mô hình hoá toán học MILP. Tiếp theo, chương này trình bày các phương pháp giải bao gồm phương pháp chính xác và các phương pháp xấp xỉ như heuristic FCFS, các phương pháp metaheuristic SA và GA, và phương pháp learn-heuristic sử dụng học tăng cường với mạng DQN. Cũng trong chương này, các kết quả thực nghiệm và đánh giá được trình bày chi tiết. 6 Chương 3 cũng mô tả bộ dữ liệu mô phỏng đã sử dụng, thiết kế thực nghiệm và các chỉ số để đánh giá.
Cuối cùng là phần nhận xét, thảo luận về kết quả đạt được. • Chương 4 tổng kết những đóng góp chính của luận văn về cả lý thuyết và thực tiễn, đánh giá kết quả đạt được so với mục tiêu đề ra. Chương này cũng đề xuất những hướng phát triển tiếp theo của đề tài trong tương lai.1 Bài toán tối ưu tổ hợp 2.1 Định nghĩa và khái niệm cơ bản Tối ưu tổ hợp (combinatorial optimization problem – COP) là một lớp bài toán quan trọng trong vận trù học (operations research – OR) và khoa học máy tính (computer science – CS) [4], [5]. Bài toán tối ưu tổ hợp được định nghĩa bởi các thành phần sau: • Tập hữu hạn các phần tử E = {e1 , e2 ,.
• Tập con F ⊆ 2E là tập chứa các lời giải khả thi (feasible solutions). • Hàm mục tiêu f : F → R gán cho mỗi lời giải khả thi một giá trị thực. Mục tiêu của bài toán COP là xác định một lời giải khả thi S ∗ ∈ F sao cho f (S ∗ ) (giá trị của hàm mục tiêu) đạt cực tiểu hoặc cực đại: S ∗ = arg min f (S) hoặc S ∗ = arg max f (S) (2.1) S∈F S∈F Các khái niệm liên quan: • Không gian tìm kiếm (search space): tất cả các lời giải (solutions), bao gồm cả lời giải khả thi và không khả thi của bài toán. • Ràng buộc (constraint): là điều kiện mà một lời giải phải thỏa mãn để trở thành lời giải khả thi.
• Lân cận (neighborhood): với mỗi lời giải S, lân cận của S là tập hợp các lời giải có thể xác định bằng cách biến đổi S theo một quy tắc cho trước. • Tối ưu cục bộ (local optimum): là một lời giải khả thi mà trong lân cận của nó không tồn tại lời giải nào tốt hơn. • Tối ưu toàn cục (global optimum): là lời giải khả thi có giá trị tốt nhất. Bài toán COP thường có không gian nghiệm rất lớn, gia tăng theo hàm mũ của kích thước đầu vào, rất khó xác định nghiệm tối ưu toàn cục.
Nhiều bài toán đã được 8 chứng minh là NP-hard, tức là không tìm được thuật toán đa thức có thể giải chúng một cách hiệu quả. Tuy nhiên, nhiều phương pháp heuristic và metaheuristic đã được đề xuất cho phép tìm các lời giải gần tối ưu trong khoảng thời gian tính toán hợp lý.2 Phân loại bài toán tối ưu tổ hợp 2.1 Theo tính chất của hàm mục tiêu và ràng buộc [6] • Tối ưu hóa tuyến tính (linear optimization): cả hàm mục tiêu và các ràng buộc đều có dạng tuyến tính theo các biến quyết định. Ví dụ: bài toán vận tải, quy hoạch tuyến tính, bài toán cái túi tuyến tính. • Tối ưu phi tuyến (nonlinear optimization): hàm mục tiêu hoặc ít nhất một ràng buộc có dạng phi tuyến.
Ví dụ: bài toán quy hoạch toàn phương, tối ưu lồi phi tuyến. • Tối ưu lồi (convex optimization): hàm mục tiêu là một hàm lồi (hoặc hàm lõm) và tập lời giải khả thi được xác định bởi các ràng buộc lồi. Ví dụ: bài toán quy hoạch lồi, tối ưu normed.2 Theo tính rời rạc của biến quyết định [7] • Tối ưu rời rạc (discrete optimization): những biến quyết định chỉ nhận giá trị thuộc một tập hợp rời rạc, thường là tập hợp các số nguyên. Ví dụ: bài toán quy hoạch nguyên, người bán hàng, bài toán lập lịch.
• Tối ưu liên tục (continuous optimization): những biến quyết định có thể nhận bất kỳ giá trị nào nằm trong một khoảng liên tục, thông thường là tập hợp các số thực. Ví dụ: bài toán quy hoạch tuyến tính liên tục, tối ưu lồi liên tục. • Tối ưu hỗn hợp (mixed-integer optimization): một số biến quyết định nhận giá trị rời rạc, trong khi các biến còn lại nhận giá trị liên tục. Ví dụ: bài toán quy hoạch nguyên hỗn hợp, bài toán đóng gói hình học.3 Theo độ phức tạp tính toán [8] • Lớp đa thức P (polynomial-time): bao gồm các bài toán mà thời gian giải theo thuật toán tốt nhất hiện có tỷ lệ thuận theo đa thức với kích thước dữ liệu đầu 9 vào.
Ví dụ: bài toán đường đi ngắn nhất, quy hoạch tuyến tính, cây khung nhỏ nhất. • Lớp NP (nondeterministic polynomial-time): đây là lớp mà các bài toán với lời giải cho trước có thể được kiểm tra tính đúng đắn trong thời gian đa thức. Lớp NP bao gồm lớp P và được cho là chứa nhiều bài toán khó hơn lớp P. Ví dụ: bài toán người bán hàng, cái túi, tô màu đồ thị.
• Lớp NP-hard: một bài toán được gọi là NP-hard nếu mọi bài toán trong lớp NP đều có thể qui về nó trong thời gian đa thức. Nói cách khác, bài toán NP-hard có độ phức tạp bằng hoặc lớn hơn bài toán khó nhất trong lớp NP. Hầu hết các bài toán tối ưu tổ hợp trên thực tế đều rơi vào lớp này. Ví dụ: bài toán lập lịch tối ưu, thiết kế mạch VLSI.
• Lớp NP-complete: một bài toán được gọi là NP-complete nếu như nó vừa thuộc lớp NP vừa thuộc lớp NP-hard. Có thể hiểu, các dạng bài toán NP-complete là dạng “tiêu biểu” hoặc “khó nhất” của lớp NP. Ví dụ: bài toán tìm clique cực đại trong đồ thị (maximum clique problem), bài toán định danh luận lý mệnh đề (boolean satisfiability problem – SAT). Việc phân loại các bài toán tối ưu hóa tổ hợp (COP) mang lại nhiều lợi ích.
Nó giúp hiểu rõ hơn về đặc điểm, mức độ khó của từng loại bài toán, và còn là cơ sở để lựa chọn phương pháp giải quyết phù hợp. Ví dụ, nếu một bài toán thuộc lớp P, ta có thể tìm lời giải tối ưu bằng các giải thuật đa thức. Trái lại, với các bài toán NP-hard, việc tìm lời giải tối ưu thường rất phức tạp và đòi hỏi thời gian tính toán lớn. Trong trường hợp này, các phương pháp xấp xỉ như các kỹ thuật heuristic và metaheuristic thường được áp dụng để tìm lời giải gần tối ưu trong thời gian hợp lý.
Các phương pháp giải quyết bài toán COP rất đa dạng, bao gồm các kỹ thuật metaheuristic [9], các phương pháp dựa trên học máy [10], [11], và nhiều hướng tiếp cận khác.3 Một số bài toán tối ưu tổ hợp phổ biến 2.1 Bài toán người bán hàng Bài toán người bán hàng (traveling salesman problem – TSP) là một trong những bài toán tối ưu hóa tổ hợp điển hình và được nghiên cứu rộng rãi. Bài toán đặt ra như sau: Cho trước một tập hợp các thành phố và khoảng cách (hoặc chi phí) giữa từng cặp thành phố. Một người bán hàng xuất phát từ một thành phố bất kỳ, phải đi qua mỗi thành phố còn lại đúng một lần, và cuối cùng trở về thành phố ban đầu. Mục tiêu là tìm một hành trình có tổng khoảng cách (hoặc chi phí) là nhỏ nhất.
TSP được chứng minh thuộc lớp bài toán NP-hard [12], và có nhiều ứng dụng quan trọng trong logistics, sản xuất, viễn thông. Một số biến thể của TSP bao gồm: TSP với các ràng buộc về thời gian (TSP with time windows), TSP đa người bán hàng (multiple TSP), TSP cho phép bỏ qua một số thành phố (TSP with profits). Để giải quyết bài toán TSP, các phương pháp chính bao gồm các thuật toán heuristic, metaheuristic và các phương pháp tối ưu chính xác. • Các thuật toán chính xác: dynamic programming, linear programming, branch and cut,.
• Các thuật toán heuristic: greedy algorithm, thuật toán cải tiến k-opt, Lin- Kernighan,. • Các kỹ thuật metaheuristic: genetic algorithm, ant colony optimization, tabu search,. Mặc dù là bài toán NP-hard, đã có nhiều kết quả đạt được trong việc giải quyết bài toán TSP với các trường hợp cụ thể, đồng thời những ứng dụng của bài toán TSP vẫn đang là động lực thúc đẩy cho sự phát triển của các công trình nghiên cứu về các giải pháp tối ưu mới.2 Bài toán cái túi Bài toán cái túi (knapsack problem - KP) cũng là một bài toán tối ưu hóa, trong đó ta có một tập hợp các vật phẩm, mỗi vật phẩm có trọng lượng và giá trị riêng. Bài toán yêu cầu chọn ra một số vật phẩm để đưa vào một chiếc túi có giới hạn về sức chứa sao 11 cho tổng giá trị của các vật phẩm được chọn là lớn nhất có thể, đồng thời tổng trọng lượng của chúng không vượt quá sức chứa của túi.
Bài toán KP cũng đã được chứng minh thuộc lớp NP-hard [13], và có nhiều biến thể như bài toán phân đoạn (fractional knapsack problem), túi nhị phân (0-1 knapsack problem), hay bài toán nhiều cái túi (multiple knapsack problem). Các bài toán được liệt kê đều mang tính nền tảng và nhiều ứng dụng thực tế như chọn danh mục đầu tư, lập kế hoạch sản xuất, cắt vật liệu, nén dữ liệu. Các phương pháp giải quyết bài toán cái túi bao gồm: • Các thuật toán chính xác: dynamic programming, backtracking algorithm, branch and bound,. • Các thuật toán xấp xỉ: greedy algorithm, phương pháp xấp xỉ tỷ lệ (approximate scaling),.
• Các kỹ thuật metaheuristic: genetic algorithm, swarm optimization,. Nghiên cứu về bài toán cái túi và các ứng dụng của nó là một hướng đi quan trọng trong lĩnh vực tối ưu tổ hợp và đang có tiềm lực phát triển mạnh mẽ.3 Bài toán lập lịch Các bài toán lập lịch (scheduling problem) là một trong những lớp bài toán tối ưu được ứng dụng rộng rãi nhất trong thực tế.