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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

线性规划Matlab程序(小白向)

發布時間:2023/12/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性规划Matlab程序(小白向) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,線性規劃標準形式

? 所以對于目標函數為max f(x),我們將其轉化為求min -f(x),在結尾輸出-f(x)即為所求;?

? 對于A*x>=b,我們將其轉化為-A*x<=-b。

??

二,問題求解

1,基于求解器

接下來對同種題用二-1,二-2分別求解,并做函數引入和介紹:

利用求解器求解的程序為:

??

2,基于問題求解

這里要用到優化問題的求解函數OptimizationProblem:

一個OptimizationProblem?對象說明一個優化問題,包括優化的變量、約束、目標函數以及目標是最大化還是最小化。使用?solve?求解完整的問題。

使用?optimproblem?創建一個?OptimizationProblem?對象:

prob = optimproblem('ObjectiveSense', 'max')

ObjectiveSense指示最小化或最大化,指定為?'minimize'?或?'maximize',該屬性影響?solve?的運行。可以使用短名稱?'min'?表示?'minimize'?或?'max'?表示?'maximize'。

Objective目標函數,可以在創建問題時加入目標函數,也可以在此后通過圓點表示法將目標函數加入問題中:

prob = optimproblem('Objective',5*brownies + 2*cookies) % or prob = optimproblem; prob.Objective = 5*brownies + 2*cookies

OptimizationConstraint優化約束,可以在創建問題時加入約束,或之后通過圓點表示法將約束加入問題中:

constrs = struct('TrayArea',10*brownies + 20*cookies <= traysize,...'TrayWeight',12*brownies + 18*cookies <= maxweight); prob = optimproblem('Constraints',constrs) % or prob.Constraints.TrayArea = 10*brownies + 20*cookies <= traysize prob.Constraints.TrayWeight = 12*brownies + 18*cookies <= maxweight

對例題(1.1)基于問題的求解方法:

clc, clear prob = optimproblem('ObjectiveSense', 'max') c = [4;3]; b = [10;8;7]; a = [2,1;1,1;0,1]; lb = zeros(2,1); x = optimvar('x',2,'LowerBound',0); %定義兩個變量x1,x2,LowerBound下限為0,等價于題目中最后一個約束 prob.Objective = c'*x; %目標函數 prob.Constraints.con = a*x<=b; %約束 [sol, fval, flage, out] = solve(prob) %用solve求解,fval為結果 sol.x %顯示決策變量x1,x2的值

基于問題求解可以用來解決大多的線性規劃問題,而且他的約束,目標函數等表達的形式有很多,在此不再一一列舉,都是基于基礎的語法,大家可以多看代碼,有自己的風格就好,其實花哨的格式都是一個目的。

三,可轉化為線性規劃的問題

clc, clear c = [1:4]'; b = [-2,-1,-1/2]'; a = [1,-1,-1,1;1,-1,1,-3;1,-1,-2,3]; prob = optimproblem; %默認求max u = optimvar('u',4,'LowerBound',0); v = optimvar('v',4,'LowerBound',0); prob.Objective = sum(c'*(u+v)); prob.Constraints.con = a*(u-v)<=b; [sol,fval,flag,out]=solve(prob) x = sol.u - sol.v

? 博客首發哈哈,博主也是暑假正式接觸數學建模擔任編程手,小白一名。想記錄一下所學避免忘記,也希望能幫到大家。有問題歡迎評論區交流呀~

總結

以上是生活随笔為你收集整理的线性规划Matlab程序(小白向)的全部內容,希望文章能夠幫你解決所遇到的問題。

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