zfcq 发表于 2021-7-22 10:00:00

Python递归死循环问题-有关数学建模整数规划

本帖最后由 zfcq 于 2021-7-22 10:44 编辑

代码是解决数学建模中整数规划问题的代码

import math
from scipy.optimize import linprog
import sys

def integerPro(c, A, b, Aeq, beq, t=1.0E-12):
    res = linprog(c, A_ub = A, b_ub=b, A_eq=Aeq, b_eq=beq)
    if(type(res.x) is float):
      bestX = *len(c)
    else:
      bestX = res.x
    bestVal = sum()
    if all(((x-math.floor(x))<t or (math.ceil(x)-x)<t ) for x in bestX):

      return (bestVal, bestX)
   
    else:
      ind =
      newCon1 = *len(A)
      newCon2 = *len(A)
      newCon1 = -1
      newCon2 = 1
      newA1 = A.copy()
      newA2 = A.copy()
      newA1.append(newCon1)
      newA2.append(newCon2)
      newB1 = b.copy()
      newB2 = b.copy()
      newB1.append(-math.ceil(bestX))
      newB2.append(math.floor(bestX))
      r1 = integerPro(c, newA1, newB1, Aeq, beq)
      r2 = integerPro(c, newA2, newB2, Aeq, beq)
      if r1 < r2:
            return r1
      else:
            return r2

      
if __name__ == '__main__':
    c =
    A = [[-1,-6, -2],[-2,0,0]]
    b = [-5, -3]
    Aeq = []
    beq=
    print(integerPro(c, A, b, Aeq, beq))



运行结果应为:
(8.0, array())

主要是求解决整数规划-分支定界相关问题的方法,可以发有点相关解决方法,或者直接用其他库。。

suchocolate 发表于 2021-7-22 10:06:44

递归教学实验可以,生产环境尽量不用。
上面是递归超限了,所以error了,把代码改成不用递归。

学渣李某人 发表于 2021-7-22 10:13:12

非要递归的话开头加上:
sys.setrecursionlimit(1000000)

zfcq 发表于 2021-7-22 10:15:23

suchocolate 发表于 2021-7-22 10:06
递归教学实验可以,生产环境尽量不用。
上面是递归超限了,所以error了,把代码改成不用递归。

那不就成了线性规划问题了吗,这不用递归的话,整数最优解难道要自己一点点试?

kogawananari 发表于 2021-7-22 10:17:33

把代码改成尾递归

zfcq 发表于 2021-7-22 10:17:53

学渣李某人 发表于 2021-7-22 10:13
非要递归的话开头加上:

不输出结果,直接 RESTART: Shell 了

学渣李某人 发表于 2021-7-22 10:19:04

别用idle或者别用递归, 昨天有人问过这个问题

学渣李某人 发表于 2021-7-22 10:23:28

你这个问题和这个很像:
https://fishc.com.cn/forum.php?mod=viewthread&tid=199343

zfcq 发表于 2021-7-22 10:28:28

学渣李某人 发表于 2021-7-22 10:23
你这个问题和这个很像:
https://fishc.com.cn/forum.php?mod=viewthread&tid=199343

我这个应该是可以运行成功的,因为有确切结果,我怕我是代码逻辑问题

学渣李某人 发表于 2021-7-22 10:29:41

zfcq 发表于 2021-7-22 10:28
我这个应该是可以运行成功的,因为有确切结果,我怕我是代码逻辑问题

你先试试用别的编辑器运行一下吧, 实在不行可以用vscode打断点调试

3236654291 发表于 2021-7-24 14:13:49

我也不知道,不过悬赏40鱼币还是我头一次见
页: [1]
查看完整版本: Python递归死循环问题-有关数学建模整数规划