相关疑难解决方法(0)

Mathematica:黑盒函数数值优化过程中的评估顺序

我试图在Mathematica中对"黑匣子"功能进行数值优化.原理图如下:

NMinimize[{comb[x,y,z], x > 0}, {x,y,z}]
Run Code Online (Sandbox Code Playgroud)

其中comb [x,y,z]的定义与此类似:

comb[x_,y_,z_] := Module[{},
  Print[x,y,z];
  M = FindMaximum[SkewNormal[a,x,y,z], {a,x}] // First;
  val = f[x,y,z,M];
  Return[val];
];
Run Code Online (Sandbox Code Playgroud)

但是,我尝试过的所有最小化函数似乎都没有立即为comb [x,y,z]提供数值,并且它最终试图用x,y,z的符号值来计算FindMaximum(这很容易验证)因为Print [x,y,z]也象征性地评估).因此Findmaximum失败(FindMaximum :: nrnum:函数值blah blah不是实数),因此最小化失败.

如何修复评估顺序,以便使用数值评估梳子的子功能?

optimization wolfram-mathematica black-box operator-precedence

6
推荐指数
2
解决办法
2076
查看次数