[英]Fitting blocks into an asymmetrical shape (Python, Genetic Algorithm)
您好,我正在嘗試將樂高積木拼成不對稱的形狀。
我可以在所有樂高積木(不同重量)之間進行選擇,它們是:
所有的磚塊都可以垂直和水平對齊
將形狀帶入代碼中,我使用如下數組:
0 0 1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0
我現在需要以最低的成本將塊放入這種形狀 我考慮為此使用 g.netic 算法,但實際上不確定如何開始
誰能幫我解決這個問題?
首先,您可以通過維護預先計算的坐標數組並將其用作 DNA 的一部分,將可能的坐標僅限制在內部方塊中。 如果內部面積僅為總面積的一半,則其性能至少應提高 100%。
然后DNA可以由以下基因組成:
那么適應度可以通過以下方式計算:
a1 * (each square of lego that overlaps with other lego)^2
a2 * (each square of lego that overflows the shape)^2
a3 * (cost of a lego)^2
(a4 * the percentage of interior filled) - penalty
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.