Mathematica에서 "블랙 박스"함수의 수치 최적화를 시도하고 있습니다. 개략적으로는 다음과 같이 진행한다 :Mathematica : 블랙 박스 함수의 수치 최적화시 평가 순서
빗 [X, Y, Z는이 유사하게 정의된다NMinimize[{comb[x,y,z], x > 0}, {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];
];
하지만, I는 시도 최소화 함수의 모든 즉시 제공 할 것 comb [x, y, z]를 수치로 나타내면 PrintMaximum을 x, y, z에 대한 기호 값으로 평가하려고합니다. Print [x, y, z]도 기호 적으로 평가되므로 쉽게 검증됩니다. 따라서 Findmaximum이 실패합니다 (FindMaximum :: nrnum : 함수 값이 실수가 아닙니다). 따라서 최소화가 실패합니다.
빗의 하위 기능이 숫자 값으로 평가되도록 평가 순서를 수정하려면 어떻게해야합니까?
최근 'NMinimize'의 심볼 사전 처리로 인해 다른 문제가 (다른 스레드보다) 해결되었습니다 (http://stackoverflow.com/questions/6971536/nminimize-eats-all-memory- 불필요한 상징적 인 작업/6975501 # 6975501) by Daniel Lichtblau. –
감사합니다. 확인해 보겠습니다. 나는 또한 Mathematica 8에서이 문제가 발생하지 않는다는 것을 발견했다. –