如何使用Octave / MATLAB的通用优化程序



很抱歉打扰您,但我正在使用Octave的手册,但没有任何结果。

我想在一些约束下最大化一个有点复杂的函数:

该函数在

数学上与此函数相似(我写这个函数是为了简化解释(:

f(x, y, z, t( = arcsin(x/2t(/(

y + x + max (1, z/t((

Z、T 介于 0 和 1 之间,x 介于 1 和 2 之间,y 大于 1/x^2。

你能给我代码来计算 x、y、z 和 t 的数值以最大化这个函数吗?从这段代码中,我将推导出应该如何使用优化函数。

这对我有很大帮助。

谢谢

您可以使用

fmincon最小化目标函数的加性逆。 你的约束("y 大于 1/x^2"(是非线性的,所以你应该使用 fminconnonlcon参数:

% function definition (minus sign to maximize instead of minimize)
f = @(x) - asin(x(1)/(2*x(4)))/(x(2) + x(1) + max(1, x(3)/x(4)) );
lb = [1 -inf 0 0];% lower bound for [x y z t]
ub = [2 inf 1 1];% upper bound for [x y z t]
x0 = [1.5 0 0.5 0.9]; % initial vector
% minimization
x = fmincon(f,x0,[],[],[],[],lb,ub,@mycon);

其中mycon定义约束:

function [c,ceq] = mycon(x)
% y > 1/x^2
% 1/x^2 - y < 0
c = 1/x(1)^2 - x(2);
ceq = 0;
end

还可以传递选项参数来指定优化选项。

最新更新