非线性规划
什么是非线性规划
非线性规划,指约束条件中有非线性约束。
非线性约束,即约束的不等式中含有高次幂项,如
matlab标准型,只能求解最小值问题,且约束条件要是小于等于的不等式
matlab函数求解非线性规划
[x, value] = fmincon(@f, x0, A, b, Aeq, beq, lb, ub, @nonlfun, option);
%f为外部目标函数,@f为取函数句柄,类似取地址。 此外,偷懒的话可以用匿名函数,如f=@(x)x^2;
%x0为初始值,是一个向量,非线性规划必须有初始值,该函数只能求局部最优解。
%A, b, Aeq, beq, lb, ub为约束
%option为不同求解方法,共五种。可以用它们都算一遍会有不同结果
%@nonlfun为定义在外部的非线性部分约束,分为等式约束和不等式约束 function [c,ceq] = nonlfun1(x) c为不等式约束,ceq为等式约束
关于option的问题详见:寻找约束非线性多变量函数的最小值 - MATLAB fmincon - MathWorks 中国
Ex:
s.t
%设目标函数: min f(x)=x(1)^2+x(2)^2+x(3)^2+8
x0 = [0;0;0];%初值0 0 0
A = [-1;1;-1];
b=[0];
[x, value] = fmincon(@f, x0, A, b, [], [], [], [], @nonlfun);
%目标函数
function y = f(x)
y = x(1)^2+x(2)^2+x(3)^2+8
end
%约束函数
function [c,ceq] = nonlfun(x)
c = x(1)+x(2)^2+x(3)^3-20;
ceq = -x(1)-x(2)^2+2;
end
本文作者:cxy1114blog
本文链接:https://www.cnblogs.com/cxy1114blog/p/18459112
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步