线性规划Matlab程序(小白向)
一,線性規(guī)劃標(biāo)準(zhǔn)形式
? 所以對(duì)于目標(biāo)函數(shù)為max f(x),我們將其轉(zhuǎn)化為求min -f(x),在結(jié)尾輸出-f(x)即為所求;?
? 對(duì)于A*x>=b,我們將其轉(zhuǎn)化為-A*x<=-b。
??
二,問(wèn)題求解
1,基于求解器
接下來(lái)對(duì)同種題用二-1,二-2分別求解,并做函數(shù)引入和介紹:
利用求解器求解的程序?yàn)?#xff1a;
??
2,基于問(wèn)題求解
這里要用到優(yōu)化問(wèn)題的求解函數(shù)OptimizationProblem:
一個(gè)OptimizationProblem?對(duì)象說(shuō)明一個(gè)優(yōu)化問(wèn)題,包括優(yōu)化的變量、約束、目標(biāo)函數(shù)以及目標(biāo)是最大化還是最小化。使用?solve?求解完整的問(wèn)題。
使用?optimproblem?創(chuàng)建一個(gè)?OptimizationProblem?對(duì)象:
prob = optimproblem('ObjectiveSense', 'max')ObjectiveSense指示最小化或最大化,指定為?'minimize'?或?'maximize',該屬性影響?solve?的運(yùn)行。可以使用短名稱?'min'?表示?'minimize'?或?'max'?表示?'maximize'。
Objective目標(biāo)函數(shù),可以在創(chuàng)建問(wèn)題時(shí)加入目標(biāo)函數(shù),也可以在此后通過(guò)圓點(diǎn)表示法將目標(biāo)函數(shù)加入問(wèn)題中:
prob = optimproblem('Objective',5*brownies + 2*cookies) % or prob = optimproblem; prob.Objective = 5*brownies + 2*cookiesOptimizationConstraint優(yōu)化約束,可以在創(chuàng)建問(wèn)題時(shí)加入約束,或之后通過(guò)圓點(diǎn)表示法將約束加入問(wèn)題中:
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對(duì)例題(1.1)基于問(wèn)題的求解方法:
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); %定義兩個(gè)變量x1,x2,LowerBound下限為0,等價(jià)于題目中最后一個(gè)約束 prob.Objective = c'*x; %目標(biāo)函數(shù) prob.Constraints.con = a*x<=b; %約束 [sol, fval, flage, out] = solve(prob) %用solve求解,fval為結(jié)果 sol.x %顯示決策變量x1,x2的值基于問(wèn)題求解可以用來(lái)解決大多的線性規(guī)劃問(wèn)題,而且他的約束,目標(biāo)函數(shù)等表達(dá)的形式有很多,在此不再一一列舉,都是基于基礎(chǔ)的語(yǔ)法,大家可以多看代碼,有自己的風(fēng)格就好,其實(shí)花哨的格式都是一個(gè)目的。
三,可轉(zhuǎn)化為線性規(guī)劃的問(wèn)題
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; %默認(rèn)求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? 博客首發(fā)哈哈,博主也是暑假正式接觸數(shù)學(xué)建模擔(dān)任編程手,小白一名。想記錄一下所學(xué)避免忘記,也希望能幫到大家。有問(wèn)題歡迎評(píng)論區(qū)交流呀~
總結(jié)
以上是生活随笔為你收集整理的线性规划Matlab程序(小白向)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 华为2013年存储市场战略分析
- 下一篇: 服务器win2003的远程在哪里,走进w