thuật toán tối ưu hóa bầy đàn

13 1 0
Tài liệu đã được kiểm tra trùng lặp
thuật toán tối ưu hóa bầy đàn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệ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 P

Trang 1

TRƯỜNG ĐẠI HỌC VĂN LANGKHOA 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ỌCTỐ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átNguyên Hào PhongNguyễn Thanh VănNguyễn Quốc Nam

Hồ Chí Minh, ngày 4 / tháng 12/ năm 2023

Trang 2

V Gili thích code 7

Trang 3

DANH MỤC TỪ TIẾNG ANH VÀ VIẾT TẮT

PSO (Particle Swarm Optimization) : Phương pháp tối ưu bầy đànGA (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ứcACO ( Ant Colony Optimization algorithm ): Thuật toán đàn kiến

Trang 4

I 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ếmlớ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ộtsố 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 5

Cơ 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 động2.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.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 đó.

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 6

cô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êncứ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ủabầ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ởimô 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 7

giá 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ờigian 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áptố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ôngsuấ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 giathị 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ạnhtạ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.

Trang 8

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 haychưa.

n_particles: Đây là số lượng hạt trong đám Số lượng hạt càng lớn thì khả năngthuậ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 9

rd.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ênvậ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 10

def 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.

Trang 11

self.gBest_value = float('inf'): Khởi tạo giá trị tốt nhất ban đầu với giá trị vô cùng lớn (float('inf')).

self.gBest_position = np.array([rd.random() * 50, rd.random() * 50]): Khởitạo vị trí tốt nhất ban đầu cho hạt ngẫu nhiên trong một khoảng giới hạn (0-50) trên mỗi chiều.

def fitness(self, particle):Tính giá trị fitness của 1 hạt

x = particle.position[0]: Lấy tọa độ x của hạt từ vị trí của hạt.y = particle.position[1]: Lấy tọa độ y của hạt từ vị trí của hạt.

f = x2 + y2 + 1: Tính toán giá trị fitness của hạt bằng cách áp dụng công thức f = x^2 + y^2 + 1.

return f: Trả về giá trị fitness (f).

def set_pBest(self): Cập nhật giá trị tốt nhất của mỗi hạt trong không gian tìm kiếm.

for particle in self.particles: Duyệt qua danh sách các hạt trong không gian tìm kiếm.

fitness_candidate = self.fitness(particle): Tính toán giá trị fitness của hạt bằng cách gọi hàm fitness.

if(particle.pBest_value > fitness_candidate): Kiểm tra nếu giá trị tốt nhất hiện tại của hạt (pBest_value) lớn hơn giá trị fitness_candidate.

particle.pBest_value = fitness_candidate: Cập nhật giá trị tốt nhất của hạtthành fitness_candidate.

particle.pBest_position = particle.position: Cập nhật vị trí tốt nhất của hạt thành vị trí hiện tại của hạt.

def set_gBest(self): Cập nhật giá trị tốt nhất trong toàn bộ không gian tìm kiếm.for particle in self.particles: Duyệt qua danh sách các hạt trong không gian tìm kiếm.

best_fitness_candidate = self.fitness(particle): Tính toán giá trị fitness tốt nhất của hạt bằng cách gọi hàm fitness.

if(self.gBest_value > best_fitness_candidate): Kiểm tra nếu giá trị tốt nhất của toàn bộ không gian tìm kiếm (gBest_value) lớn hơn best_fitness_candidate.

self.gBest_value = best_fitness_candidate: Cập nhật giá trị tốt nhất của toàn bộ không gian tìm kiếm thành best_fitness_candidate.

self.gBest_position = particle.position: Cập nhật vị trí tốt nhất của toàn bộ không gian tìm kiếm thành vị trí hiện tại của hạt.

def update_particles(self): cập nhật vận tốc và vị trí của các hạt trong không gian tìm kiếm.

for particle in self.particles: Duyệt qua danh sách các hạt trong không gian tìm kiếm.

global W: Khai báo biến W là biến toàn cục để sử dụng hệ số trọng số (inertial weight) trong tính toán vận tốc.

inertial = W * particle.velocity: Tính toán thành phần động lượng của vận tốccủa hạt bằng cách nhân vận tốc hiện tại của hạt với hệ số trọng số W.

self_confidence = c1 * rd.random() * (particle.pBest_position -

particle.position): Tính toán thành phần tự tin của vận tốc của hạt Đây là sự tự tin của hạt dựa trên vị trí tốt nhất của chính nó (pBest_position) và vị trí hiện

Ngày đăng: 08/05/2024, 15:37

Tài liệu cùng người dùng

Tài liệu liên quan