Optimize with handling an objective function as "Black Box"

6 ビュー (過去 30 日間)
Ilias Seferlis
Ilias Seferlis 2018 年 2 月 1 日
コメント済み: Ilias Seferlis 2018 年 2 月 1 日
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.

採用された回答

Sean de Wolski
Sean de Wolski 2018 年 2 月 1 日
編集済み: Sean de Wolski 2018 年 2 月 1 日
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 件のコメント
Ilias Seferlis
Ilias Seferlis 2018 年 2 月 1 日
that works perfectly! thanks a lot!
Ilias Seferlis
Ilias Seferlis 2018 年 2 月 1 日
Is there any way to make it work with "fmincon"? I can't make it to work as explained above.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSurrogate Optimization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by