在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
函数:[x, fval] = fmincon(FUN, X0, A, B, Aeq, Beq, LB, UB, NONLCON) 返回的x:是一个向量——在取得目标函数最小时各个xi的取值; 返回的fval:目标函数的最小值; 参数FUN:目标函数; 参数X0:向量x的初始值; 参数A:线性不等式约束的系数矩阵,若没有线性不等式约束,则A = []; 参数B:线性不等式约束右端的常数列,若没有线性不等式约束,则B = []; 参数Aeq:线性等式约束的系数矩阵,若没有等式约束,则Aeq = []; 参数Beq:线性等式约束右端的常数列,若没有等式约束,则Beq = []; 参数LB:x的下界,常遇到的x1, x2, x3 >= 0,0就是下界,可用zeros(3, 1)生成一个3行1列的向量来表示,其中向量的每个元素的值为0; 参数UB:x的上界; 参数NONLCON:用.m文件定义的非线性向量函数C(x), Ceq(x)。
------------------------------------------------------------------------------------------------------------- 求f(x)的最小值及f(x)取得最小值时x的取值: min f(x) = x1^2 + x2^2 + 8 约束条件: x1^2 - x2 >= 0 -x1 - x2^2 + 2 = 0 x1, x2 >= 0 ------------------------------------------------------------------------------------------------------------- 编写目标函数.m文件(不要写在主.m文件里)FUN.m(文件名要与函数名相同)
%写下面两行就可以了 function f = FUN(x); f = x(1)^2 + x(2)^2 + 8;
保存。 编写非线性约束向量函数.m文件(不要写在主.m文件里)NONLCON.m(文件名要与函数名相同)
%写下面3行就可以了 function [g, ceq] = NONLCON(x); g = -x(1)^2 + x(2); %非线性不等式约束 ceq = -x(1) - x(2)^2 + 2; %非线性等式约束
保存。 最后编写主体.m文件
X0 = rand(2, 1); A = []; B = []; Aeq = []; Beq = []; LB = zeros(2, 1); UB = []; [x, fval] = fmincon('FUN', X0, A, B, Aeq, Beq, LB, UB, 'NONLCON') 保存运行,得
x = 1.0000 1.0000 fval = 10
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论