Matlab--非线性编程求解器fmincon 实例详解

本文详细介绍了Matlab中fmincon函数的应用,该函数用于求解受约束的非线性多变量函数最小值问题。文章通过实例演示了如何设置线性和非线性约束,并展示了如何使用fmincon找到函数最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

Matlab的函数fmincon用来求最小约束非线性多变量函数,是一个非线性编程求解器,算出指定的问题的最小值

其约束分为五种,作为fmincon的输入参数,分别是

A 线性不等式约束---具体指的是实矩阵

线性不等式约束--具体指的是 实数向量

以官网给的举例--

X 1 + 2 X 2 ≤10 
3 X 1 + 4 X 2 ≤20 
5 X 1 + 6 X 2 ≤30,

可以看出,A与b要写成

A = [1,2; 3,4; 5,6]; 
b = [10; 20; 30];

Aeq 线性等式约束(实矩阵)

beq 线性等式约束(实数向量)

x1 + 2 x2 + 3 x3 = 10 
2 x1 + 4 x2 + x3 = 20

输入这些约束为:

Aeq = [1,2,3; 2,4,1]; 
beq = [10; 20];

nonlcon非线性约束

接下来是其他需要输入的参数:

x0-初始点,指定为实数向量或实数组。求解器使用元素x0的数量和大小来确定fun接受的变量的数量和大小。

自变量的上下限。

lb-下界

ub--上限

----------------------------------------------------------------------------------------------------------------------------

下面正式举例一个非线性约束的求解例子:

先写func.m函数:

fun=@(x)x(1)^2+x(2)^2+8;
x0=rand(2,1);
A=[];   
Aeq=[];
b=[];
beq=[];
lb=[0,0];
ub=[];
exitflag=1;
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,'mycon')

再写 mycon.m函数

function [c,ceq]=mycon(x)
c=-x(1)^2+x(2);  %此处不要忘记将不等式改成不等式<=0的标准形式
ceq=-x(1)-x(2)^2+2;

最后run一下func.m文件,即可得到函数的最小值的解。

可以看到函数最小值fval=10 当x1=1 ,x2=2。

注解:输出参数

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值