问题标签 [jenetics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Jenetics 约束似乎没有效果
@Value
是Lombok的一部分,并生成一堆代码,如构造函数、getter 等。Problem
该类为特定的背包问题定义了一些常量(来自https://people.sc.fsu.edu/~jburkardt/datasets/knapsack_01/的 P07背包_01.html):
尽管 Jenetics用户指南说(参见第 2.5 节):
一个给定的问题通常应该以某种方式编码,即进化不可能
Engine
创造出无效的个体(Genotypes
)。
我想知道为什么引擎会不断创建重量超过背包最大容量的解决方案。所以尽管这些解决方案根据给定的无效Constraint
,Phenotype#isValid()
返回true
。
我可以通过将适应度函数更改为:
或者通过确保编解码器只能创建有效的解决方案:
Constraint
但是,如果它没有效果,那么它的目的是什么?
java - 使用 Jenetics 创建基因型时的约束
我正在使用Jenetics试验多目标优化问题 (MOP) 。我创建的一个玩具问题是从给定集合中选择两个子集,最大化它们的总和,给定每个子集都有一个限制。但是我想确保这两个子集是互斥的。在创建两条染色体的基因型时如何设置此约束?
我用来解决玩具问题的套装是:
我的问题的签名是:
编解码器是:
我为第一个子集分配了 9 个限制,第二个子集分配了 4 个限制。
我期望两个具有互斥基因的染色体的初始种群,这样表型最终将产生没有从SET
.
我目前得到的一个示例输出是:
但我希望两个人都有相互排斥的物品。Jenetics 如何做到这一点?
java - 通过交换染色体进行重组以产生新的基因型
Jenetics 文档指定重组通过组合两个(或多个)亲本染色体的一部分来创建一个新染色体。基于此,该库还提供了各种交叉技术的具体实现。是否有一个开箱即用的功能,我可以使用它来重组群体中的两个(或更多)基因型(即交换染色体),而不影响每个染色体的基因?
考虑一个示例,其中初始群体由 2 个基因型组成,每个基因型由 2 条染色体组成。我需要两个个体之间的交叉,这样只有染色体被交换,而基因完好无损。
代码中的相同示例如下所示:
CustomWordCrossover
该类扩展接口以在Alterer
基因型之间随机交换染色体。
有没有更好的方法来实现这一目标?也许是内置库函数?到目前为止,我在文档中找不到任何内容。
genetic-algorithm - 遗传算法适应度和交叉选择
我正在尝试使用遗传算法为教室中的给定部分安排随机座位列表,以便该教室中的所有小组坐在一起。
这是我目前的尝试,我不清楚改进此算法的最佳方法,因为这是我 GA 学习的早期阶段。
我正在使用 Java 库 Jenetics,它非常适合我入门,这里是引擎。
编码看起来像这样
我的健身功能肯定可以提高,我没有使用任何库,所以这里的任何建议都会很棒,但看起来像这样。
基本上我所做的只是找到组中每个座位的 x 和 y 坐标,并计算每个座位与组中其他座位的距离,并将这些值相加。值越低越好,因此Optimize.MINIMUM
在引擎中
请参阅下面的结果图像,您可以看到它非常好(尽管运行大约需要 3 分钟才能产生正确的结果)。
java-stream - jenetics:在 stream() 之外设置 EvolutionStream 限制
在jenetics中有几种可能性来设置终止限制EvolutionStream
,请参阅文档。
这些限制通常直接应用于stream
,例如
或者
或结合使用,请参见示例:
在我的优化问题中,我想让用户决定分配给问题的限制。我不知道预先设置的限制。它可能是多个限制。因此,我必须在运行时分配限制类型。
我试图EvolutionStream
通过
并在 上分配限制evolutionStream
:
结果是一个Stream,它不知道EvolutionStream
具体的限制方法。因此,如果定义了多个限制,我将无法应用它。试图投
导致错误:
那么,有没有办法在流构建器之外正确应用多个限制?
fitness - jenetics: Fitness: 分配一个对象来确定适应度和复杂的适应度结果类型
我使用的IntegerChromosome
是实际问题的编码。为了确定适合度,我必须从IntegerChromosome
或更多IntegerGene
值解码为优化问题的实际基本类型。因此,例如,IntegerGene
值 0 表示具有值的类型实例Class
,A
1 表示具有值的类型实例,Class
依此B
类推。因此,01233210 将转换为 ABCDDCBA。只有后者我可以评价。我在运行时在类中获取此信息FitnessInput
。
因此我需要传递FitnessInput
适应度函数的确定。看一个简单的例子,我发现在eval()
例子中的方法中,适应度的确定是在静态方法中进行的。是否有一个概念和相关示例如何将运行时对象传递给适应度的确定,而不是在fitness()
实现的类中覆盖静态变量?
第二个问题与适应度确定问题有关。我发现了简单数据类型用于确定适合度的Integer
示例。Double
虽然这当然是合理的,但我想将一个对象返回给用户以获得最佳表型,其中包含确定其适合度的所有中间结果。我想如果我的返回对象实现了这应该是可能的Comparable
。例如,我如何利用该Function
界面?
java - Jenetics 计算整个人群的健康状况
根据我的问题的性质,出于性能原因,我想同时计算人口中所有个人的健康状况。在jenetics中是否有这样做的好方法?
谢谢
java - Quarkus 和 Jenetics 的 ContextNotActiveException
第一次使用 Quarkus,这可能是一个菜鸟问题,但我不知道如何解决。我正在尝试设置一个应该运行遗传算法(由 Jenetics 制作)并返回结果的端点。这是端点定义:
端点要求执行以下服务类:
最后这是映射器类:
当我运行上面的代码时,我得到以下异常:
Error handling 0d80baf3-12da-49ec-b8d0-e48472c801c9-1, org.jboss.resteasy.spi.UnhandledException: java.util.concurrent.CancellationException: javax.enterprise.context.ContextNotActiveException
代码在标准 Java 应用程序中完美运行,但在 Web 服务中却没有。任何想法?
java - Jenetics:如何解释并得到染色体的结果?
我练习使用这个库,Jenetics.io。在他们的手册中,他们有一个例子,旅行推销员。该示例仅显示找到的最小路径,但不显示解决方案的点集或点顺序。如何获得解决方案的点集?
手册.. 第 129 页在此处输入链接描述
运行代码,结果:
我使用的代码:
}