gpt4 book ai didi

gekko - 当我使用较少的 nlp 迭代时,APOPT 正在为 MINLP 问题找到更好的局部最小值。我期待相反的结果,我错过了什么?

转载 作者:行者123 更新时间:2023-12-03 19:11:14 25 4
gpt4 key购买 nike

我有以下 bool 变量和连续变量,其中只有一些“百分比”的状态为 1。

status[i] = m.Array(m.Var, p, lb=0, ub=1, integer=True)
percent[i] = m.Array(m.FV, p, value=1, lb=0.6, ub=1.1)

我使用了一些使用 min2 选项的中介,这些选项被输入到我的约束方程中。

我的目标是状态、百分比和常数的线性总和。

我正在使用以下求解器选项:
m = GEKKO(remote=False)
# Options
m.options.SOLVER = 1
m.options.LINEAR = 0

# optional solver settings with APOPT
m.solver_options = ['minlp_maximum_iterations 10000',
'minlp_max_iter_with_int_sol 500',
'minlp_gap_tol 0.01',
'nlp_maximum_iterations 500',
'minlp_as_nlp 0',
'minlp_interger_leaves = 0',
'minlp_branch_method 1',
'minlp_integer_tol 0.01',
'minlp_print_level 2'
]

我返回的目标是: 2140.05 ,没有违反任何约束,解决方案非常好。但是,通过将“nlp_maximum_iterations”减少到 10,我可以获得更好的解决方案 2138.67 .

我希望我的最小值会随着迭代次数的增加而提高。我的计划是在运行时间和最优成本之间找到平衡,期望长时间运行会导致接近全局最小值的解决方案,我可以将其用作基线。

在我对问题的测试中,似乎 nlp_max_iterations 是天气的控制因素,它是否找到了两个成本中较低的一个。 minlp_maximum_iterations、minlp_max_iter_with_int_sol 和 minlp_gap_tol 似乎对解决方案没有影响。

对此行为的任何解释将不胜感激。

最佳答案

以下是一些可能会有所帮助的提示:

  • 使用 min3而不是 min2 .这使用二进制变量形式而不是可以给出错误解的 MPCC 形式。
  • APOPT 应保留最佳整数解,并在达到最大迭代次数时返回该解。是客观的解决方案2138.67整数解?
  • 如果是最大化问题,则 2140.05将是一个更好的解决方案。您能否确认您正在使用 m.Minimize()而不是 m.Maximize() ?

  • APOT 求解器使用 branch and bound method它解决了非线性规划 (NLP) 问题,同时在整数约束下连续界定变量。这里是 methods for declaring binary, integer, and special ordered sets .

    关于gekko - 当我使用较少的 nlp 迭代时,APOPT 正在为 MINLP 问题找到更好的局部最小值。我期待相反的结果,我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62051650/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com