Python DEAP-自定义适应功能

时间:2018-11-05 23:37:00

标签: python genetic deap fitness

我的问题是我的遗传编程实现中是否可能在DEAP / Python中实现自定义适应性功能。

在搜索并阅读了DEAP的官方文档后,我没有找到任何关于它的信息,因此,如果你们中的一个可以帮助我,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

确定要自定义健身功能吗?

这有点令人困惑,但是您可能是指自定义评估函数。这应该返回一个数字,然后适应性函数会尝试将其最大化或最小化。

一个很好的例子是https://deap.readthedocs.io/en/master/examples/ga_onemax.html

在本教程中,设置了标准的最大化适应度功能:

extension UILabel {

    /// The IBInspectable helps us to set localizable text in IB
    @IBInspectable var localizableText: String? {
        get { return text }
        set(value) { text = value?.localized() }
    }


    /// The IBInspectable helps us to set localizable text in IB
    @IBInspectable var localizableUppercaseText: String? {
        get { return text }
        set(value) { text = value?.localized().uppercased() }
    }
}

extension String {

    func localized(bundle: Bundle = .main, tableName: String = "Localizable") -> String {
        return NSLocalizedString(self, tableName: tableName, value: "**\(self)**", comment: "")
    }

}

接着是“自定义”评估功能:

creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)

然后将其注册到工具箱:

def evalOneMax(individual):
    return sum(individual),