Sử dụng thư viện Deap [4] của python dé thực hiện giải thuật. Các bước thực hiện như sau: đầu tiên ta sử dụng hàm tao các cá thể. 1 ngày sẽ có 8 món ăn được bao gồm trong năm bữa bữa sáng, phụ sáng, bữa trưa, bữa xế và phụ xế. Các món ăn đã được đánh số
thứ tự xác định.
22
- Trong bài toán sử dụng giải thuật đi truyền dé tạo thực đơn trong | tuần của
trường hoc. Thực đơn này phải dam bảo đủ dinh dưỡng cho tat cả các học sinh
trong trường học.
Thực đơn tự động / 2021-01-18 - 2021-01-22
#sia +Tạo # Hanh động ~ 15/15 4
Ngày bat đầu 18/01/2021 P 1412
Ngày kết thúc 22/01/2021 L 25,59
Tên 2021-01-18 - 2021-01-22 6 60,29
Chi tiếtthứcăn Chỉ tiết dinh dưỡng thực đơn
Thứ trong Bữa tráng
tuần Bữa sáng Bữa xế Bữa mặn Canh Canh 2 miệng Xế sáng Xế chiều
2 Bánh canh cua Soup tóc tiên _ Ốcheo chưng Rau muống xào thịt _ Canh bap cải nấu giò Thanh long Sữa bộttoàn Sữa đậunành
bò sống vẹn
3 Phở bò Bún bò huế Chà bôngthịtheo Đậu đũaxàothitbò Rauđaynấucuađồng Chuốigiàhương Nước dừa Sữa bột toàn
vẹn
4 Soup bắp non Phở bò Đậu phụ trứng sốt __ cải xanh nấu cua Canh chua tôm tươi Dưa gang Sữa hà lan 456 _ Sữa nuti
cả đồng
5 Bánh mỳ nướng nhânphô Bánhcanhcá Đậu hii nhồi thịt Canh chua tômtươi Canh rau đềnnấutôm Mítmật(Múi) Nước dừa Nước mía
mai lóc thịt
6 Bún riêu tôm thịt Bún mọc Đậu phụ trứng sốt Raumuốngnấutôm Bap cải xào Mít mật(Múi) Nước dừa Yaourt
ca
Hình 2.8: Thực đơn tự động
- Cac bước thực hiện:
Đầu tiên ta tạo ra các cá thé. Cá thé là thực đơn của một tuần, bao gồm 8 món ăn trong một ngày. Có một điều đặc biệt thay vì việc tạo ngẫu nhiên ra một thực don bat kỳ, tác giả tạo ra một cá thé với các món ăn đúng vi trí của nó, bữa sáng chỉ là những món ăn
có loại món ăn là bữa sáng.
Tiếp theo là tạo một quan thé 1000 phan tử trong một phan tử này chọn ra 1 cá thé tốt nhất dé làm mốc. Tiếp tục chọn ra 50 phần tử cho đi lai ghép và đột biến 1000 lần với xác suất lai là 0.2 và xác suất đột biến là 0.5.
23
Tiếp theo là hàm lai ghép, chọn ra 50 cá thể tốt nhất trong quan thé cho lai với nhau. Ở đây lai tức là đổi các thành phần của các thực đơn với nhau. Vi dụ vi trí từ 5-10 của thực đơn A sẽ đổi với vị trí thứ 5-10 của thực đơn B.
Hàm đột biến là hàm thay thé 1 hoặc nhiều phan tử trong thực đơn. Thông thường đột biến sẽ chọn ra một số ngẫu nhiên dé đột biến, nhưng trong thuật toán này, người viết đã thêm phan đột biến theo đúng thứ tự món ăn của nó. Vi du món sáng thì chỉ có thé thay thế bằng món sáng khác, món mặn được thay thế bằng món mặn khác. Điều này giúp giảm thiêu thời gian đột biến, giúp cho thuật toán tìm ra được những thực đơn tốt nhất
một cách có hiệu quả.
Sau khi lai ghép và đột biến, sử dung lại hàm đánh giá dé tinh lại các độ thích nghi của từng thực đơn mới tạo, nếu thực đơn mới tạo tốt hơn ta lây thực đơn đó.
Hàm đánh giá: Hàm đánh giá dựa vào hai tiêu chí: các món ăn không trùng lắp trong một ngày và các món ăn đủ thành phần dinh dưỡng. Sử dụng hàm đánh giá tính độ thích nghỉ. Hàm đánh giá là hàm đảm bảo rằng thực đơn được cân bằng dinh dưỡng và thực đơn đảm bảo tính đa đạng, hạn chế trùng món trong một ngày. Hàm đánh giá được dựa trên điểm trừ, số điểm trừ là tự tìm hiểu và quy định.
o_ Điểm trừ tính theo các món ăn trùng lắp: Các món ăn trong cùng một ngày
khi trùng lắp các món với nhau, điểm trừ được cộng lên o_ Các món ăn đặt sai vị trí: Khi món ăn đặt sai vị trí. Ví dụ: Món Bún bò huế
là món ăn sang, được đặt tai vi trí món canh của món ăn trưa, điểm trừ
được cộng vào, vì món ăn không phù hợp và không đúng quy định.
24
Ngày bắt đầu 30/11/2020 P 0,00
Ngày kết thúc 04/12/2020 L 0,00
Tên 2020-11-30 - 2020-12-04 6 0,00
Chitiétthic an Chỉ tiết dinh dưỡng thực đơn
140/77 € >
Dinh dưỡng Lượng khẩu phần phù hợp với 1 trẻ Dam động vật Dam thực vật vật Béo động vật Béo thựcvật Đường Calo
Bun 32,950000000000 0,00 0,00 0,00 0,00 8A7 36,25
Thịt bò loại 1 1.744,000000000007 366,24 0,00 66,27 0,00 0,00 2.05792
Cà rốt (củ đỏ, vàng) 11,630000000000 0,00 0,00 0,00 0,00 091 454
Thịt bò loại 1 25,050000000000 5,26 0,00 0,95 0,00 0,00 29,56
Ca rốt (củ đỏ, vàng) 18,230000000000 0,00 0,00 0,00 0,00 1,42 71
Khoai tây 7810000000000 0,00 0,00 0,00 0,00 1,63 7/26
Cary bột 5,210000000000 0,00 043 0,00 038 2A0 14/74
Đậu đũa 15,300000000000 0,00 0,00 0,00 0,00 121 9,03
Hình 2.9: Lượng thành phan dinh dưỡng của một thực don
o Các thành phần của các món ăn được tổng hợp, cộng lại số lượng đạm,
béo, đường và quy ra calo theo công thức (Vi dụ 1 g đạm = 4 calo). Luong
thức ăn phù hợp với một trẻ là lượng dinh dưỡng trung bình của món ăn.
Trong món ăn quy định số lượng dinh dưỡng này, các lượng đạm, béo, đường, calo được tính dựa trên lượng thức ăn phù hợp dé tính ra tỉ lệ P - L
- G cân đối như ở mục 2.2 đã nêu. Lượng đạm, béo, đường chuẩn là 14 -
26 — 60% trên số calo tổng. Thực đơn ban đầu sẽ bị trừ 100 điểm, nếu thực đơn đạt mức dinh dưỡng thi sẽ trừ bớt điểm đi khi và chỉ khi tỉ lệ P, L, G trong khoảng cho phép (đã nêu tại phần 2.2), số điểm trừ đúng bằng tỉ lệ phần trăm P - L - G đã được tính trong thực đơn. Nhờ đó, thực đơn tinh toán được độ chính xác tốt hơn, lượng dinh dưỡng đúng hơn.
Trong bài toán, điểm trừ càng lớn thì độ thích nghi càng nhỏ, khi điểm trừ càng nhỏ thì
độ thích nghi càng lớn. Qua hai tuần nghiên cứu và thay đổi thông số thi thông số phủ hợp với bài toán là quan thé: 1000 cá thể, thế hệ lai ghép 1000 lần, xác suất lai ghép 0.5, xác suất đột biến 0.2, số điểm trừ hai món ăn trùng lắp: 1000, số điểm trừ món ăn không
đủ dinh dưỡng: 100.000
25