设计整数线性规划的目标函数

时间:2014-09-05 03:29:29

标签: python bioinformatics linear-programming integer-programming pulp

我正在设计整数线性编程模型的目标函数。目标是确定两个基因的拷贝数以及是否发生基因转换事件(其中一个拷贝被另一个拷贝覆盖,看起来一个被删除但是净拷贝数没有改变)。

问题涉及两个数据向量,P_AP_B。向量包含大于零的连续值,其对应于在每个位置处进行的拷贝数的度量。 P_{A,i}基因不一定与P_{B,i}相同,因为每个拷贝的位置都是唯一的(并且可以映射到基因组中的绝对位置)。

鉴于此,我的计划是尝试最小化我的决策变量与不同基因组窗口的测量数据之间的差异,给出了对应于同一区域的两个数据向量的不同切片。

决策变量:

A_w = copy number of A in window in {0,1,2,3,4}
B_w = copy number of B in window in {0,1,2,3,4}
C_w = gene conversion in {-2,-1,0,1,2}

然后目标是最小化以下等式的左侧和右侧之间的差异:

A_w - C_w ~= mean(P_{A,W})
B_w + C_w ~= mean(P_{B,W})

受限于2 <- A_w + B_w <= 4

等少数约束

但我不确定如何将其表述为最小化的函数。我有两个不是函数的方程,决策变量没有系数。

我也不确定如何处理C_w的负值。

我也不确定如何将结果重新组合在一起;在我解决每个窗口中的LP之后,我仍然需要将它合并到一个基因范围的调用中(理想情况下,确定哪个窗口具有非零值C_w

1 个答案:

答案 0 :(得分:0)

创建LpProblem实例:

problem = LpProblem("Another LpProblem", LpMinimize)

目标(根据你上面含糊的描述):

problem += (mean(P_{A,W}) - (A_w - C_w)) + (mean(P_{B,W}) - (B_w + C_w))

这是我从你那个非常模糊的问题中可以看出来的。你需要更加明确你的意思,比如“将结果重新组合在一起”或“处理C_w中的负值”。添加您当前的代码段和您获得的错误以获取更多详细信息。