首页 > 解决方案 > 如何从 scipy 中提取两个输出最小化

问题描述

我想要一个基于长度、宽度和高度(在一定范围内)最小化体积的函数。但是除了体积,我还要计算half_volume = volume /2。

我的最小化算法成功地确定了正确的高度、宽度和长度(显然是较低的波段值)。但是如何提取 half_volume 值?

def calcVolume(x):
    length = x[0]
    width  = x[1]
    height = x[2]
    volume = length * width * height
    half_volume = volume / 2
    return volume

sol = minimize(calcVolume, initial_guess, method = 'SLSQP', bounds = x_bounds,options = {'ftol': 1e-8, 'maxiter': 2000, 'disp': True})

因为我正在运行最小化,所以我不能返回一个以上的输出(在这种情况下是音量)。如果我打印 solution.x,它会给我正确的高度、重量和长度以及最小化的体积。如何访问 half_volume?

标签: pythonscipy-optimize-minimize

解决方案


您无法访问 half_volume,因为该函数没有返回它。

唯一的方法是通过在函数之外使用 half_volume 计算,如......

def calcVolume(x):
    length = x[0]
    width  = x[1]
    height = x[2]
    volume = length * width * height
    return volume

half_volume = calcVolume(x) / 2

推荐阅读