【发布时间】:2018-10-06 13:29:19
【问题描述】:
我对 CPlex 和约束编程很陌生,我似乎不知道如何解决这个问题。 给定一个目标k和一个词长n,找到一组k个长度n的DNA词。 DNA 词是字母表 {A,C,G,T} 上的字符串,满足这些约束:
对于集合中的所有单词对 w1、w2,汉明距离 它们之间必须大于给定值,d
单词中至少 50% 的字母必须是 G 或 C
-
对于集合中的所有单词对 w1, w2,汉明距离 w1 和 w2 的 Watson-Crick 补码之间必须大于 给定值,d
单词 w 的 Watson-Crick 补集是通过反转 w 并将所有“A”字母替换为“T”(反之亦然)和所有“C”字母替换为“G”(反之亦然)而获得的。
我尝试按照 Velino 示例进行操作,但我似乎想不出一种方法来模拟最大化目标。 你能帮我开始这个小项目吗?我对“主题”块之外的代码特别感兴趣。
谢谢!
【问题讨论】:
-
所以你还没有尝试任何东西?那我怕它太宽泛了。不过,将其表述为 MIP 看起来相对简单(但它不会是一个小模型)。很难说您熟悉或不熟悉 MIP 公式的哪些基本构建块。您对最大化的期望是什么?您的描述没有什么可优化的。这只是一个可行性问题。因此,您可以将目标设置为任何常量。