我正在研究一种遗传算法,作为一种有趣的编程练习。
问题在于用句子将不同语言的两个文本相互映射。由于不同的翻译可以在不同的地方开始和结束句子,因此文本之间存在大量但不完美的对应关系。
所以,举两个字符串:
a X. a a Y. a aaa a. X a a. a aa. aaa a Y aa.
X b bb. b Y bb bbb b X bb. bb. b. bb Y. bbb b.
其中X和Y是锚点和As和Bs语言特定的单词。我正在研究的基因将所有现有的句子中断(完全停止,不包括完成的句子)作为二进制值;上面的例子在两个文本中都有六个句子,所以需要十个比特。手动工作,不理解文本本身,我认为最好的答案是:
10011 11010
(1 - 没有变化,0 - 点被删除,句子合并),这将导致:
a X. a a Y a aaa a X a a. a aa. aaa a Y aa.
X b bb. b Y bb bbb b X bb. bb b. bb Y bbb b.
我的健身功能评估四个条件,如下:
但是,我没有得到我希望的结果,因为条件2非常重要,无论我做什么和进化停止都会接管。如果我没有大量调整发生的事情,我最终要么把整个事情合并成一个巨大的句子(基因00000 00000以上),要么找到第一个匹配的句子数并且卡住了。
一般来说,如何克服这个问题?当需要相互作用的条件列表时,如何才能使我的健身功能不被卡住?该过程应分为两个阶段吗?我怎样才能在一些进化后重新引入条件2?我应该每N代评估一次吗?
答案 0 :(得分:0)
不是将问题分成两个阶段,我认为你最好还是努力改善你的健身功能。拥有相互作用的条件不一定是个问题。关键是你的健康分数是如何计算的。如果给每个条件一个权重,可以调整每个条件以获得更好的结果。
如果你能提供更多关于健康分数的细节,那么可能更容易弄清楚正在发生的事情,但似乎某些条件具有比其他条件固有的更大的重量。特别是因为如果结果是一个巨大的句子,条件1应该给出低分,反之亦然。通过调整每个条件的相对权重,您应该能够针对两个条件都很好的基因,而不是一个或另一个。