Python 如何在scipy.optimize.minimize中设置优化变量分辨率

Python 如何在scipy.optimize.minimize中设置优化变量分辨率,python,optimization,scipy,minimize,Python,Optimization,Scipy,Minimize,背景:一艘船使用24条系泊缆和4个护舷停泊在码头上。这些系泊缆需要由经验丰富的工程师预张紧至设计值。通过设置每根系泊缆的适当长度进行预张紧。进行静态模拟,以获得管线上的张力和挡泥板上的压缩力。这是一个迭代过程,因为系泊缆长度的微小变化可能会导致张力的显著变化 问题描述: 建立一个目标函数,以系泊缆长度作为输入数组,并返回目标值和实现的预张力值之间的绝对差值之和 现在,我正在使用带有以下选项的scipy.optimize.minimize函数: target_wire_lenghts = {'L

背景:一艘船使用24条系泊缆和4个护舷停泊在码头上。这些系泊缆需要由经验丰富的工程师预张紧至设计值。通过设置每根系泊缆的适当长度进行预张紧。进行静态模拟,以获得管线上的张力和挡泥板上的压缩力。这是一个迭代过程,因为系泊缆长度的微小变化可能会导致张力的显著变化

问题描述: 建立一个目标函数,以系泊缆长度作为输入数组,并返回目标值和实现的预张力值之间的绝对差值之和

现在,我正在使用带有以下选项的scipy.optimize.minimize函数:

target_wire_lenghts = {'Line1': (48.0, 49.0),'Line2': (48.0, 49.0),'Line3': (45.0,46.0),
                       'Line4': (10.0,11.0),'Line5': (8.0,9.0),'Line6': (7.0,8.0),
                       'Line7': (46.0,47.0),'Line8': (48.0,49.0),'Line9': (50.0,51.0),
                       'Line10': (33.0,34.0),'Line11': (31.0,32.0),'Line12': (29.0,30.0),
                       'Line13': (32.0,33.0),'Line14': (34.0,35.0),'Line15': (36.0,37.0), 
                       'Line16': (48.0,49.0),'Line17': (46.0,47.0),'Line18': (45.0,46.0),
                       'Line19': (8.0,9.0), 'Line20': (8.0,9.0), 'Line21': (9.0,10.0),
                       'Line22': (44.0,45.0),'Line23': (45.0,46.0), 'Line24': (46.0,48.0)}

# Bounds
bounds = list(target_wire_lenghts.values())
# Initial guess
x0 = [np.mean([min, max], axis=0) for min,max in bounds]

# Options
options = {'ftol' : 0.1,
           'xtol' : 0.1,
           'gtol' : 0.1,
           'maxiter' : 100,
           'accuracy' : 0.1}

result = minimize(objfn, x0, method = 'TNC', bounds = bounds, options =         options)
print(result)
但是,优化器并没有改变输入数组。结果与初始输入数组
x0
相同(请参见下面的长度列)。我尝试使用“TNC”解算器的可选公差参数,但没有看到任何改进。另外,请注意,即使我设置了
maxiter=100
,迭代也会转到130

请说明调用最小化函数时我犯了什么错误

编辑:我认为优化正在运行,但每次将变量更改0.000001。选项参数
eps
(步长用于雅可比矩阵的数值近似)。当设置为0.01时,优化看起来有效。不幸的是,它仍然未能达成合理的解决办法。我尝试进行无界优化,初始猜测
x0
与答案非常接近(我通过手动改变每个变量发现),然后优化器能够给出比我的手动解决方案更好的解决方案

所以现在的问题是如何在初始猜测错误的情况下快速进行24变量优化?多目标优化是否可以解决问题,达到每条线的预张力是一个目标