日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB优化问题

發布時間:2024/4/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB优化问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.無約束的優化問題

fminbnd fminsearch fminunc %求解不連續的函數極值問題效果不佳 fminimax 以及 fmincon % 解決有約束的問題,被稱作萬能函數

2.有約束的優化問題

(1)線性規劃

一般形式

例:

標準形式為:

?matlab求解

針對上邊的標準形式,matlab的求解函數為linprog 調用格式為

注意:當函數后面的參數缺失時,可以直接略去,如?

但缺失中間的參數,需要用空數組符號[]補位。如

例:求解線性規劃問題

解:

(1)化為標準形式

(2)寫成矩陣形式?

?其中

C=[-2,1,-1]; A=[1,1,1;-2,0,1]; b=[1;-2];

代碼:

C=[-2,1,-1]; A=[1,1,1;-2,0,1]; b=[1;-2]; X=linprog(C,A,b,[],[],zeros(3,1))

(2)混合數學規劃問題

當線性規劃模型中存在整數變量,則稱為整數規劃模型或混合規劃模型。

在整數變量中,一種重要的整數變量是0-1變量,它在處理定性的量中有重要應用。

線性整數規劃求解的matlab函數為 X=intlinprog(c,intcon,A,b,A1,b1,L,U);

函數的參數與linprog相同,只是在c后面添加參量intcon,用來指示哪些變量是整數變量。如intcon=[2,3]表示第2,3個變量是整變量。

例:計算

f=[8,1];intcon=[2]; A=[-1 -2-4 -12 1]; b=[14;-33;20]; L=[0;0]; x=intlinprog(f,intcon,A,b,[],[],L)

?01整數規劃

例:某企業擬在8個居民區A1,A2,…,A8建若干個門店,門店的備選地址有B1,B2,…,B6。各備選地址能覆蓋的居民區如下表:

備選地址

B1

B2

B3

B4

B5

B6

覆蓋小區

A1,A5,

A7

A1,A2,A5,A8

A1,A3,

A5

A2,A4,

A8

A3,A6

A4,A6,

A8

如何選址,可以用最少的門店覆蓋所有居民區

解:

(1)決策變量:決策是門店選址,應使用0-1變量?,xi=1,即選擇Bi,i=1,2,…,6

(2)目標:總門店數最少,即 min ? x1+x2+…+x6

(3)約束條件:

  • 覆蓋A1: ? x1+x2+x3>=1
  • 其他類似:x2+x4>=1
  • x3+x5>=1
  • x4+x6>=1
  • x1+x2+x3+x5>=1
  • x5+x6>=1
  • x1>=1
  • x2+x4+x6>=1
  • 代碼:
    ?

    c=ones(6,1); intcon=1:6; A=[1 1 1 0 0 00 1 0 1 0 00 0 1 0 1 00 0 0 1 0 11 1 1 0 1 00 0 0 0 1 11 0 0 0 0 00 1 0 1 0 1]; b=ones(8,1); x=intlinprog(c,intcon,-A,-b,[],[],zeros(6,1), ones(6,1))

    (3)二次規劃

    當目標函數是二次函數時,數學規劃稱為二次規劃 二次規劃的標準形式如下(目標函數為二次,約束條件為線性)

    x = quadprog(H,f) x = quadprog(H,f,A,b) x = quadprog(H,f,A,b,Aeq,beq) x = quadprog(H,f,A,b,Aeq,beq,lb,ub) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) 求解非線性規劃問題:min 1/2*x’*H*x, A*x ≤ b, Aeq*x = beq;lb ≤ x ≤ ub;

    注意:H 為二次型系數矩陣

    ?例:解下列二次規劃

    H = [1 -1; -1 2]; f = [-2; -6]; A = [1 1; -1 2; 2 1]; b = [2; 2; 3]; lb = zeros(2,1); opts = optimoptions('quadprog','Algorithm','active-set'); [x,fval] = quadprog(H,f,A,b,[],[],lb,[],[],opts)

    ?(4)非線性規劃

    Matlab中的非線性規劃為以下規范形式:

    函數形式:[x,f] = fmincon(fun,x0,A,b,Aeq,beq, L, U, nonlcon)

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

    fun寫成如下的M-函數形式 (objfun.m) :

    function ?f = objfun (x)

    ? ? f = f(x);

    end

    非線性約束條件寫成如下的M-函數形式

    function [c,ceq]=nonlcon(x)

    ? ? c = c(x);

    ? ? ceq=ceq(x);

    end

    [x, f]=fmincon (...)同時返回解x處的函數值

    例:

    解:

    第一步,化為標準形式,這里約束條件無線性函數,也無等式約束

    ?第二步,在 editor窗口寫目標函數,保存

    function f = objfun(x) f = -x(1)^2*x(2)*x(3)^2/(2*x(1)^3*x(3)^2+3*x(1)^2*x(2)^2+2*x(2)^2*x(3)^3+x(1)^3*x(2)^2*x(3)^2); end

    第三步,在 editor窗口寫非線性約束函數,保存

    function [c, ceq] = nonlincon(x) c=[-x(1)^2-x(2)^2-x(3)^2+1; x(1)^2+x(2)^2+x(3)^2-4]; ceq = [ ]; end

    第四步,在commond window求解

    options = optimset('Algorithm', 'interior-point', 'Display', 'off'); %設置算法[x,fval] = fmincon(@objfun, [1,1,1],[],[],[],[],[0,0,0],[],@nonlincon, options)

    ?

    總結

    以上是生活随笔為你收集整理的MATLAB优化问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。