2

当我使用方法时LpProblem,我需要LpVariables通过引用对问题副本进行深度复制。LpProblem.deepcopy()在这种情况下,如果我更改复制问题变量之一的上限,此更改会影响原始问题变量。

考虑以下情况:

    branch1 = currentProblem.deepcopy()
    v = ... # some variable of branch1
    v.upBound = 10

在这种情况下,变量 in 的上限currentProblem也更改为 10。

我怎样才能深拷贝一个LpProblem深拷贝它的所有元素?(包括LpVariables

4

1 回答 1

0

似乎没有解决方案。所以我写了两个函数来保存和恢复LpVariables. 它可以帮助我解决这种情况。

def saveVarsAsDict(lpProblem):
    varsNameValue = {}
    for v in lpProblem._variables:
        if v.varValue != 0:
            varsNameValue[v.name] = v.varValue
    return varsNameValue


def restoreVarsValues(lpProblem, varsNameValue):
    for v in lpProblem._variables:
        if v.name in varsNameValue:
            v.varValue = varsNameValue[v.name]
        else:
            v.varValue = 0
于 2016-02-25T15:04:56.977 回答