最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

優(yōu)化(Optimization)

2022-09-19 23:53 作者:永遠(yuǎn)的修伊  | 我要投稿

單變量?jī)?yōu)化

?fminbnd - 查找單變量函數(shù)在定區(qū)間上的最小值

? ? fminbnd 是一個(gè)一維最小值,用于求由以下條件指定的問(wèn)題的最小值:

? ? x = fminbnd(fun,x1,x2)

? ? x = fminbnd(fun,x1,x2,options)

? ? x = fminbnd(problem)

? ? [x,fval] = fminbnd(___)

? ? [x,fval,exitflag] = fminbnd(___)

? ? [x,fval,exitflag,output] = fminbnd(___)

? ? 輸入?yún)?shù)

? ? ? ? fun - 要計(jì)算最小值的函數(shù)

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? x1 - 下界

? ? ? ? ? ? 有限實(shí)數(shù)標(biāo)量

? ? ? ? x2 - 上界

? ? ? ? ? ? 有限實(shí)數(shù)標(biāo)量

? ? ? ? options - 優(yōu)化選項(xiàng)

? ? ? ? ? ? 結(jié)構(gòu)體,例如 optimset 返回的結(jié)構(gòu)體

? ? ? ? problem - 問(wèn)題結(jié)構(gòu)體

? ? ? ? ? ? 結(jié)構(gòu)體

? ? 輸出參數(shù)

? ? ? ? x - 解

? ? ? ? ? ? 實(shí)數(shù)標(biāo)量

? ? ? ? fval - 解處的目標(biāo)函數(shù)值

? ? ? ? ? ? 實(shí)數(shù)

? ? ? ? exitflag - fminbnd 停止的原因

? ? ? ? ? ? 整數(shù)

? ? ? ? output - 有關(guān)優(yōu)化過(guò)程的信息

? ? ? ? ? ? 結(jié)構(gòu)體


eg1.簡(jiǎn)單線搜索

fcn = @sin ;

x1 = 0;

x2 = 2*pi;

[x,fval,exitflag,output] = fminbnd(fcn,x1,x2)

x =

? ? 4.7124

fval =

? ?-1.0000

exitflag =

? ? ?1

output =?

? 包含以下字段的 struct:

? ? iterations: 8

? ? funcCount: 9

? ? algorithm: 'golden section search, parabolic interpolation'

? ??message: '優(yōu)化已終止:? 當(dāng)前的 x 滿足使用 1.000000e-04 的 OPTIONS.TolX 的終止條件?'

eg2.復(fù)雜函數(shù)線搜索



x1 = 1;

x2 = 3;

x = fminbnd(@fcn01,x1,x2)

x =

? ? 2.0061

這里的x即為所求的極值點(diǎn)。

function f = fcn01(x)

k = -10:10;

f = sum((k+1).^2.*cos(k.* x).*exp(-k.^2./2));

eg3.附加可變參數(shù)

objfcn = @(x,a) sin(x-a) ;

a = 9/7;

x1 = 1;

x2 = 2*pi;

[x,fval] = fminbnd(@(x)objfcn(x,a),x1,x2)

x =

? ? 5.9981

fval =

? ?-1.0000


optimset 為四個(gè) MATLAB? 優(yōu)化求解器設(shè)置選項(xiàng):fminbnd、fminsearch、fzero 和 lsqnonneg。

使用optimset進(jìn)行優(yōu)化

MaxFunEvals - 函數(shù)計(jì)算的最大次數(shù),對(duì)于fminbnd默認(rèn)500

Display - 顯示級(jí)別? 其中'iter' - 在每次迭代時(shí)顯示輸出(不適用于 lsqnonneg)

對(duì)可選的選項(xiàng)優(yōu)化

objfcn = @(x,a) sin(x-a) ;

a = 9/7;

x1 = 1;

x2 = 2*pi;

options = optimset("Display","iter","MaxFunEvals",20);

[x,fval] = fminbnd(@(x)objfcn(x,a),x1,x2,options)


Func-count? ? ?x? ? ? ? ? f(x)? ? ? ? ?Procedure

? ? 1? ? ? ? ? 3.018? ? ?0.986989? ? ? ? initial

? ? 2? ? ? ? 4.26519? ? ? 0.16141? ? ? ? golden

? ? 3? ? ? ? 5.03599? ? -0.571791? ? ? ? golden

? ? 4? ? ? ? 5.51238? ? -0.884337? ? ? ? golden

? ? 5? ? ? ? ?5.8068? ? -0.981757? ? ? ? golden

? ? 6? ? ? ? 6.05174? ? -0.998562? ? ? ? parabolic

? ? 7? ? ? ? 5.99981? ? -0.999999? ? ? ? parabolic

? ? 8? ? ? ? 5.99804? ? ? ? ? ?-1? ? ? ? parabolic

? ? 9? ? ? ? ?5.9981? ? ? ? ? ?-1? ? ? ? parabolic

? ?10? ? ? ? 5.99814? ? ? ? ? ?-1? ? ? ? parabolic

優(yōu)化已終止:

?當(dāng)前的 x 滿足使用 1.000000e-04 的 OPTIONS.TolX 的終止條件

x =

? ? 5.9981

fval =

? ?-1.0000

fminbnd計(jì)算的函數(shù)要是連續(xù)的,只能給出局部解

當(dāng)解在區(qū)間邊界上時(shí),fminbnd可能表現(xiàn)出慢收斂

fminbnd算法是基于黃金分割搜索和拋物線插值方法

無(wú)約束優(yōu)化

在matlab里支持fminuc、fminsearch

fminunc - 求無(wú)約束多變量函數(shù)的最小值

? ? 非線性規(guī)劃求解器。

? ? x = fminunc(fun,x0)

? ? x = fminunc(fun,x0,options)

? ? x = fminunc(problem)

? ? [x,fval] = fminunc(___)

? ? [x,fval,exitflag,output] = fminunc(___)

? ? [x,fval,exitflag,output,grad,hessian] = fminunc(___)

? ? 輸入?yún)?shù)

? ? ? ? fun - 要計(jì)算最小值的函數(shù)

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? x0 - 初始點(diǎn)

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? options - 優(yōu)化選項(xiàng)

? ? ? ? ? ? optimoptions 的輸出 | 結(jié)構(gòu)體,例如 optimset 返回的結(jié)構(gòu)體

? ? ? ? problem - 問(wèn)題結(jié)構(gòu)體

? ? ? ? ? ? 結(jié)構(gòu)體

? ? 輸出參數(shù)

? ? ? ? x - 解

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? fval - 解處的目標(biāo)函數(shù)值

? ? ? ? ? ? 實(shí)數(shù)

? ? ? ? exitflag - fminunc 停止的原因

? ? ? ? ? ? 整數(shù)

? ? ? ? output - 有關(guān)優(yōu)化過(guò)程的信息

? ? ? ? ? ? 結(jié)構(gòu)體

? ? ? ? grad - 解處的梯度

? ? ? ? ? ? 實(shí)數(shù)向量

? ? ? ? hessian - 逼近 Hessian 矩陣

? ? ? ? ? ? 實(shí)矩陣

fminsearch - 使用無(wú)導(dǎo)數(shù)法計(jì)算無(wú)約束的多變量函數(shù)的最小值

? ? 非線性規(guī)劃求解器。搜索由以下公式指定的問(wèn)題的最小值:

? ? x = fminsearch(fun,x0)

? ? x = fminsearch(fun,x0,options)

? ? x = fminsearch(problem)

? ? [x,fval] = fminsearch(___)

? ? [x,fval,exitflag] = fminsearch(___)

? ? [x,fval,exitflag,output] = fminsearch(___)

? ? 輸入?yún)?shù)

? ? ? ? fun - 要計(jì)算最小值的函數(shù)

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? x0 - 初始點(diǎn)

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? options - 優(yōu)化選項(xiàng)

? ? ? ? ? ? 結(jié)構(gòu)體,例如 optimset 返回的結(jié)構(gòu)體

? ? ? ? problem - 問(wèn)題結(jié)構(gòu)體

? ? ? ? ? ? 結(jié)構(gòu)體

? ? 輸出參數(shù)

? ? ? ? x - 解

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? fval - 解處的目標(biāo)函數(shù)值

? ? ? ? ? ? 實(shí)數(shù)

? ? ? ? exitflag - fminsearch 停止的原因

? ? ? ? ? ? 整數(shù)

? ? ? ? output - 有關(guān)優(yōu)化過(guò)程的信息

? ? ? ? ? ? 結(jié)構(gòu)體

eg1.Simple Function

myfun = @(x) x(1)^2+x(2)^2 ;

x0 = [-1;2];

options = optimset("MaxFunEvals",100,"Display","iter") ;

[x,fval,exitflag,output] = fminunc(myfun,x0,options)


Iteration? Func-count? ? ? ?f(x)? ? ? ? Step-size? ? ? ?optimality

? ? ?0? ? ? ? ? ?3? ? ? ? ? ? ? ? 5? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4

? ? ?1? ? ? ? ? ?6? ? ? ? ? ? ?1.25? ? ? ? ? ?0.25? ? ? ? ? ? ? 2??

? ? ?2? ? ? ? ? ?9? ? ? ? 4.996e-16? ? ? ? ? ? ? 1? ? ? ?5.96e-08??

Local minimum found.

Optimization completed because the size of the gradient is less than

the value of the optimality tolerance.

<stopping criteria details>

x =

? ?1.0e-07 *

? ? 0.2235

? ? 0.0000

fval =

? ?4.9960e-16

exitflag =

? ? ?1

output =?

? 包含以下字段的 struct:

? ? ? ?iterations: 2

? ? ? ? funcCount: 9

? ? ? ? ?stepsize: 1.1180

? ? ?lssteplength: 1

? ? firstorderopt: 5.9605e-08

? ? ? ? algorithm: 'quasi-newton'

? ? ? ??message: 'Local minimum found.

Optimization completed because the size of the gradient is less than?the value of the optimality tolerance.??<stopping criteria details>??Optimization completed: The first-order optimality measure, 1.192093e-08, is less ?than options.OptimalityTolerance = 1.000000e-06.'

eg2 Rosenbrock函數(shù)

在數(shù)學(xué)最優(yōu)化中,Rosenbrock函數(shù)是一個(gè)用來(lái)測(cè)試最優(yōu)化算法性能的非凸函數(shù),由Howard Harry Rosenbrock在1960年提出??。也稱為Rosenbrock山谷Rosenbrock香蕉函數(shù),也簡(jiǎn)稱為香蕉函數(shù)。(摘自百度百科)

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

x0 = [0;0];

options = optimset("MaxFunEvals",500,"Display","iter","TolX",1e-14);

[x,fval,flag] = fminunc(myfun,x0,options)


Iteration? Func-count? ? ? ?f(x)? ? ? ? Step-size? ? ? ?optimality

? ? ?0? ? ? ? ? ?3? ? ? ? ? ? ? ? 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2

? ? ?1? ? ? ? ? 12? ? ? ? ?0.771192? ? ? 0.0817341? ? ? ? ? ?5.34??

? ? ?2? ? ? ? ? 15? ? ? ? ?0.610658? ? ? ? ? ? ? 1? ? ? ? ? ?6.73??

? ? ?3? ? ? ? ? 18? ? ? ? ?0.522451? ? ? ? ? ? ? 1? ? ? ? ? ?7.11??

? ? ?4? ? ? ? ? 24? ? ? ? ?0.261629? ? ? ? ?0.7075? ? ? ? ? ?1.88??

? ? ?5? ? ? ? ? 30? ? ? ? ?0.248996? ? ? ? ? ? 0.5? ? ? ? ? ?3.44??

? ? ?6? ? ? ? ? 33? ? ? ? ?0.207486? ? ? ? ? ? ? 1? ? ? ? ? ?2.94??

? ? ?7? ? ? ? ? 36? ? ? ? ?0.125351? ? ? ? ? ? ? 1? ? ? ? ? ? 1.5??

? ? ?8? ? ? ? ? 39? ? ? ? 0.0893498? ? ? ? ? ? ? 1? ? ? ? ? ?3.93??

? ? ?9? ? ? ? ? 42? ? ? ? 0.0308666? ? ? ? ? ? ? 1? ? ? ? ? ?1.23??

? ? 10? ? ? ? ? 48? ? ? ? 0.0200762? ? ? ?0.322023? ? ? ? ? ?1.95??

? ? 11? ? ? ? ? 51? ? ? ? 0.0138484? ? ? ? ? ? ? 1? ? ? ? ? ?1.57??

? ? 12? ? ? ? ? 54? ? ? ? 0.0044155? ? ? ? ? ? ? 1? ? ? ? ? 0.303??

? ? 13? ? ? ? ? 60? ? ? ?0.00268685? ? ? ? ? ? 0.5? ? ? ? ? ?1.14??

? ? 14? ? ? ? ? 63? ? ? 0.000276528? ? ? ? ? ? ? 1? ? ? ? ? ?0.28??

? ? 15? ? ? ? ? 66? ? ? ?4.2104e-05? ? ? ? ? ? ? 1? ? ? ? ? 0.122??

? ? 16? ? ? ? ? 69? ? ? 1.37272e-06? ? ? ? ? ? ? 1? ? ? ? 0.00796??

? ? 17? ? ? ? ? 72? ? ? 7.48542e-07? ? ? ? ? ? ? 1? ? ? ? ?0.0303??

? ? 18? ? ? ? ? 75? ? ? 3.34562e-09? ? ? ? ? ? ? 1? ? ? ? 0.00221??

? ? 19? ? ? ? ? 78? ? ? 6.71604e-11? ? ? ? ? ? ? 1? ? ? ?7.22e-05??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? First-order?

?Iteration? Func-count? ? ? ?f(x)? ? ? ? Step-size? ? ? ?optimality

? ? 20? ? ? ? ? 81? ? ? 1.94742e-11? ? ? ? ? ? ? 1? ? ? ?1.06e-06??

Local minimum found.

Optimization completed because the size of the gradient is less than

the value of the optimality tolerance.

<stopping criteria details>

x =

? ? 1.0000

? ? 1.0000

fval =

? ?1.9474e-11

flag =

? ? ?1

fminunc針對(duì)的是可以微分的連續(xù)函數(shù),使用的算法Quasi-Newton 、Trust Region Algorithms,它可以提供Hessian矩陣。


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

x0 = [0;0];

options = optimset("PlotFcns","optimplotfval","MaxFunEvals",500,"Display","iter","TolX",1e-14,"TolFun",1e-14);

[x,fval,flag] = fminsearch(myfun,x0,options)

Iteration? ?Func-count? ? ?min f(x)? ? ? ? ?Procedure

? ? ?0? ? ? ? ? ? 1? ? ? ? ? ? ? ? 1? ? ? ? ?

? ? ?1? ? ? ? ? ? 3? ? ? ? ? ?0.9995? ? ? ? ?initial simplex

? ? ?2? ? ? ? ? ? 4? ? ? ? ? ?0.9995? ? ? ? ?reflect

? ? ?3? ? ? ? ? ? 6? ? ? ? ?0.998515? ? ? ? ?expand

? ? ?4? ? ? ? ? ? 8? ? ? ? ?0.998001? ? ? ? ?expand

? ? ?5? ? ? ? ? ?10? ? ? ? ?0.995798? ? ? ? ?expand

? ? ?6? ? ? ? ? ?12? ? ? ? ?0.993647? ? ? ? ?expand

? ? ?7? ? ? ? ? ?14? ? ? ? ?0.988291? ? ? ? ?expand

? ? ?8? ? ? ? ? ?16? ? ? ? ?0.981289? ? ? ? ?expand

? ? ?9? ? ? ? ? ?18? ? ? ? ?0.967873? ? ? ? ?expand

? ? 10? ? ? ? ? ?20? ? ? ? ?0.947913? ? ? ? ?expand

? ? 11? ? ? ? ? ?22? ? ? ? ?0.918174? ? ? ? ?expand

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

? ?148? ? ? ? ? 279? ? ? 4.53053e-28? ? ? ? ?contract inside

? ?149? ? ? ? ? 281? ? ? 4.53053e-28? ? ? ? ?contract outside

? ?150? ? ? ? ? 283? ? ? 2.92914e-28? ? ? ? ?contract inside

? ?151? ? ? ? ? 285? ? ? 1.90115e-28? ? ? ? ?contract inside

? ?152? ? ? ? ? 287? ? ? 4.44227e-29? ? ? ? ?contract inside

? ?153? ? ? ? ? 288? ? ? 4.44227e-29? ? ? ? ?reflect

? ?154? ? ? ? ? 290? ? ? 4.44227e-29? ? ? ? ?contract inside

? ?155? ? ? ? ? 292? ? ? 1.59744e-29? ? ? ? ?contract inside

? ?156? ? ? ? ? 294? ? ? 5.71924e-30? ? ? ? ?contract inside

? ?157? ? ? ? ? 296? ? ? 5.71924e-30? ? ? ? ?contract inside

優(yōu)化已終止:

?當(dāng)前的 x 滿足使用 1.000000e-14 的 OPTIONS.TolX 的終止條件,

F(X) 滿足使用 1.000000e-14 的 OPTIONS.TolFun 的收斂條件

x =

? ? 1.0000

? ? 1.0000

fval =

? ?5.7192e-30

flag =

? ? ?1

從函數(shù)使用來(lái)看,fminsearch可用的參數(shù)設(shè)置遠(yuǎn)多于fminunc,所以有時(shí)會(huì)取得更好的效果,但它需要的計(jì)算和迭代過(guò)程遠(yuǎn)超過(guò)fminunc。

fminsearch僅對(duì)實(shí)數(shù)取最小值,及向量或數(shù)組x只能由實(shí)數(shù)組成,且f(x)必須只返回實(shí)數(shù),當(dāng)x具有復(fù)數(shù)值時(shí),將x拆分為實(shí)部和虛部。

fminsearch使用lagarias等單純形搜索法,可解決不可微分問(wèn)題或者具有不連續(xù)問(wèn)題。

約束優(yōu)化問(wèn)題


fmincon - 尋找約束非線性多變量函數(shù)的最小值

? ? 非線性規(guī)劃求解器

? ? x = fmincon(fun,x0,A,b)

? ? x = fmincon(fun,x0,A,b,Aeq,beq)

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

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

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

? ? x = fmincon(problem)

? ? [x,fval] = fmincon(___)

? ? [x,fval,exitflag,output] = fmincon(___)

? ? [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(___)

? ? 輸入?yún)?shù)

? ? ? ? fun - 要計(jì)算最小值的函數(shù)

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? x0 - 初始點(diǎn)

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? A - 線性不等式約束

? ? ? ? ? ? 實(shí)矩陣

? ? ? ? b - 線性不等式約束

? ? ? ? ? ? 實(shí)數(shù)向量

? ? ? ? Aeq - 線性等式約束

? ? ? ? ? ? 實(shí)矩陣

? ? ? ? beq - 線性等式約束

? ? ? ? ? ? 實(shí)數(shù)向量

? ? ? ? lb - 下界

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? ub - 上界

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? nonlcon - 非線性約束

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? options - 優(yōu)化選項(xiàng)

? ? ? ? ? ? optimoptions 的輸出 | 結(jié)構(gòu)體,例如 optimset 返回的結(jié)構(gòu)體

? ? ? ? problem - 問(wèn)題結(jié)構(gòu)體

? ? ? ? ? ? 結(jié)構(gòu)體

? ? 輸出參數(shù)

? ? ? ? x - 解

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? fval - 解處的目標(biāo)函數(shù)值

? ? ? ? ? ? 實(shí)數(shù)

? ? ? ? exitflag - fmincon 停止的原因

? ? ? ? ? ? 整數(shù)

? ? ? ? output - 有關(guān)優(yōu)化過(guò)程的信息

? ? ? ? ? ? 結(jié)構(gòu)體

? ? ? ? lambda - 解處的拉格朗日乘數(shù)

? ? ? ? ? ? 結(jié)構(gòu)體

? ? ? ? grad - 解處的梯度

? ? ? ? ? ? 實(shí)數(shù)向量

? ? ? ? hessian - 逼近 Hessian 矩陣

? ? ? ? ? ? 實(shí)矩陣


?fseminf - 求解半無(wú)限約束多變量非線性函數(shù)的最小值

? ? fseminf 是非線性規(guī)劃求解器,用于求由下式指定的問(wèn)題的最小值

? ? x = fseminf(fun,x0,ntheta,seminfcon)

? ? x = fseminf(fun,x0,ntheta,seminfcon,A,b)

? ? x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)

? ? x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)

? ? x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)

? ? x = fseminf(problem)

? ? [x,fval] = fseminf(___)

? ? [x,fval,exitflag,output] = fseminf(___)

? ? [x,fval,exitflag,output,lambda] = fseminf(___)

? ? 輸入?yún)?shù)

? ? ? ? fun - 要計(jì)算最小值的函數(shù)

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? x0 - 初始點(diǎn)

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? ntheta - 半無(wú)限約束的數(shù)量

? ? ? ? ? ? 正整數(shù)

? ? ? ? seminfcon - 計(jì)算非線性約束和半無(wú)限約束的函數(shù)

? ? ? ? ? ? 函數(shù)句柄 | 函數(shù)名稱

? ? ? ? A - 線性不等式約束

? ? ? ? ? ? 實(shí)矩陣

? ? ? ? b - 線性不等式約束

? ? ? ? ? ? 實(shí)數(shù)向量

? ? ? ? Aeq - 線性等式約束

? ? ? ? ? ? 實(shí)矩陣

? ? ? ? beq - 線性等式約束

? ? ? ? ? ? 實(shí)數(shù)向量

? ? ? ? lb - 下界

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? ub - 上界

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? options - 優(yōu)化選項(xiàng)

? ? ? ? ? ? optimoptions 的輸出 | 結(jié)構(gòu)體,例如 optimset 返回的結(jié)構(gòu)體

? ? ? ? problem - 問(wèn)題結(jié)構(gòu)體

? ? ? ? ? ? 結(jié)構(gòu)體

? ? 輸出參數(shù)

? ? ? ? x - 解

? ? ? ? ? ? 實(shí)數(shù)向量 | 實(shí)數(shù)數(shù)組

? ? ? ? fval - 解處的目標(biāo)函數(shù)值

? ? ? ? ? ? 實(shí)數(shù)

? ? ? ? exitflag - fseminf 停止的原因

? ? ? ? ? ? 整數(shù)

? ? ? ? output - 有關(guān)優(yōu)化過(guò)程的信息

? ? ? ? ? ? 結(jié)構(gòu)體

? ? ? ? lambda - 解處的拉格朗日乘數(shù)

? ? ? ? ? ? 結(jié)構(gòu)體

eg1.

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

A = [1,2];

b = 1;

x0 = [0;0];

[x,fval,flag] = fmincon(myfun,x0,A,b)


Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in?

feasible directions, to within the value of the optimality tolerance,

and constraints are satisfied to within the value of the constraint tolerance.

<stopping criteria details>

x =

? ? 0.5022

? ? 0.2489

fval =

? ? 0.2489

flag =

? ? ?1

eg2.線性約束

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

A = [1,2];

b = 1;

Aeq = [1,1];

beq = 1;

x0 = [0;0];

[x,fval,flag] = fmincon(myfun,x0,A,b,Aeq,beq)


Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in?

feasible directions, to within the value of the optimality tolerance,

and constraints are satisfied to within the value of the constraint tolerance.

<stopping criteria details>

x =

? ? 1.0000

? ?-0.0000

fval =

? 100.0000

flag =

? ? ?1


eg3、無(wú)線性約束,箱集

myfun = @(x) 1+x(1)/(1+x(2))-3*x(1)*x(2)+x(2)*(1+x(1));

lb = [0;0];

ub = [1;2];

x0 = [0;0];

[x,fval,flag] = fmincon(myfun,x0,[],[],[],[],lb,ub)


Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in?

feasible directions, to within the value of the optimality tolerance,

and constraints are satisfied to within the value of the constraint tolerance.

<stopping criteria details>

x =

? ? 1.0000

? ? 2.0000

fval =

? ?-0.6667

flag =

? ? ?1

eg4、全約束

myfun = @(x) x(1)^2+x(2)^2-2*x(1)*x(2)+x(3)^2+x(4)^2;

A? = [1 1 1 0];

b = 6;

Aeq=[1 1 1 0;1 5 0 1];

beq = [3;6];

lb = zeros(4,1);

ub = [];

x0 = zeros(4,1);

[x,fval,flag] = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,@fcons01)

function [c,ceq] = fcons01(x)

c = x(1)^2+x(2)^2+x(3)^2-5;

ceq = x(2)^2+x(3)^2+x(4)^2-4;


x =

? ? 0.6086

? ? 0.8837

? ? 1.5076

? ? 0.9727

fval =

? ? 3.2947

flag =

? ? ?1


最后感謝西南科技大學(xué)龍強(qiáng)老師的分享


優(yōu)化(Optimization)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
富蕴县| 芦山县| 县级市| 九龙坡区| 辽宁省| 临漳县| 青海省| 米泉市| 凌海市| 绥化市| 苏尼特右旗| 五台县| 泸定县| 铁力市| 马山县| 始兴县| 塔城市| 灵武市| 闻喜县| 随州市| 江安县| 房山区| 合作市| 遂昌县| 莆田市| 张家港市| 慈溪市| 措美县| 泽州县| 新竹县| 慈利县| 昌邑市| 荔浦县| 黄山市| 保康县| 龙江县| 江川县| 治县。| 北流市| 城固县| 错那县|