为了账号安全,请及时绑定邮箱和手机立即绑定

scipy 优化最接近初始猜测的解决方案

scipy 优化最接近初始猜测的解决方案

慕沐林林 2021-06-09 14:53:17
我正在尝试使用 scipy.optimize.minimize 来获得以下问题的解决方案:假设给定 f(x,y) = x + 2*y,我们有一个初始猜测值 (1,1)。我们想要解决 f(x,y) = 0,但为了我的目标,任何给我 |f(x,y)| 的解决方案 < 耐受性足够好。显然有无数个解决方案,所以我的问题是:在 optimize.minimize 中是否有算法优先考虑最近的(欧几里得距离)解决方案?也就是说,我想象从初始猜测开始,并在初始猜测周围搜索一个圆圈,如果没有解决方案,半径会增加,但是一旦它碰到一个在容差范围内的点,那么它就会返回该点。任何指针将不胜感激。
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

假设方程 f(x,y) = 0 至少有一个解。那么您可以将其表述为约束优化问题,以获得最接近给定初始猜测的解:


from scipy.optimize import minimize

import numpy as np


# We want to minimize ||f(x)-xinit|| subject to f(x) = 0


f = lambda x: x[0] + 2*x[1]

# the euclidean norm of f-xinit

objfun = lambda x, xinit: np.sqrt(np.sum((f(x)-xinit)**2))


# initial guess

xinit = [1, 1]

# constraint f(x) = 0:

constr = {"type": "eq", "fun": f}

minimize(fun=objfun, args=(xinit,), x0=xinit, constraints=constr)

在方程 f(x,y)=0 无解的情况下,您可以尝试最小化 |f(x,y)| 没有任何限制。


查看完整回答
反对 回复 2021-06-15
  • 1 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号