如何复制变量

2024-09-27 00:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要深入复制一个LpProblem,但是当我使用LpProblem.deepcopy()方法时,需要引用LpVariables的问题副本。在这种情况下,如果我改变复制问题的一个变量的上界,这个改变会影响原来的问题变量。你知道吗

考虑以下情况:

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

在这种情况下,currentProblem中变量的上限也变为10。你知道吗

如何深度复制一个LpProblem,它深度复制它的所有元素?(包括LpVariables


Tags: of方法元素副本情况somevariabledeepcopy
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:36

似乎没有解决这个问题的办法。所以我编写了两个函数来保存和恢复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

相关问题 更多 >

    热门问题