当前位置:   article > 正文

MATLAB优化函数fmincon的简介

fmincon

1 需要解决的问题

能效优化问题:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
优化目标为找到最小化J对应的u、v。
时间为从零点开始的24小时,每隔20分钟取一次值,不同时间段的u、v不同,最后得到的u、v为72维的向量。

2 fmincon函数

fmincon解决的是形如下面问题的最优化问题:
在这里插入图片描述
在使用fmincon求解最优值的过程中,可以有以下所示的多种形式:

x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,be)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
  • 1
  • 2
  • 3
  • 4

其中,fun为目标函数,x0为初始值,其他的都为约束条件
具体选择哪种形式,取决于问题的约束是什么类型的约束。
例如:如果约束只为一个线性不等式

在这里插入图片描述
min f(x)
x(1) + 2x(2) <= 1

将约束转化为矩阵表示,就为[1,2]*x <= 1
根据fmincon,令A=[1,2],b=1。

fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
x0 = [-1,2];
A = [1,2];
b = 1;
x = fmincon(fun,x0,A,b)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

题中的各个条件

u为72维向量,v为72维向量,变量x=[u;v]为144维向量。
在这里插入图片描述
为边界条件,可设置lb,ub

lb = zeros(144,1)
ub = [1800*ones(72,1);3*ones(72,1)]

  • 1
  • 2
  • 3

在这里插入图片描述
线性不等书约束条件,可设置A,b

A = -ts*[ones(1,72),zeros(1,72)]
b = -10800

  • 1
  • 2
  • 3

在这里插入图片描述
非线性约束,可设置

function [c,ceq] = nonfun(x)
x = x(1:72)
v = x(73:end)
c = [-u./(3.6*v
	u./(3.6*v-177]
ceq = []
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

最终选择一个初值x0调用

fun = @cost  %定义的J函数
nonlcon = @nonfun
x = fmincon(fun,x0,A,b,[],[],lb,ub,nonlcon)
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/350633
推荐阅读
相关标签
  

闽ICP备14008679号