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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB 线性规划实例应用

發(fā)布時(shí)間:2025/6/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB 线性规划实例应用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 線性規(guī)劃
  • 線性規(guī)劃函數(shù)
  • 功能:求解線性規(guī)劃問題
  • 語法
    • x = linprog(f,A,b):求解問題 min fx,約束條件為 Ax <= b
    • x = linprog(f,A,b,Aeq,beq):求解上面的問題,但增加等式約束,即 Aeqx = beq,若沒有不等式存在,則令 A= []、b = []
    • x = linprog(f,A,b,Aeq,beq,lb,ub):定義設(shè)計(jì)變量 x 的下屆 lb 和 上屆 ub,使得 x 始終在該范圍內(nèi),若沒有等式約束,令 Aeq = []、beq = []
    • x = linprog(f,A,b,Aeq,beq,lb,ub,x0):設(shè)置初值為 x0。該選項(xiàng)只適用于中型問題,默認(rèn)大型算法將忽略初值
    • x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用 options 指定的優(yōu)化參數(shù)進(jìn)行最小化
    • [x,fval] = linprog(...):返回解 x 處的目標(biāo)函數(shù)值 fval
    • [x,lambda,exitflag] = linprog(...):返回 exitflag 值,描述函數(shù)計(jì)算的退出條件
    • [x,lambda,exitflag,output] = linprog(...):返回包含優(yōu)化信息的輸出變量 output
    • [x,fval,lambda,exitflag,output] = linprog(...):將解 x 處的拉格朗日乘子返回到 lambda 參數(shù)中
  • 變量及算法:lambda 參數(shù)介紹
      • lambda 是解 x 處的拉格朗日乘子,它的屬性如下
      • lambda.lower:lambda 的下屆
      • lambda.upper:lambda 的上屆
      • lambda.ineqlin:lambda 的線性不等式
      • lambda.eqlin:lambda 的線性等式
      • 大型優(yōu)化算法:采用 LIPSOL 法,該法在進(jìn)行迭代計(jì)算之前首先要進(jìn)行一系列的預(yù)處理
      • 中型優(yōu)化算法:linprog 函數(shù)使用的是投影法,就像 quadprog 函數(shù)的算法一樣,linprog 函數(shù)使用的是一種活動(dòng)集方法,是線性規(guī)劃中單純形法的變種,他通過求解另一個(gè)線性規(guī)劃問題來找到初始可行解
    • 線性規(guī)劃問題的應(yīng)用
  • 生產(chǎn)決策問題
    • 某廠生產(chǎn)甲、乙兩種產(chǎn)品,已知制成一噸產(chǎn)品甲需用資源A 3 噸,資源B 4 $m^3$,制成每噸產(chǎn)品乙需用資源A 2 噸,資源B 6 $m^3$,資源C 7 個(gè)單位。若每噸產(chǎn)品和乙的經(jīng)濟(jì)價(jià)值分別為 7 萬元和 5 萬元,3 種資源的限制量分別為 80 噸、220 $m^3$ 和 230 個(gè)單位,試分析應(yīng)生產(chǎn)這兩種產(chǎn)品各多少噸才能使創(chuàng)造的總經(jīng)濟(jì)價(jià)值最高?
    • 這里可以令生產(chǎn)產(chǎn)品甲的數(shù)量為 $x_1$,生產(chǎn)產(chǎn)品乙的數(shù)量為 $x_2$。根據(jù)題意,代碼設(shè)置如下: clc clear f = [-7;-5]; A = [3 24 60 7]; b = [80;220;230]; lb = zeros(2,1);

      然后調(diào)用 linprog 函數(shù):

      [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)

      最優(yōu)化結(jié)果如下:

  • ?

    ?

      • 由上可知,生產(chǎn)甲種產(chǎn)品 4.7619 噸、乙種產(chǎn)品 32.8571 噸可使創(chuàng)造的總經(jīng)濟(jì)價(jià)值最高,最高經(jīng)濟(jì)價(jià)值為 197.6190 萬元。exitflag = 1 表示過程正常收斂于解 x 處。

    2.工作人員計(jì)劃安排問題

      • ?某晝夜服務(wù)的公共交通系統(tǒng)每天各時(shí)間段(每 4 小時(shí)為一個(gè)時(shí)間段)所需的值班人數(shù)如表所示,這些值班人員在某一時(shí)段開始上班后要連續(xù)工作 8 小時(shí)(包括輪流用餐時(shí)間),請(qǐng)問該公共交通系統(tǒng)至少需要多少名工作人員才能滿足值班的需要?

      • 這里可設(shè) $x_i$ 為第 i 個(gè)時(shí)段開始上班的人員數(shù) clc clear f = [1;1;1;1;1;1]; A = [-1 0 0 0 0 -1-1 -1 0 0 0 00 -1 -1 0 0 00 0 -1 -1 0 00 0 0 -1 -1 00 0 0 0 -1 -1]; b = [-50;-30;-70;-60;-40;-20]; lb = zeros(6,1);
      • 然后調(diào)用 linprog 函數(shù) [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
      • 最優(yōu)化結(jié)果如下:

    ?      可見只要 6 個(gè)時(shí)段分別安排 26 人、25 人、45 人、26 人、14 人和 24 人就可以滿足值班的需要,共計(jì) 160 人,并且計(jì)算結(jié)果 exitflag = 1 是收斂的

    ?3. 投資問題

      • 某單位有一批資金用于 4 個(gè)工程項(xiàng)目的投資,用于各工程項(xiàng)目時(shí)所得的凈收益(投入資金的百分比)如表所示

      • 由于某種原因,決定用于項(xiàng)目 A 的投資不大于其他各投資之和,而用于項(xiàng)目 B 和 C 的投資要大于項(xiàng)目 D 的投資,試確定使該單位收益最大的投資分配方案。
      • 這里可以用 $x_1、x_2、x_3 和 x_4$ 分別代表用于項(xiàng)目 A、B、C 和 D 的投資百分?jǐn)?shù),由于各項(xiàng)目的投資百分?jǐn)?shù)之和必須等于 100%,所以 $x_1+x_2+x_3+x_4 = 1$,代碼設(shè)置如下: f = [-0.18;-0.1;-0.09;-0.12]; A = [1 -1 -1 -10 -1 -1 1]; b = [0;0]; Aeq = [1 1 1 1]; beq = [1]; lb = zeros(4,1);
      • 調(diào)用函數(shù): [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb)
      • 結(jié)果如下:

    說明 A、B、C、D 投入資金的百分比分別為 50%、25%、0%、25% 時(shí),該單位收益最大

    4. 工件加工任務(wù)分配問題

      • ?某車間有兩臺(tái)機(jī)床甲和乙,可用于加工 3 種工件。假定這兩臺(tái)機(jī)床的可用臺(tái)時(shí)數(shù)分別為 600 和 900,3 種工件的數(shù)量分別為 400、600 和 500,且已知用兩臺(tái)不同機(jī)床加工單位數(shù)量的不同工件所需的臺(tái)時(shí)數(shù)和加工費(fèi)用(如表所示),問怎樣分配機(jī)床的加工任務(wù),才能既滿足加工工件的需求,又使總加工費(fèi)用最低?

      • 這里可設(shè)在甲機(jī)床上加工工件1、2 和 3 的數(shù)量分別為 $x_1、x_2、x_3$,在乙機(jī)床上加工工件1、2 和 3 的數(shù)量分別為 $x_4、x_5、x_6$,根據(jù) 3 種工種的數(shù)量限制,則有:$x_1+x_4 = 400(對(duì)工件 1) ,x_2+x_5 = 600(對(duì)工件 2),x_3+x_6=500(對(duì)工件 3)$,根據(jù)題意: clc clear f = [13;9;10;11;12;8]; A = [0.6 1.2 1.1 0 0 00 0 0 0.4 1.2 1.0]; b = [600;900]; Aeq = [1 0 0 1 0 00 1 0 0 1 00 0 1 0 0 1]; beq = [400 600 500]; lb = zeros(6,1);

        然后調(diào)用 linprog 函數(shù):

        [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb)

        結(jié)果如下:

    在甲機(jī)床上加工 500 個(gè)工件 2,在乙機(jī)床上加工 400 個(gè)工件 1、加工 100 個(gè)工件 2、加工 500 個(gè)工件 3,可在滿足條件的情況下使總加工費(fèi)用最小,最小費(fèi)用為 14100 元。

    ?

    ?5. 廠址選擇問題

      • ?A、B、C 三地,每地都出產(chǎn)一定數(shù)量的產(chǎn)品,也消耗一定數(shù)量的原料(如表所示),已知制成每噸產(chǎn)品需 3 噸原料,各地之間的距離為:A-B,150km;A-C,100km,B-C,200km。假定每萬噸原料運(yùn)輸 1lm 的運(yùn)價(jià)是 5000 元,每萬噸產(chǎn)品運(yùn)輸 1lm 的運(yùn)價(jià)是 6000 元。由于地區(qū)條件的差異,在不同地點(diǎn)設(shè)廠的生產(chǎn)費(fèi)用也不同。問究竟在哪些地方設(shè)廠,規(guī)模多大,才能使總費(fèi)用最小?另外,由于其他條件限制,在 B 處建廠的規(guī)模(生產(chǎn)的產(chǎn)品數(shù)量)不能超過 6 萬噸

      • 這里可令 $x_{ij}$ 為由 i 地運(yùn)到 j 地的原料數(shù)量(萬噸),$y_{ij}$ 為由 i 地運(yùn)往 j 地的產(chǎn)品數(shù)量(萬噸),i,j = 1,2,3(分別對(duì)應(yīng)A、B、C三地),根據(jù)題意: clc clear f = [75;75;50;50;100;100;150;240;210;120;160;220]; A = [1 -1 1 -1 0 0 3 3 0 0 0 0-1 1 0 0 1 -1 0 0 3 3 0 00 0 -1 1 -1 1 0 0 0 0 3 30 0 0 0 0 0 0 0 1 1 0 0]; b = [21;17;22;6]; Aeq = [0 0 0 0 0 0 1 0 1 0 1 00 0 0 0 0 0 0 1 0 1 0 1]; beq = [6;12]; lb = zeros(12,1); [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb);

        可見要使總費(fèi)用最小,A、B、C 三地的建廠規(guī)模分別為 6 萬噸、5.667 萬噸和 6.333 萬噸,最小總費(fèi)用為 2.9733e+03 萬元

    ?6. 確定職工編制問題

      • 某工廠每日 8小時(shí)的產(chǎn)量不低于 1800 件。為了進(jìn)行質(zhì)量控制,計(jì)劃聘請(qǐng)兩個(gè)不同水平的檢驗(yàn)員。一級(jí)檢驗(yàn)員的速度為 25件/小時(shí),正確率 98%,計(jì)時(shí)工資 4元/小時(shí),二級(jí)檢驗(yàn)員的速度為 15件/小時(shí),正確率 95%,計(jì)時(shí)工資 3元/小時(shí),檢驗(yàn)員每錯(cuò)一次,工廠要損失 2 元。現(xiàn)有可供廠方聘請(qǐng)的檢驗(yàn)員人數(shù)為一級(jí) 7人和二級(jí) 8人。為使總檢驗(yàn)費(fèi)用最省,該工廠應(yīng)聘請(qǐng)一級(jí)、二級(jí)檢驗(yàn)員各多少名?
      • 可設(shè)需要一級(jí)和二級(jí)檢驗(yàn)員的人數(shù)分別為 $x_1$ 和 $x_2$ 名,根據(jù)題意: clc clear f = [40;36]; A = [1 00 1-5 -3]; b = [7;8;-45]; lb = zeros(2,1); [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);

    可見,招聘一級(jí)檢驗(yàn)員 7名,二級(jí)檢驗(yàn)員 3名可使總檢驗(yàn)費(fèi)用最少,約為400.00元

    7. 生產(chǎn)計(jì)劃的最優(yōu)化問題

      • 某工廠生產(chǎn) A 和 B 兩種產(chǎn)品,它們需要經(jīng)過 3 種設(shè)備的加工,其加工如表所示,設(shè)備一、二和三每天可使用的時(shí)間分別不超過 11、9 和 12小時(shí)。產(chǎn)品 A 和 B 的利潤(rùn)隨市場(chǎng)的需求有所波動(dòng),如果預(yù)測(cè)未來某個(gè)時(shí)期內(nèi) A 和 B 的利潤(rùn)分別為 5000元/噸和 3000元/噸,問在那個(gè)時(shí)期內(nèi),每天應(yīng)生產(chǎn)A、B各多少噸,才能使工廠獲利最大?

      • 這里可設(shè)每天應(yīng)安排生產(chǎn) A 和 B 分別為 $x_1$ 和 $x_2$ 噸,根據(jù)題意: clc clear f = [-5;-3]; A = [4 35 46 3]; b = [11;9;12]; lb = zeros(2,1); [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)

        每天生產(chǎn) A 產(chǎn)品 1.80噸、B產(chǎn)品 0 噸可使工廠獲得最大利益 9000元/噸。

    ?

        

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/NikkiNikita/p/9464886.html

    總結(jié)

    以上是生活随笔為你收集整理的MATLAB 线性规划实例应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。