2021-11-10非规划线性(1)

目录

一、非线性规划模型

二、非线性规划函数

三、线性不等式约束

四、线性不等式和等式约束

五、带有非线性约束的求最值:

六、非线性约束


一、非线性规划模型

matlab中非线性规划的数学模型写成一下形式:

å¨è¿éæå¥å¾çæè¿°

二、非线性规划函数

fmincon函数用于寻找约束非线性多变量函数的最小值。

语法格式为:

 x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

注释:(对比模型和语法来看)

1.从 x0 开始,尝试在满足线性不等式 A*x ≤ b 的情况下寻找 fun 中所述的函数的最小值点 x。x0 可以是标量、向量或矩阵。

2.在满足线性等式 Aeq*x = beq 以及不等式 A*x ≤ b 的情况下最小化 fun。如果不存在不等式,则设置 A = [] 和 b = []。

3.对 x 中的设计变量定义一组下界和上界,使解始终在 lb ≤ x ≤ ub 范围内。如果不存在等式,请设置 Aeq = [] 和 beq = []。如果 x(i) 无下界,请设置 lb(i) = -Inf,如果 x(i) 无上界,请设置 ub(i) = Inf。

4.使用 options 所指定的优化选项执行最小化。使用 optimoptions 可设置这些选项。如果没有非线性不等式或等式约束,请设置 nonlcon = []。

参数的含义?

b 和 beq 是向量,A 和 Aeq 是矩阵,c(x) 和 ceq(x) 是返回向量的函数,f(x) 是返回标量的函数。f(x)、c(x) 和 ceq(x) 可以是非线性函数。x、lb 和 ub 可以作为向量或矩阵传递。

以下结合实例:

三、线性不等式约束

目标函数:

fun =   (x)100*(x(2)-x(1)^2)^2+(1-x(1))^2

约束条件:

从[-1,2]为起点求最小值,约束方程

x(1)+2x(2)<=1

matlab代码:

运行:

四、线性不等式和等式约束

 å¨è¿éæå¥å¾çæè¿°

matlab代码:

运行:

五、带有非线性约束的求最值:

目标函数:

 min f (x) = x1^2 + x2^2 + x3^2 + 8

约束条件:

x1^2 − x2 + x3 ^2 ≥ 0
x1 + x2^2 + x3 ^3 ≤ 20
− x1 − x2^2 + 2 = 0
x2 + 2x3^2 = 3x1
x1,x2 , x3 ≥ 0
matlab代码:

运行后:

 目标函数为最小化函数,fun是一个函数,fun接受向量或数组x,并返回实数标量f,即在x处计算的目标函数值。

非线性约束条件,nonlcon是一个函数,接受向量或数组x,并返回两个数组c(x)和ceq(x)。

六、非线性约束

在边界约束下求目标函数在圆内最小的点

目标函数:

fun =   (x)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的圆内寻找

通过以上几个条件

得到匿名函数:

 fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;

~

lb = [0,0.2];
ub = [0.5,0.8];

~
function [c,ceq] = circle(x)
c = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2;
ceq = [];

~

因为没有线性约束,所以:

A = [];
b = [];
Aeq = [];
beq = [];
综上,整理如下:

运行后:

 

七、收获

【这次内容从上午就一直在研究,可惜怪本人太菜……】

掌握的部分:

1.了解非线性规划的模型,以及他的语法格式。

2.知道了如何创建匿名函数,和怎样能在创建函数的情况下把代码运行下来。

3.知道3种非线性规划的解决方法

没有掌握的部分

1.options=optimset('largescale','off')的含义。

2.因为创建了匿名函数,身为小白运行不出来,经过了重重阻碍,终于知道怎么运行出来了,那么想对函数创建有更深的了解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值