import (
"github.com/jocum/ga/bl"
)
func Packing() string {
rects := make([]core.Rect, 0)
rects = append(rects,
core.NewDefaultRect(105, 87, 1),
core.NewDefaultRect(87, 87, 2),
core.NewDefaultRect(57, 105, 3),
core.NewDefaultRect(66, 57, 4),
)
// 尝试排序
sort.Slice(rects, func(i, j int) bool {
return rects[i].GetArea() > rects[j].GetArea()
})
// 传入需要装箱的矩形和箱子的大小
bl := core.NewBl(1650, 2400, rects)
// 打包装箱
bl.Packing()
// 计算综合面积使用率
bl.CountAdaptability()
jsonb, err := json.Marshal(gabl)
if err != nil {
return err.Error()
}
return string(jsonb)
}
import (
"github.com/jocum/ga/bl"
"github.com/jocum/ga"
)
func Ga() string {
// 初始化遗传算法
gaStruct := ga.NewGeneticAlgorithm(
// bl算法结构体
bl,
// 需要遗传迭代的次数
ga.IteratorNum(50),
// 族群数量
ga.ChromosomeNum(20),
// 族群每次迭代复制比例
ga.CpRate(0.2),
// 个体基因突变几率
ga.MutationRate(0.2),
// 个体基因突变后需要执行突变的基因比例
ga.MutationGeneRate(0.1),
)
// 迭代
gabl := gaStruct.Iterator()
jsonb, err := json.Marshal(gabl)
if err != nil {
return err.Error()
}
return string(jsonb)
}