Mathematica: Порядок оценки во время численной оптимизации функций черного ящика

Я пытаюсь для выполнения численной оптимизации функции «черного ящика» в системе Mathematica. Схематично это выглядит так:

NMinimize[{comb[x,y,z], x > 0}, {x,y,z}]

где 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];
];

Однако все функции минимизации, которые я пробовал, похоже, не сразу предоставляют comb [x, y, z] с числовыми значениями, и в итоге он пытается оценить FindMaximum с символьными значениями для x, y, z (что легко проверить, поскольку Print [x, y, z] также вычисляется символически). Таким образом, Findmaximum не выполняется (FindMaximum :: nrnum: значение функции blah blah не является действительным числом), и поэтому минимизация не выполняется.

Как мне исправить порядок оценки, чтобы подфункции comb вычислялись числовыми values?

6
задан Szabolcs 9 August 2011 в 08:06
поделиться