python - 如何在 Python 的 nlopt 中返回增强拉格朗日方法 (LD_AUGLAG) 的拉格朗日乘数和惩罚参数的最终值?
问题描述
我希望在 Python 的 NLOPT 中使用增强拉格朗日方法 (LD_AUGLAG) 来解决另一个优化策略的子问题。但是,为此,我需要知道拉格朗日乘数的最终值和终止时的惩罚参数。
我查看了 NLOPT 的 Python 版本可用的返回选项,但无法找到这些值的返回选项。
import nlopt
import numpy as np
def myfunc(x, grad):
d = x.size
val = 0.0
for i in range(d):
val += 0.5 * (x[i]**4 - 16.0*x[i]**2 + 5.0*x[i])
return val
def mycons(x, grad):
val = np.dot(x,x) - 30.0
return val
n = 2
x0 = np.zeros(n)
local_opt = nlopt.opt(nlopt.LN_BOBYQA, n)
local_opt.set_ftol_rel(1e-10)
opt = nlopt.opt(nlopt.LD_AUGLAG, n)
opt.set_local_optimizer(local_opt)
opt.add_inequality_constraint(mycons, 1e-08)
opt.set_min_objective(myfunc)
x1 = opt.optimize(x0)
print(opt.last_optimum_value())
我希望在 opt 对象中可以选择返回拉格朗日乘数的值和终止时使用的惩罚参数。但是,在 NLOPT 中似乎没有这样的选项。
解决方案
推荐阅读
- angular - 如何用角度的json数组值填充html表?
- visual-studio-2015 - 在 D3D11RenderSystem::D3D11RenderSystem 中创建 Direct3D11 设备失败
- python - Bot 没有响应我的命令 | 不和谐.py
- c++ - Arduino 项目 - 社交距离警报超声波雷达项目
- java - 当我将 FAN 更新到 6.2.0 时未加载 FB 广告,但在 5.+ sdk 上加载并显示了具有相同代码的广告
- python - 如何在 django 应用程序中查看用户选择的数据库中的项目?
- r - 在 R 中收到带有多变量回归的 NA 错误,不确定为什么
- javascript - api请求后如何显示结果?(js)
- html - 在 HTML 代码中找不到项目的 ID
- sql - 如何在不使用 sql 中的限制子句的情况下获取过去 6 周的数据?