function [x fval exitflag] = Problem
% Start- und Randwerte für Federsteifigkeiten
x0 = [50;    50;   50;   50;   50];
lb = [ 0;     0;    0;    0;    0];
ub = [100;  100;  100;  100;  100];

% Beispiel für Messwerte (Eigenfrequenzen)
global A B C D E

A = 40;
B = 20;
C = 10;
D = 40;
E = 5;

%% Start with the default options
options = optimset;
%% Modify options setting
options = optimset('Algorithm','active-set');
options = optimset(options,'Display', 'iter');
options = optimset(options,'MaxFunEvals', 500);
options = optimset(options,'PlotFcns', { @optimplotx @optimplotfval});
options = optimset(options,'TolFun', 0.00001);
options = optimset(options,'TolX', 0.000001);
options = optimset(options,'MaxIter', 1000);
     
[x,fval,exitflag]=fmincon(@myobj,x0,[],[],[],[],lb,ub,...
                                  [],options)
%---------------------------------------------------------

function f = myobj(x)

disp(x')
disp('Dieser x-Vektor muss irgendwie in den Arbeitsspeicher von dort in eine Textdatei...')
pause(5); % Zum schnellen Rechnen die Pause entfernen. Soll nur beim Nachvollziehen helfen

% Hier wird mein FEM-Programm aufgerufen, welches mit der zuvor erzeugten
% Textdatei neue Eigenfrequenzen U, V, W, X, Y berechnen kann
 
% Die mittels ABAQUS berechneten Eigenfrequenzen werden dem Vektor x
% zugewiesen, um die Zielfunktion zu bestimmen. In diesem Beispiel geht es nur
% um eine Minimierung der durch den Optimierer erzeugten Parameter von den
% oben  vorgegebenen Messwerten

U = x(1);
V = x(2);
W = x(3);
X = x(4);
Y = x(5);

global A B C D E

% Zielfunktion (für kleine prozentuale Abweichung)
f = abs((A-U)/A) + abs((B-V)/B) + abs((C-W)/C)+ abs((D-X)/D) + abs((E-Y)/E); 

%----------------------------


