この問題の制約は次のとおりであることは簡単にわかります。
k1 * rate + k2 >= -397.95
と
k1 * rate + k2 <= 776.37
k1 の値が大きいほど、この方程式の結果の分散が大きくなるため、目的は、これらの制約に従って k1 を最大化することです (-k1 を最小化するのと同じことです)。
これを単純な線形プログラムとして実行できるようになりました。
height = size(rate,1);
c = [-1;0];
A = [rate',ones(height,1); rate',ones(height,1)];
b = [-397.95*ones(height,1); 766.37*ones(height,1)];
lb = [0;-Inf];
ub = [Inf; Inf];
ctype = [repmat("L",height,1); repmat("U",height,1)];
k = glpk (c,A,b,lb,ub,ctype)
k1 = k(1);
k2 = k(2);
編集:レートが行ベクトルであることを見逃しました。適当に転載させていただきました