c# – f(x,y)的最小化,其中x和y是整数

前端之家收集整理的这篇文章主要介绍了c# – f(x,y)的最小化,其中x和y是整数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有人有任何关于最小化函数的建议,f(x,y),其中x和y是整数.我已经研究了很多最小化和优化技术,比如BFGS和GSL中的其他技术,以及Numerical Recipes的内容.到目前为止,我已尝试实现几种不同的方案.第一种方法是通过选择最大下降方向f(x 1,f(x-1,y 1),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)
}

解决方法

你如何定义f(x,y)?最小化是一个难题,取决于函数的复杂性.

遗传算法可能是一个很好的候选者.

资源:

Genetic Algorithms in Search,Optimization,and Machine Learning

Implementing a Genetic Algorithms in C#

Simple C# GA

原文链接:https://www.f2er.com/csharp/98756.html

猜你在找的C#相关文章