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 日

0 投票

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 件)

カテゴリ

ヘルプ センター および File Exchange で Problem-Based Optimization Setup についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by