Optimize with handling an objective function as "Black Box"

Is there a way to optimize a costrained objective function without really knowing its expression? For example, say we have :
% main.m %
% starting point and costraints all previously defined
[Xopt,Fval] = fmincon(@obj,x0,A,B,Aeq,Beq,lb,ub,[],options);
% End of main.m %
% Objective Function obj.m %
function [F] = obj(X)
% Write Data into File for exe
fopen('X.dat','w');
dlmwrite('X.dat',X);
fclose('all');
% Run Black Box exe
system('BB.exe') % where the expression of the objective function is(unknown to us)
% Read Results from exe
F = importdata('Fval.dat')
% End of obj.m %
The above example does not work,but gives the general idea The code is also attached (Run main.m) with a very simple objective function.

 Réponse acceptée

Sean de Wolski
Sean de Wolski le 1 Fév 2018
Modifié(e) : Sean de Wolski le 1 Fév 2018
The pattern you have there looks like it should work and the idea is fine.
Though I would probably recommend patternsearch over fmincon since you likely cannot guarantee that BB.exe returns smooth continuous values.
Also note that F has to be a scalar. So maybe at the end:
F = norm(F)

2 commentaires

that works perfectly! thanks a lot!
Is there any way to make it work with "fmincon"? I can't make it to work as explained above.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by