matlab第三天打卡

非线性规划

此部分针对线性规划内容提出

非线性规划的模型

在这里插入图片描述

非线性规划函数的函数

x = fmincon(fun,x0,A,b) 从 x0 开始,尝试在满足线性不等式 Ax ≤ b 的情况下寻找 fun 中所述的函数的最小值点 x。x0 可以是标量、向量或矩阵。
x = fmincon(fun,x0,A,b,Aeq,beq) 在满足线性等式 Aeq
x = beq 以及不等式 A*x ≤ b 的情况下最小化 fun。如果不存在不等式,则设置 A = [] 和 b = []。
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 对 x 中的设计变量定义一组下界和上界,使解始终在 lb ≤ x ≤ ub 范围内。如果不存在等式,请设置 Aeq = [] 和 beq = []。如果 x(i) 无下界,请设置 lb(i) = -Inf,如果 x(i) 无上界,请设置 ub(i) = Inf。
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 使用 options 所指定的优化选项执行最小化。使用 optimoptions 可设置这些选项。如果没有非线性不等式或等式约束,请设置 nonlcon = []。

约束条件为线性的

例子一:

目标函数:min fun=x(1)^2 + x(2) ^2
约束条件: x(1)+x(2)-2=0

matlab代码如下:

fun=@(x)x(1)^2+x(2)^2;%目标函数
x0=[0,0];%初始值
A=[];
b=[];%%不等式约束
aeq=[1,1];
beq=[2];等式约束
[x,y]=fmincon(fun,x0,A,b,aeq,beq)

运行结果:
在这里插入图片描述
可以知道最优值取[x(1),x(2)]=[1,1]
目标函数最小值为2.

本题也可根据增广拉格朗日乘子法的解析法求得(有机会更新非线性约束问题的求解方法:外罚函数,障碍函数法,增广拉格朗日乘子法)

约束条件为非线性的

例子二

目标函数:fun = 100*(x(2)-x(1)2)2+(1-x(1))^2

约束条件:0 ≤ x (1) ≤ 0.5
0.2≤x(2)≤0.8
同时在圆心为(1/3,1/3),半径为1/3的圆内寻找

代码如下:

%编写一个函数
function [c,ceq] = circle(x)
c = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2;
ceq = [];
%完整代码如下
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
lb = [0,0.2];%下限
ub = [0.5,0.8];%上限
A = [];
b = [];%不等式约束
Aeq = [];
beq = [];%等式约束
x0 = [1/4,1/4];%初始值
nonlcon = @circle;%约束函数
[x,y] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

由此可知当约束条件中出现函数约束时,可以利用nonlcon这一参数。运行结果川川博客中有,这里就不展示了。

实际应用

目标函数:min fun=x(1)^2 + x(2) ^2
约束条件: x(1)+x(2)=2
在圆心为(0,0),半径为2的园内寻找

首先编写一段关于约束函数的M文件:

function [c,ceq] = circle(x)
c=x(1)^2+x(2)^2 -4;
ceq=0;
%完整代码如下
fun=@(x)x(1)^2+x(2)^2;%目标函数
x0=[0,0];%初始值
A=[];
b=[];%%不等式约束
aeq=[1,1];
beq=2;%等式约束
lb=[0;0];
ub=[inf;inf];
nonlcon = @circle;
[x,y]=fmincon(fun,x0,A,b,aeq,beq,lb,ub,nonlcon);

(matlab可能跑不出结果,因为这是我自己临时找的一个函数,随便加的约束条件,其目的为了熟悉当约束条件为非线性时的操作)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

与森先生

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值