多目的最適化におけるトレードオフ比を考慮した妥協解の計算



clear; close all;


x = -2:0.1:2;
f1 = @(x) exp(-x)+1.4*exp(-x.^2);
f2 = @(x) exp(x)+1.4*exp(-x.^2);
plot(f1(x),f2(x),'o');
hold on;

x1 = 0:0.1:7;
y1 = interp1(f2(x),f1(x),x1,'spline');
plot(x1,y1,'-');
xlim([0,7]);
ylim([0,7]);

syms f1_symbol(t) f2_symbol(t)
f1_symbol(t) = @(t) exp(-t)+1.4*exp(-t.^2);
f2_symbol(t) = @(t) exp(t)+1.4*exp(-t.^2);
df1 = diff(f1_symbol);
df2 = diff(f2_symbol);
t12 = -df2/df1;
t_val = 0.5;
t12_val = eval(subs(t12,'t',t_val));
t21_val = 1/t12_val;
T = [-1 t12_val;
    t21_val -1];

D = (t12 - 1).^2;
ts = -2:0.01:2;
figure;
plot(ts,subs(D,t,ts),'-');
ylim([0 10]);
title('D=(t_{12}-1)^2')
hold on;

xA1 = fminsearch(D, -2);
xA2 = fminsearch(D, -0.1);
xA3 = fminsearch(D, 2);

f1a = f1(xA2);
f2a = f2(xA2);

f1i = 0;
f2i = 0;

w1 = 1/(f1a-f1i);
w2 = 1/(f2a-f2i);
C = max(w1*(f1(x)-f1a),w2*(f2(x)-f2a));
xopt = x(find(C==min(C)));
f1opt = f1(xopt);
f2opt = f2(xopt);
t_val = xopt;
t12_val = eval(subs(t12,'t',t_val));
t21_val = 1/t12_val;
T = [-1 t12_val;
    t21_val -1]

big;