Thuật toán này hoạt động bằng cách sử dụng một tập hợp các "hạt" particles di chuyển trong không gian tìm kiếm để tìm ra giải pháp tối ưu cho một vấn đề tối ưu hóa cụ thể.Mỗi hạt trong P
Trang 1TRƯỜNG ĐẠI HỌC VĂN LANG KHOA KỸ THUẬT CƠ – ĐIỆN VÀ MÁY TÍNH
BỘ MÔN KHOA HỌC DỮ LIỆU
BÁO CÁO MÔN HỌC TỐI ƯU HÓA ỨNG DỤNG
Đề tài: Thuật toán tối ưu hóa bầy đàn
Sinh viên thực hiện:
Phan Duy Thành
Võ Xuân Phát Nguyên Hào Phong Nguyễn Thanh Văn Nguyễn Quốc Nam
Hồ Chí Minh, ngày 4 / tháng 12/ năm 2023
Trang 2Mục lục
I Tóm tắt nội dung báo cáo 3
II.Giới thiệu 4
III.Nguyên lý hoạt động 5
2.1 Khởi tạo: 5
2.2 Đánh giá: 5
2.3 Cập nhật pbest (vị trí tốt nhất cá nhân): 5
2.4 Tìm gbest (vị trí tốt nhất của quần thể): 5
2.5 Cập nhật vị trí và tốc độ: 5
2.6 Lặp lại các bước 2-5: 5
IV Các ví dụ về việc áp dụng thực tế 5
a) Nghiên ciu khung thuâ k t toán chung pso để gili bài toán tsp 5
b) Áp dụng các thuật toán dựa trên tìm kiếm bầy đàn để tính toán điều độ tối ưu trong hệ thống điện có xét đến nguồn năng lưpng gió 7
V Gili thích code 7
Trang 3DANH MỤC TỪ TIẾNG ANH VÀ VIẾT TẮT
PSO (Particle Swarm Optimization) : Phương pháp tối ưu bầy đàn
GA (Genetic Algorithm) : Thuật toán di truyền
IEEE (Institute for Electrical and Electronics Engineers) :Viện Kỹ sư và Điện tử
TSP (Traveling Salesman Problem) : Bài toán người bán hàng
NP (Nondeterministic Polynomial time) : thuật toán bất định trong thời gian đa thức
ACO ( Ant Colony Optimization algorithm ): Thuật toán đàn kiến
Trang 4I Tóm tắt nội dung báo cáo
Particle Swarm Optimization (PSO) là một phương pháp tối ưu hóa được lấy cảm
hứng từ hành vi tự nhiên của các đàn linh cẩu Thuật toán này hoạt động bằng cách sử
dụng một tập hợp các "hạt" (particles) di chuyển trong không gian tìm kiếm để tìm ra
giải pháp tối ưu cho một vấn đề tối ưu hóa cụ thể
Mỗi hạt trong PSO được biểu diễn bởi một vị trí trong không gian tìm kiếm và một
vận tốc di chuyển Quá trình tối ưu hóa bắt đầu bằng việc khởi tạo các hạt ở các vị trí
ngẫu nhiên trong không gian tìm kiếm và gán cho mỗi hạt một vận tốc ban đầu Sau
đó, PSO tính toán giá trị hàm mục tiêu (fitness) tương ứng với vị trí hiện tại của mỗi
hạt
Tiếp theo, PSO cập nhật vị trí tốt nhất cá nhân (pbest) của mỗi hạt bằng cách so sánh
giá trị fitness hiện tại với giá trị fitness tốt nhất mà hạt đã gặp Sau đó, nó tìm ra vị trí
tốt nhất của toàn bộ quần thể (gbest) bằng cách so sánh giá trị fitness tốt nhất của
pbest với giá trị fitness tốt nhất của tất cả các hạt trong quần thể
Các vị trí và tốc độ của các hạt được cập nhật bằng cách kết hợp thành phần cá nhân
và thành phần xã hội Thành phần cá nhân dẫn dắt mỗi hạt tiến gần hơn đến pbest của
nó, trong khi thành phần xã hội giúp hướng các hạt về phía gbest của toàn bộ quần
thể
PSO tiếp tục lặp lại quá trình cập nhật vị trí và tốc độ cho đến khi đạt được điều kiện
dừng, như đạt đến số lần lặp tối đa hoặc đạt đến một giải pháp tối ưu đủ chính xác
Với tính đơn giản, khả năng tìm kiếm toàn cục và khả năng xử lý không gian tìm kiếm
lớn mà không yêu cầu thông tin đạo hàm, PSO được ứng dụng rộng rãi trong nhiều
lĩnh vực thực tế như tối ưu hóa hàm số, huấn luyện mạng nơ-ron, và tự động hóa công
nghiệp
II.Giới thiệu
Phương pháp tối ưu bầy đàn (Particle Swarm Optimization (PSO)) là một dạng của
các thuật toán tiến hóa quần thể đã được biết đến trước đây như thuật toán di
truyền(Genetic algorithm (GA)), Thuật toán đàn kiến(Ant colony algorithm) Tuy vậy
PSO khác với GA ở chỗ nó thiên về sử dụng sự tương tác giữa các cá thể trong một
quần thể để khám phá không gian tìm kiếm PSO là kết quả của sự mô hình hóa việc
đàn chim bay đi tìm kiếm thức ăn cho nên nó thường được xếp vào các loại thuật toán
có sử dụng trí tuệ bầy đàn Được giới thiệu vào năm 1995 tại một hội nghị của IEEE
bởi James Kennedy và kỹ sư Russell C Eberhart Thuật toán có nhiều ứng dụng quan
trọng trong tất cả các lĩnh vực mà ở đó đòi hỏi phải giải quyết các bài toán tối ưu hóa
Để hiểu rõ thuật toán PSO hãy xem một ví dụ đơn giản về quá trình tìm kiếm thức ăn
của một đàn chim Không gian tìm kiếm thức ăn lúc này là toàn bộ không gian ba
chiều mà chúng ta đang sinh sống Tại thời điểm bắt đầu tìm kiếm cả đàn bay theo
một hướng nào đó, có thể là rất ngẫu nhiên Tuy nhiên sau một thời gian tìm kiếm một
số cá thể trong đàn bắt đầu tìm ra được nơi có chứa thức ăn Tùy theo số lượng thức
ăn vừa tìm kiếm, mà cá thể gửi tín hiệu đến các các cá thể khác đang tìm kiếm ở vùng
lân cận Tín hiệu này lan truyền trên toàn quần thể Dựa vào thông tin nhận được mỗi
cá thể sẽ điều chỉnh hướng bay và vận tốc theo hướng về nơi có nhiều thức ăn nhất
Cơ chế truyền tin như vậy thường được xem như là một kiểu hình của trí tuệ bầy đàn
Trang 5Cơ chế này giúp cả đàn chim tìm ra nơi có nhiều thức ăn nhất trên không gian tìm
kiếm vô cùng rộng lớn
III.Nguyên lý hoạt động
2.1 Khởi tạo:
Xác định số lượng hạt trong quần thể
Khởi tạo vị trí ban đầu của các hạt trong không gian tìm kiếm
Gán tốc độ di chuyển ban đầu cho mỗi hạt
2.2 Đánh giá:
Tính toán giá trị hàm mục tiêu (fitness) tương ứng với vị trí hiện tại của mỗi hạt
2.3 Cập nhật pbest (vị trí tốt nhất cá nhân):
So sánh giá trị fitness hiện tại của mỗi hạt với giá trị fitness tốt nhất mà hạt đã gặp
Nếu giá trị fitness hiện tại tốt hơn, cập nhật vị trí tốt nhất hiện tại của hạt (pbest) thành vị trí hiện tại
2.4 Tìm gbest (vị trí tốt nhất của quần thể):
So sánh giá trị fitness tốt nhất của mỗi hạt (pbest) với giá trị fitness tốt nhất của toàn bộ quần thể (gbest)
Nếu giá trị fitness của pbest tốt hơn, cập nhật gbest thành vị trí tốt nhất của hạt đó
2.5 Cập nhật vị trí và tốc độ:
Tính toán thành phần cá nhân và thành phần xã hội để điều chỉnh vị trí
và tốc độ di chuyển của mỗi hạt
Thành phần cá nhân: Hạt cập nhật vị trí và tốc độ di chuyển để tiến gần hơn đến pbest
Thành phần xã hội: Hạt cập nhật vị trí và tốc độ di chuyển để hướng tới gbest
2.6 Lặp lại các bước 2-5:
Tiếp tục lặp lại quá trình cập nhật vị trí và tốc độ cho đến khi đạt được điều kiện dừng, chẳng hạn như đạt đến số lần lặp tối đa hoặc đạt đến một giải pháp tối ưu đủ chính xác
IV Các ví dụ về việc áp dụng thực tế
a) Nghiên ciu khung thuâ k t toán chung pso để gili bài toán tsp
Trong ngành logistics và vận tải, TSP được sử dụng để tối ưu hóa lộ trình của các phương tiện vận chuyển như xe tải, tàu biển, và máy bay Điều này giúp giảm thiểu thời gian di chuyển, nhiên liệu tiêu thụ,và chi phí vận chuyển Các
Trang 6công ty vận chuyển và dịch vụ giao hàng thường sử dụng các giải thuật TSP để lên kế hoạch giao hàng một cách hiệu quả
Bài toán người du lịch (TSP) là mô xt bài toán tối ưu ty hợp kinh điển Nó thuô xc lớp các bài toán NP-khó và không thể giải được trong thời gian đa thức Trên thực tế người ta thường giải quyết các bài toán này bằng các phương pháp heuristic, chúng cho ra nghiệm gần tối ưu Các phương pháp heuristic bao gồm phương pháp nhánh cận, heuristic ACO (Ant Colony Optimization), thuật toán
GA (Genetic Algorithm), … nhưng các phương pháp này chỉ áp dụng cho lớp các bài toán nhỏ, khi kích c{ bài toán lớn thì thời gian chạy của bài toán là rất lớn
Bài toán tối ưu ty hợp là bài toán tìm ra ty hợp tốt nhất trong những ty hợp có thể tạo ra, thỏa mãn yêu cầu cho trước Với các bài toán tối ưu ty hợp NP-khó
có c{ nhỏ, người ta có thể tìm lời giải tối ưu nhờ phương pháp tìm kiếm vét cạn Tuy nhiên, với các bài toán c{ lớn thì đến nay chưa thể có thuật toán tìm lời giải đúng với thời gian đa thức nên chỉ có thể tìm lời giải gần đúng hay đủ tốt]
Theo cách tiếp cận truyền thống hay là tiếp cận cứng, các thuật toán gần đúng phải được chứng minh tính hô xi tụ hoặc ước lượng được tỷ lệ tối ưu Với việc đòi hỏi khắt khe về toán học như vậy làm hạn chế số lượng các thuật toán công
bố, không đáp ứng được nhu cầu ngày càng phong phú và đa dạng trong nghiên cứu và ứng dụng Để khắc phục tình trạng này, người ta dùng tiếp cận đủ tốt để xây dựng các thuật toán tối ưu mềm
Bài toán người du lịch (TSP: Traveling Salesman Problem) có thể biểu diễn thành mô xt đồ thị, trong đó các thành phố là các đỉnh, các con đường đi lại giữa các thành phố là các cạnh, đồng thời khoảng cách giữa các thành phố là trọng
số tương ứng của cạnh nối chúng, nếu giữa hai thành phố không có đường đi trực tiếp mà phải thông qua mô xt thành phố khác thì ta gán trọng số của cạnh đó
là số lớn nhất có thể Khi đó, bài toán người du lịch trở thành bài toán tìm mô xt chu trình Hamilton ngắn nhất, và lô x trình của người du lịch chính là chu trình Hamilton ngắn nhất
Nếu dùng phương pháp vét cạn để giải bái toán TSP thì ta luôn cho ta mô xt đáp
án tối ưu nhất, tuy nhiên đô x phức tạp của nó là quá cao (O(n!)) Vì vậy, để giải bài toán này người ta thường dùng các thuật toán tối ưu mềm
PSO (Particle Swarm Optimization) là khung thuật toán chung dựa trên kinh nghiệm của bầy đàn được đề xuất bởi bởi Kennedy và Eberhat Nó là mô xt khung thuật toán thông minh dựa trên bầy đàn, mô phỏng lại hành vi xã hô xi của bầy chim hay đàn cá khi đi tìm nguồn thức ăn
Mô xt cá thể (particle) được thể hiện trong PSO tương tự như mô xt con chim hoặc
mô xt con cá tìm kiếm thức ăn trong không gian tìm kiếm của nó Sự di chuyển của mỗi cá thể là sự kết hợp giữa vận tốc và hướng di chuyển Vị trí của mỗi cá thể tại bất kỳ thời điểm nào cũng bị ảnh hưởng bởi vị trí tốt nhất của nó và vị trí tốt nhất của cả bầy đàn Hiệu quả đạt được của mô xt cá thể được xác định bởi
mô xt giá trị thích nghi, giá trị này được xác định phụ thuô xc vào từng bài toán
Trong PSO, quần thể bao gồm các cá thể trong không gian của bài toán Các cá thể được khởi tạo mô xt cách ngẫu nhiên Mỗi cá thể sẽ có mô xt giá trị thích nghi,
Trang 7giá trị này được xác định bởi mô xt hàm thích nghi để tối ưu trong mỗi thế hệ
Trong mỗi thế hệ, mỗi cá thể thay đyi vận tốc và thay đyi vị trí của nó theo thời gian Dựa vào giá trị thích nghi, mỗi cá thể tìm ra giải pháp tối ưu cục bô x trong không gian tìm kiếm nhiều chiều Sau đó, giải pháp tối ưu cục bô x được so sánh với giải pháp tối ưu toàn cục của cả bầy đàn để cập nhật lại giá trị cho giải pháp tối ưu toàn cục Dựa vào giải pháp tối ưu toàn cục để tìm ra giải pháp tối ưu nhất
b) Áp dụng các thuật toán dựa trên tìm kiếm bầy đàn để tính toán điều độ tối ưu
trong hệ thống điện có xét đến nguồn năng lưpng gió
Ứng dụng và chọn lựa các thuật toán để giải bài toán điều độ tối ưu của hệ thống điện
Tính được công suất truyền tải trên đường dây, công suất và công suất phản kháng của các nhà máy phát nhiệt điện (NMPĐ) và nhà máy điên gió x (NMĐG), dung lượng tụ bù, nấc điều chỉnh bộ điều áp tối ưu với chi phí phát điện cực tiểu theo phụ tải 24 giờ
Tính tối ưu tyn thất công suất, tối ưu độ lệch điện áp tại các nút tải, tối ưu yn định điện áp của hệ thống có tham gia của NMĐG theo phụ tải 24 giờ Chi phí vận hành của các NMPĐ và NMĐG là tối ưu nhất để cung cấp đủ công suất yêu cầu của phụ tải 24 giờ
Tối ưu: công suất phân bố tại các nút tải và trên đường dây, điện áp tại các nút, dung lượng bù, tyn thất công suất, độ lệch điện áp
ƒp dụng các thuật toán tối ưu bầy đàn để tính tối ưu điều độ kinh tế, tối ưu phân bố công suất, tối ưu công suất phản kháng trong hệ thống điện với qui mô
hệ thống lớn hơn và có thể áp dụng các thuật toán tối ưu bầy đàn để tính tối ưu điều độ hệ thống điện Việt Nam
Điều độ tối ưu kinh tế, tối ưu phân bố công suất, tối ưu công suất phản kháng theo yêu cầu phụ tải 24 giờ, nhằm mục đích định hướng hệ thống điện tham gia thị trường điện phù hợp với yêu cầu hệ thống điện khi tham gia thị trường điện cạnh tranh để lựa chọn giá bán điện tốt nhất Năng lượng gió sẽ phát triển mạnh tại Việt Nam trong tương lai do Việt Nam có đặc điểm địa lý thích hợp, do đó việc tính toán điều độ tối ưu hệ thống điện có tham gia của năng lượng gió là cần thiết và áp dụng được trong tương lai
V Gili thích code
- from IPython.display import Image: Dòng này import class Image từ module
IPython.display, cho phép tạo đối tượng hình ảnh để hiển thị
- from IPython.core.display import HTML: Dòng này import class HTML từ
module IPython.core.display, cho phép hiển thị HTML trong môi trường IPython
Trang 8What_is_Velocity_in_Particle_Swarm_Optimization/attachment/
5abfe2ccb53d2f63c3c3245d/AS%3A610191980630016%401522492513881/
image/PSOEquation.png"): Dòng này tạo một đối tượng hình ảnh từ URL được
cung cấp và hiển thị nó
Các giá trị W, c1, và c2 là các hằng số trong thuật toán PSO, quyết định về tốc độ và
hướng di chuyển của các hạt n_iterations là số lần lặp tối đa mà thuật toán sẽ thực
hiện
W là trọng số quán tính (inertia weight) c1 là hệ số kinh nghiệm cá nhân (cognitive coefficient) c2 là hệ số kinh nghiệm tập thể (social coefficient)
n_iterations: Đây là số lần lặp tối đa mà thuật toán PSO sẽ thực hiện trước khi dừng Trong mỗi lần lặp, các hạt sẽ di chuyển và cập nhật vị trí của chúng, và sau mỗi lần lặp, thuật toán kiểm tra xem liệu nó đã đạt được điều kiện dừng hay chưa
n_particles: Đây là số lượng hạt trong đám Số lượng hạt càng lớn thì khả năng thuật toán tìm kiếm không gian tìm kiếm càng lớn Tuy nhiên, điều này cũng có thể làm tăng chi phí tính toán
target_error: Đây là ngư{ng sai số mà thuật toán sẽ dừng lại khi nó đạt được
Nếu sai số giữa giải pháp tốt nhất hiện tại và giải pháp tốt nhất trong lần lặp trước đó nhỏ hơn hoặc bằng target_error, thuật toán sẽ dừng lại vì đã đạt được
sự hội tụ mong muốn
Gili thích biến x,y:
Trang 9rd.getrandbits(1): Hàm này sinh một số ngẫu nhiên chỉ có thể là 0 hoặc 1 Nó
sử dụng getrandbits() để tạo ra một số nguyên với một số lượng bit được chỉ định
Hàm bool() chuyển đyi số nguyên nhận được từ getrandbits() thành một giá trị boolean, sao cho 0 tương ứng với False, và 1 tương ứng với True
(-1) ** bool(rd.getrandbits(1)): Phần này sử dụng toán tử mũ để đảo dấu của
số ngẫu nhiên Nếu số ngẫu nhiên là 0, kết quả sẽ là 1, ngược lại nếu số ngẫu nhiên là 1, kết quả sẽ là -1 Điều này giúp chọn ngẫu nhiên một hướng di chuyển cho hạt
(-1) ** bool(rd.getrandbits(1)) * rd.random(): Phần này nhân số ngẫu nhiên được tạo ra từ bước trước với kết quả từ bước thứ ba Điều này giúp tạo ra một
số ngẫu nhiên âm hoặc dương
(-1) ** bool(rd.getrandbits(1)) * rd.random() * 1000: Cuối cùng, số ngẫu nhiên từ bước trước được nhân với 1000, giúp đưa giá trị trong khoảng [-1000, 1000]
Gili thích class:
init (self): Phương thức khởi tạo của lớp Particle, được gọi khi một đối tượng Particle được tạo ra Trong phương thức này, các thuộc tính ban đầu của mỗi hạt được thiết lập, bao gồm:
position: Vị trí ban đầu của hạt trong không gian tìm kiếm Trong đoạn mã này, vị trí ban đầu được chọn một cách ngẫu nhiên trong khoảng [-1000, 1000]
cho cả hai chiều x và y
pBest_position: Vị trí tốt nhất mà hạt đã đạt được cho đến nay (cá nhân tốt nhất của hạt) Ban đầu, nó được đặt bằng vị trí ban đầu của hạt
pBest_value: Giá trị tốt nhất của hàm mục tiêu tương ứng với vị trí tốt nhất pBest_position Ban đầu, nó được đặt là vô cùng dương (float('inf'))
velocity: Vận tốc ban đầu của hạt, mặc định là [0, 0]
update(self): Phương thức này được sử dụng để cập nhật vị trí của hạt dựa trên vận tốc hiện tại của nó Khi gọi, vị trí của hạt được cập nhật bằng cách cộng với vận tốc hiện tại
Trang 10def init (self, target, target_error, n_particles):Khởi tạo các thuộc tính cần
thiết khi tạo một đối tượng Space
self.target = target: Lưu trữ mục tiêu tối ưu hóa
self.target_error = target_error: Lưu trữ lỗi mục tiêu
self.n_particles = n_particles: Lưu trữ số lượng hạt trong không gian tìm kiếm
self.particles = []: Khởi tạo danh sách rỗng để lưu trữ các hạt