Я пытаюсь выполнить численную оптимизацию функции «черного ящика» в Mathematica.Схематически это выглядит так:
NMinimize[{comb[x,y,z], x > 0}, {x,y,z}]
где гребень [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];
];
Однако все функции минимизации, которые я пробовал, кажутсяне сразу предоставлять гребню [x, y, z] числовые значения, и в итоге он пытается вычислить FindMaximum с символическими значениями для x, y, z (что легко проверить, поскольку Print [x, y, z] такжеоценивает символически).Таким образом, Findmaximum терпит неудачу (FindMaximum :: nrnum: значение функции бла-бла не является действительным числом), и поэтому минимизация завершается неудачей.
Как исправить порядок вычисления, чтобы подфункции гребенки былиоценивается с помощью числовых значений?