标签: minimization

最小化f(x,y),其中x和y是整数

我想知道是否有人有任何关于最小化函数的建议,f(x,y),其中x和y是整数.我已经研究了很多最小化和优化技术,比如BFGS和GSL中的其他技术,以及Numerical Recipes的内容.到目前为止,我已尝试实现几种不同的方案.第一种方法是选择最大下降方向f(x + 1,y),f(x-1,y),f(x,y + 1),f(x,y-1),并按照该方向线最小化.我也尝试过使用下坡单纯(Nelder-Mead)方法.两种方法都远离最低限度.它们似乎都在更简单的函数上工作,比如找到抛物面的最小值,但我认为两者,尤其是前者,都是针对x和y是实值(双精度)的函数而设计的.还有一个问题是我需要尽可能少地调用f(x,y).它与外部硬件通信,每次呼叫需要几秒钟.对此的任何想法将不胜感激.

这是错误函数的一个例子.对不起,我之前没有发帖.此功能需要几秒钟的时间来评估.此外,我们从设备查询的信息如果低于我们想要的值,则不会添加到错误中,只有当它高于我们的期望值时

double Error(x,y)
{
  SetDeviceParams(x,y);
  double a = QueryParamA();
  double b = QueryParamB();
  double c = QueryParamC();
  double _fReturnable = 0;
  if(a>=A_desired)
  {
    _fReturnable+=(A_desired-a)*(A_desired-a);
  }
  if(b>=B_desired)
  {
    _fReturnable+=(B_desired-b)*(B_desired-b);
  }
  if(c>=C_desired)
  {
    _fReturnable+=(C_desired-c)*(C_desired-c);
  }
  return Math.sqrt(_fReturnable)
}
Run Code Online (Sandbox Code Playgroud)

c# algorithm minimization numerical-analysis

6
推荐指数
1
解决办法
1441
查看次数

Ruby的元帅更快/更有效的替代方案?

我正在寻找直接替代Ruby的Marshal能力,希望它具有以下一个或多个优于Marshal的优势:

  • 更快的序列化/反序列化
  • 更简洁(或更简单)的对象图

谢谢!!

ruby algorithm marshalling minimization unmarshalling

6
推荐指数
1
解决办法
1605
查看次数

使用scipy.optimize快速找到函数等于0的第一个点

基本上,给定一个函数可以为不同的参数生成这样的输出:

在此输入图像描述

我想快速找到函数等于0的第一个x.因此,使用在x上产生蓝色曲线的参数,我想找到x = 134.对于绿色曲线,我想找到x = 56等.

认为该函数将始终单调递减,直到它达到零,但我不完全确定.

该功能不一定单调递减.

肯定,它将只命中0一次,然后保持为零.

目前我通过迭代x值直到我达到零来强制它,但我想要一些更好的做出有根据的猜测(基于斜率?)和迭代.

理想我想使用的东西已经出炉(因为90%的程序员甚至不能正确地写一个二进制搜索),像一些scipy.optimize,但似乎这些都希望找到无论是全球最低或零交叉.

(此功能排序RGB立方体的用于左声道的颜色空间中的给定色度distance_to_the_wall(所以基本上构建"三立夹到RGB"功能)的,但由于IRGB和LCh中之间的映射可以通过库,并与等参数而变化我认为最好只尝试几个值,直到找到正确的值,而不是试图直接反向计算值?)

python mathematical-optimization minimization scipy

6
推荐指数
1
解决办法
1555
查看次数

PyMinuit vs IMinuit

我在Python 2.7上寻找一个等同的服装,我发现了这两个变种:
PyMinuit
iMinuit.

我的问题是:它们之间有什么区别?

两者都使用了Seal 1.7.9 Minuit,并且在一些2D高斯拟合测试中我都给出了相同的答案.那么,除了安装方法(iMinuit更容易)之外,我为什么要选择一个呢?


谢谢你的帮助!的xD

PS我试图标记iminuit但我无法创建新标签... = /

python minimization pyminuit iminuit

6
推荐指数
1
解决办法
2366
查看次数

scipy.optimize 显示所有迭代输入和输出值

我在用scipy.optimize.minimize从函数中找到最佳值。这是最简单的示例,使用内置 Rosenbrock 函数:

\n\n
>>> from scipy.optimize import minimize, rosen\n>>> x0 = [1.3, 0.7, 0.8, 1.9, 1.2]\n>>> # Minimize returns a scipy.optimize.OptimizeResult object...\n>>> res = minimize(rosen, x0, method='Nelder-Mead') \n>>> print res\n  status: 0\n    nfev: 243\n success: True\n     fun: 6.6174817088845322e-05\n       x: array([ 0.99910115,  0.99820923,  0.99646346,  0.99297555,  0.98600385])\n message: 'Optimization terminated successfully.'\n     nit: 141\n
Run Code Online (Sandbox Code Playgroud)\n\n

x只是最终的最佳输入向量。\xe2\x80\x8b我可以从返回的结果中获取所有迭代的列表(即具有相应输入向量的目标函数)scipy.optimize.OptimizeResult

\n

python optimization minimization scipy

6
推荐指数
1
解决办法
5473
查看次数

最小面积计算算法(仅在边缘放置切片)

我有不同尺寸的小矩形(1cm x 2xm,2cmx3cm,4cm*6cm等).不同类型矩形的数量可根据情况而变化.每种类型的不同矩形可以具有不同数量的计数.

我需要创建一个包含所有这些小矩形的大矩形,这些小矩形只能放在边缘上.没有轮换.理想情况下,最终的外部矩形应该是方形的.X~Y.并非所有边缘都需要填满.较小的矩形之间可能存在间隙.图片示例:http:
//i.stack.imgur.com/GqI5z.png

我正在尝试编写一个代码,找出可以形成的最小可能区域.

我有一个算法循环所有可能的位置,以找出可能的最小区域.但是,随着不同类型矩形的数量和矩形数量的增加,这需要很长的运行时间.即2种类型的矩形,每种都有100 +矩形.8循环.那将是~100 ^ 8次迭代

有关更好和更快算法的任何想法,以计算最小可能区域?代码是在python中,但任何算法概念都可以.

    for rectange_1_top_count in (range(0,all_rectangles[1]["count"]+1)):
      for rectange_1_bottom_count in range(0,all_rectangles[1]["count"]-rectange_1_top_count+1):
        for rectange_1_left_count in (range(0,all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count+1)):
          for rectange_1_right_count in ([all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count-rectange_1_left_count]):
            for rectange_2_top_count in (range(0,all_rectangles[2]["count"]+1)):
              for rectange_2_bottom_count in (range(0,all_rectangles[2]["count"]-rectange_2_top_count+1)):
                for rectange_2_left_count in (range(0,all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_top_count+1)):
                  for rectange_2_right_count in [(all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_left_count-rectange_2_top_count)]:
                      area=calculate_minimum_area()
                      if area< minimum_area:
                        minimum_area=area
Run Code Online (Sandbox Code Playgroud)

algorithm geometry rectangles minimization placement

6
推荐指数
1
解决办法
153
查看次数

与 Python/SciPy 中的 MATLAB 模式搜索等效吗?

我正在寻找MATLAB 模式搜索优化算法的 Python 等效项。我浏览了 SCiPy 文档,但没有找到类似的内容。你知道 Python/SciPy 中是否有一些可用的模式搜索算法吗?您是否提示我还应该在哪里搜索?

python optimization minimization scipy

6
推荐指数
1
解决办法
2366
查看次数

通过障碍和空间约束最小化总路径成本

我有一个节点网络排列在一个2D Grid.我想连接具有连接的节点对,然后占用2D网格上的物理空间.现在这些连接本身就是障碍,未来的连接将不得不走一条避免相交的路径.

我目前正在使用A* algorithm并逐步建立连接.虽然它找到从开始到结束节点的最短路径,但它不考虑需要进行的其他连接,因此连接所有对之后的总路径成本不是最佳的.

有谁知道是否有一种算法可以解决这个问题,或者这是一个NP完全问题?关于相关材料的任何指示也将受到赞赏.

java algorithm minimization shortest-path neural-network

5
推荐指数
1
解决办法
169
查看次数

Python - 最小化卡方

我一直在尝试通过最小化卡方来将线性模型拟合到一组应力/应变数据。不幸的是,使用下面的代码并不能正确地最小化该chisqfunc函数。它正在寻找初始条件下的最小值 ,x0这是不正确的。我已经查看了scipy.optimize文档并测试了最小化其他工作正常的功能。您能否建议如何修复下面的代码,或者建议我可以使用另一种方法通过最小化卡方来将线性模型拟合到数据?

import numpy
import scipy.optimize as opt

filename = 'data.csv'

data = numpy.loadtxt(open(filename,"r"),delimiter=",")

stress = data[:,0]
strain = data[:,1]
err_stress = data[:,2]

def chisqfunc((a, b)):
    model = a + b*strain
    chisq = numpy.sum(((stress - model)/err_stress)**2)
    return chisq

x0 = numpy.array([0,0])

result =  opt.minimize(chisqfunc, x0)
print result
Run Code Online (Sandbox Code Playgroud)

感谢您阅读我的问题,任何帮助将不胜感激。

干杯,威尔

编辑:我当前使用的数据集:链接到数据

python statistics minimization scipy chi-squared

5
推荐指数
1
解决办法
2万
查看次数

可以避免范围最小重新计算吗

目标是在一定范围的输入值上最小化函数。性能很重要。不幸的是,该ranges::min()算法一遍又一遍地重新计算实时最优的输出。

看起来该算法可以缓存与最佳值相对应的输出值,或者我错过了什么?

在这个例子中,为什么f(x=0)需要调用n次呢?

#include <ranges>
#include <algorithm>
#include <stdio.h>
using namespace std;

int main()
{
    auto f=[](int x){
        printf("calling f(x=%d)\n", x);
        return x*x;
    };
    auto rg = views::iota(0,4);
    int x1 = ranges::min(rg, {}, f);
}
Run Code Online (Sandbox Code Playgroud)

它输出:

调用 f(x=0)
调用 f(x=1)
调用 f(x=0)
调用 f(x=2)
调用 f(x=0)
调用 f(x=3)

有没有ranges::min()更优化的调用方式?

c++ min minimization c++20 std-ranges

5
推荐指数
1
解决办法
98
查看次数