Tôi đang cố gắng thực hiện tối ưu hóa số của chức năng "hộp đen" trong Mathematica. Sơ đồ nó đi như thế này:Mathematica: Thứ tự đánh giá trong khi tối ưu hóa số chức năng hộp đen
NMinimize[{comb[x,y,z], x > 0}, {x,y,z}]
nơi lược [x, y, z] được định nghĩa tương tự như thế này:
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];
];
Tuy nhiên, tất cả các chức năng giảm thiểu Tôi đã cố gắng dường như không ngay lập tức cung cấp chải [x, y, z] với các giá trị số, và nó kết thúc cố gắng đánh giá FindMaximum với các giá trị ký hiệu cho x, y, z (dễ dàng xác minh vì In [x, y, z] cũng đánh giá biểu tượng). Do đó Findmaximum không thành công (FindMaximum :: nrnum: Giá trị hàm blah blah không phải là số thực) và do đó việc giảm thiểu thất bại.
Làm cách nào để khắc phục thứ tự đánh giá sao cho các hàm con của lược được đánh giá bằng các giá trị số?
Một vấn đề khác (tinh tế hơn) vì xử lý trước biểu tượng trong 'NMinimize' gần đây đã được giải quyết trong [thread khác] (http://stackoverflow.com/questions/6971536/nminimize-eats-all-memory- bc-of-unn-symbolic-work/6975501 # 6975501) bởi Daniel Lichtblau. –
Hmm ok cảm ơn tôi sẽ kiểm tra xem. Tôi cũng chỉ nhận thấy rằng vấn đề này không xảy ra trong Mathematica 8 (tôi đã chạy 7 trước đó). –