MATLAB 中的约束最小化
Constrained minimization in MATLAB
我想解决一个约束最小化问题,我正在寻求有关如何构建代码的帮助。
我知道 fmincon
是我应该通过使用参数 @mycon
来使用的,但我正在努力使它适应我的情况。任何建议将不胜感激。
这些是我的文件(a
和 b
是预定义参数):
f1.m
function [y1, y2, y3]=f1(x1, x2, a)
...
end
f2.m
function w1=f2(x1, x2, y2, y3, b)
...
end
我要编码的问题:
min y1
w.r.t x1
, x2
such that y1<=w1
您可以按如下方式使用 fmincon
:
x = fmincon(@(x) f1(x(1), x(2), a), [x1_start x2_start], [], [], [], [], [], [], @(x) mycon(x(1), x(2), a, b));
x1 = x(1)
x2 = x(2)
mycon
定义为:
% C <= 0 and Ceq == 0
function [C, Ceq] = mycon(x1, x2, a, b)
[y1, y2, y3] = f1(x1, x2, a);
C = y1 - f2(x1, x2, y2, y3, b);
Ceq = [];
end
和x1_start
和x2_start
Matlab使用的迭代求解器中x1
和x2
的起始值。
请查看 matlab 文档和示例以获取更多信息。
我想解决一个约束最小化问题,我正在寻求有关如何构建代码的帮助。
我知道 fmincon
是我应该通过使用参数 @mycon
来使用的,但我正在努力使它适应我的情况。任何建议将不胜感激。
这些是我的文件(a
和 b
是预定义参数):
f1.m
function [y1, y2, y3]=f1(x1, x2, a) ... end
f2.m
function w1=f2(x1, x2, y2, y3, b) ... end
我要编码的问题:
min
y1
w.r.tx1
,x2
such thaty1<=w1
您可以按如下方式使用 fmincon
:
x = fmincon(@(x) f1(x(1), x(2), a), [x1_start x2_start], [], [], [], [], [], [], @(x) mycon(x(1), x(2), a, b));
x1 = x(1)
x2 = x(2)
mycon
定义为:
% C <= 0 and Ceq == 0
function [C, Ceq] = mycon(x1, x2, a, b)
[y1, y2, y3] = f1(x1, x2, a);
C = y1 - f2(x1, x2, y2, y3, b);
Ceq = [];
end
和x1_start
和x2_start
Matlab使用的迭代求解器中x1
和x2
的起始值。
请查看 matlab 文档和示例以获取更多信息。