Optimize with handling an objective function as "Black Box"

7 visualizaciones (últimos 30 días)
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.

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 1 de Feb. de 2018
Editada: Sean de Wolski el 1 de Feb. de 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 comentarios
Ilias Seferlis
Ilias Seferlis el 1 de Feb. de 2018
that works perfectly! thanks a lot!
Ilias Seferlis
Ilias Seferlis el 1 de Feb. de 2018
Is there any way to make it work with "fmincon"? I can't make it to work as explained above.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Surrogate Optimization en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by