首页 > 解决方案 > 如何在 python 中为“optimize.minimize”定义边界?

问题描述

我有一些变量的功能:

def objective(x):
     #= params
    x00 = x[0]
    y00 = x[1]
    u_m = x[2]
    a = x[3]
    b = x[4]
    u_mean_real = x[5]
    A = x[6]

    B = x[7]
    H = x[8]
    alpha = x[9]
    .
    .
    .
    .    


    A1 = interpolating_spline(1, x, DataPointsDomain, DataPointsRange)
    B = 6.6
    H = 1
    x00 = 0.5  
    y00 = 0.85806221   
    u_mean_real =0.957175
    u_m=1.2

    u_max = 1.287
    .
    .
    .

我需要为“optimize.minimize”定义“bound”,并为“A”的变量定义“A1”,但我不知道“A”值的范围

我该怎么做?

我想通过指定函数的三个变量(“a”,“b”,“alpha”)的值来最小化一个函数,这些变量的范围=(1,5),并定义其他变量函数作为数字或某个函数

请帮我

标签: pythonscipy-optimizescipy-optimize-minimize

解决方案


如果您不知道变量的两个边界,则可以使用 None 值指定它在该方向上是无界的。例如对于变量 A 它会是(A1, None),并且您可以将所有边界作为 touples 列表(或作为 Bounds 实例 - 仅在较新版本的 Scipy 中)


推荐阅读