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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...