约束非线性规划工具-fmincon(matlab)的使用

更新时间:2023-05-26 04:30:54 阅读: 评论:0

孤独的说说-我会记得你

约束非线性规划工具-fmincon(matlab)的使用
2023年5月26日发(作者:古墓派)

约束⾮线性规划⼯具-fmincon(matlab)的使⽤

motivation:

记录⼀些fmincon使⽤⽅法和应对⼀些问题的解决⽅法

1.简介:

在MATLAB中,使⽤函数

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

即可调⽤fmincon函数进⾏约束⾮线性规划,其中fun为⽬标函数:

例如:

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

x0为初始值:

x0 = [0.5,0]

A和b为线性不等式约束条件的参数,Aeq和beq为线性不等式约束条件的参数(没有使⽤过,形式如下):

A = [1,2];

b = 1; % A*x <= b

Aeq = [2,1];

beq = 1; % Aeq*x <= b

lb为x0中每⼀维的下限,ub位每⼀维的上限,形式如下:

%表⽰x0第⼀维的区间是[0,1],第⼆维的区间是[0,2]

lb = [0,0];

ub = [1,2];

nonlcon(Nonlinear constraints)为⾮线性不等式约束,使⽤⽅法如下:

例如:

x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)

创建约束函数的.m⽂件

function [c,ceq] = mycon(x)

c = [(),...,()] % Compute nonlinear inequalities at x.

ceq = [(),..,()] % Compute nonlinear equalities at x.

option为设置fmincon的参数,定义option的形式为:

option = optimoptions(@fmincon,'参数名1', 参数值1, '参数名2', 参数值2)

例如:

option = optimoptions(@fmincon,'Algorithm','sqp')

参数的设置

除去option外,传⼊fmincon的其他参数形式简单,调⽤起来⾮常简单,此处不再赘述。以下介绍option中的⼏个参数。

'Algorithm':

该参数的含义是,为fmincon规划选择算法。可选算法有:

'interior - point' (默认算法)

'trust - region - reflective'

'sqp'

'sqp-legacy'(iotimoptions only)

'active - t'

其中,后三种⽅法为medium-scale算法,不能应对⼤规模的规划问题。‘trust - region - reflective’ 算法能够应对⼤规模的规划问题,但是

使⽤‘trust-region-reflective’算法需要满⾜⼀些条件。但是官⽅⽂档表⽰,⼤规模和中规模算法各有优势,不是单纯的数据量⼤⼩:

Don't let the name "large scale" mislead you; you can u a large-scale algorithm on a small problem.

Furthermore, you do not need to specify any spar matrices to u a large-scale algorithm. Choo a

medium-scale algorithm to access extra functionality, such as additional constraint types, or possibly for

better performance.

实验发现(使⽤‘interior - point’算法),当变量在500个左右,当约束公式的长度减⼩约束公式的长度减⼩的时(从70000+项削减到10000+项),规划时

间⼤⼤缩短(从170分钟缩短到11分钟),但是在进⾏长公式规划的时候,系统占⽤的cpu和内存并不⾼,所以可以考虑“将约束条件分组,多

线程进⾏规划,再组合”

官⽅⽂档推荐:

先使⽤‘interior-point’算法;(能够快速精确的解决⼤规模的问题)

在⼩规模到中规模的问题上运⾏⼀个优化,先尝试‘sqp’,再尝试‘active-t’;

合适的时候使⽤‘trust-region-reflective’,问题必须满⾜:⽬标函数包含了梯度,边界和线性约束只能存在⼀个;

When the Solver Fails

1.开启Iterative Display

options = optimoptions('solvername', 'Display','iter')

在执⾏规划之后打印出参数

Iteration Func-count f(x) Step-size First-order optimality

1 4 -0.841471 1 0.54

exitflag返回为1的条件是:

First-order optimality measure was less lityTolerance, and maximum constraint violation

was less aintTolerance.

First-order optimality measure⼩于lityTolerance,并且maximum constraint violation⼩于

aintTolerance

在实验中发现,返回的exitflag是0时(表⽰超过最⼤迭代数),⼤部分的⾮线性约束的不等式的值⼩于0,部分等于0,其实已经满⾜的条件,

但是程序仍然进⾏迭代运算,直到超过最⼤迭代数,⽽且后期每次迭代的约束⽅程的值和⽬标函数已经不发⽣变化后期每次迭代的约束⽅程的值和⽬标函数已经不发⽣变化。此时认为已经满⾜了约

束。

另⼀种情况是,exitflag为0,但是某些⾮线性约束的不等式⽅程的值⼤于0,此时没有满⾜约束。

所以exitflag = 0包含了两种情况。

可以通过观察First-order optimality measure,将OptimalityTolerance调⼤,可以将第⼀种情况分离开来。

‘Solver Takes Too Long’

未完待续

写写画画-鲜艳的反义词是什么

约束非线性规划工具-fmincon(matlab)的使用

本文发布于:2023-05-26 04:30:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/168504665418335.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:约束非线性规划工具-fmincon(matlab)的使用.doc

本文 PDF 下载地址:约束非线性规划工具-fmincon(matlab)的使用.pdf

标签:fmincon
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
  • 爆笑的笑话
    绿豆荚-三帮车视2023年3月16日发(作者:森林运动会)1幽默笑话大全爆笑经典短信幽默笑话大全爆笑1、口误伤不起呀:一次坐公交车,到某站台时,司机突然问到:有人下车么,没人我下啦!顿时车上笑做一团。2、听说你工作疯狂,难道是爱共产党,领导大家人人夸,能明白多么恨你,可否痴心改一改。(请看每句第三个字。)3、工作是苦是累,我们积极面对,干好职属分内,与同事友好相对,拿到工资问心无愧;花得自在,用得
  • 793℃幽默笑话段子
  • 780℃恋爱说说
  • 762℃五儿孝母
  • 602℃陈大惠老师
  • 410℃汤姆索亚历险记梗概
  • 405℃银行印鉴卡
  • 358℃联想思维
  • 353℃译林小学英语
  • 352℃分门别类
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|