相关疑难解决方法(0)

linesearch的正方向导数

scipy.optimize'linesearch的正方向导数'的含义是什么意思?

例如在fmin_slsqp中 http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_slsqp.html

scipy

12
推荐指数
4
解决办法
1万
查看次数

Jacobian和Hessian在`scipy.optimize.minimize`中输入

我试图了解"狗腿"方法在Python scipy.optimize.minimize函数中的工作原理.我正在调整帮助页面底部的示例.

根据笔记,狗腿洞方法需要Jacobian和Hessian参数.为此,我使用numdifftools包:

import numpy as np
from scipy.optimize import minimize
from numdifftools import Jacobian, Hessian

def fun(x,a):
    return (x[0] - 1)**2 + (x[1] - a)**2

x0 = np.array([2,0]) # initial guess
a = 2.5

res = minimize(fun, x0, args=(a), method='dogleg',
               jac=Jacobian(fun)([2,0]), hess=Hessian(fun)([2,0]))

print(res)
Run Code Online (Sandbox Code Playgroud)

编辑:

如果我按照以下帖子的建议进行更改,

res = minimize(fun, x0, args=a, method='dogleg',
               jac=Jacobian(lambda x: fun(x,a)),
               hess=Hessian(lambda x: fun(x,a)))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误TypeError: <lambda>() takes 1 positional argument but 2 were given.我究竟做错了什么?

在初始猜测中计算雅可比行列式和Hessian也是正确的x0吗?

python optimization lambda numpy scipy

7
推荐指数
2
解决办法
5255
查看次数

找到重叠圆圈的新位置

我正在尝试编写一个代码,对于给定的圆列表(list1),它能够找到新圆(list2)的位置。list1 和 list2 具有相同的长度,因为对于 list1 中的每个圆,都必须有一个来自 list2 的圆。

  1. 每对圆(假设 list1 中的 Circle1 和 list2 中的 Circle2)必须尽可能靠近,
  2. list2 中的圆圈不得与 list1 中的圆圈重叠,而单个列表中的圆圈可以相互重叠。

list1 是固定的,所以现在我必须从 list2 中找到圆圈的正确位置。

我编写了这个简单的函数来识别两个圆是否重叠:

def overlap(x1, y1, x2, y2, r1, r2):
    distSq = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)
    radSumSq = (r1 + r2) * (r1 + r2)
    if (distSq >= radSumSq):
        return False # no overlap
    else:
        return True  #overlap
Run Code Online (Sandbox Code Playgroud)

这是列表1:

在此输入图像描述

和:

x=[14.11450195 14.14184093 14.15435028 14.16206741 14.16951752 14.17171097
 14.18569565 …
Run Code Online (Sandbox Code Playgroud)

python algorithm geometry numpy overlap

4
推荐指数
2
解决办法
1438
查看次数

标签 统计

numpy ×2

python ×2

scipy ×2

algorithm ×1

geometry ×1

lambda ×1

optimization ×1

overlap ×1