??關(guān)于美賽個(gè)人定位與團(tuán)隊(duì)分工:
1肾砂、建模:三人一起討論模型思路远剩,確保每人都能明白模型架構(gòu)與原理扣溺;參數(shù)處理、模型改進(jìn)與優(yōu)化等細(xì)節(jié)交給建模者處理瓜晤。
2锥余、編程:模型確立好后,編程者寫(xiě)程序求解問(wèn)題痢掠,如果用到某些算法驱犹,需要與另外兩人討論清楚,確保三人思路在一條線足画,尤其確保寫(xiě)論文的人能理解算法原理雄驹。
3、寫(xiě)論文:涉及模型和算法方面的淹辞,要由最能理解模型或算法的人寫(xiě)出梗概交給寫(xiě)作者医舆,由寫(xiě)作者擴(kuò)充出正文,確保全文語(yǔ)句和排版的風(fēng)格一致象缀。
而且比賽過(guò)程中蔬将,三人的任務(wù)不是固定的,例如A擅長(zhǎng)第一問(wèn)的模型和第二問(wèn)的編程央星,那么就要隨時(shí)調(diào)整每個(gè)人側(cè)重的任務(wù)霞怀。
還需注意,一切工作以論文為中心莉给。因?yàn)樽罱K評(píng)委看到的就是論文毙石。
數(shù)學(xué)建模國(guó)賽,組隊(duì) & 歷年賽題知識(shí)點(diǎn)
??學(xué)MATLAB還是Python颓遏?
直接給結(jié)論:都學(xué)徐矩!先學(xué)MATLAB.
但是一個(gè)團(tuán)隊(duì)有人精通MATLAB,有人精通Python就牛犇啦叁幢!
具體理由看這個(gè):http://www.reibang.com/p/94d27362ebac
本周計(jì)劃入門(mén)MATLAB
在掌握MATLAB基本代碼編寫(xiě)規(guī)則后開(kāi)始學(xué)習(xí)MATLAB中的數(shù)模知識(shí)丧蘸。
每個(gè)模型簡(jiǎn)單了解適用賽題和原理,以及代碼求解遥皂。
一. 線性規(guī)劃模型
三要素:決策變量,目標(biāo)函數(shù)刽漂,約束條件演训。
☆ 要解決的是優(yōu)化類(lèi)問(wèn)題(在一組線性
約束條件下,求線性目標(biāo)函數(shù)的max)
適用賽題:“怎樣分配”贝咙、“利潤(rùn)最大”样悟、“運(yùn)輸、車(chē)次、生產(chǎn)安排”等等窟她。
總收益最大
一般為線性規(guī)劃陈症;總收益率最大
一般為非線性規(guī)劃
收益率=收益/成本如果成本為變量,是-1次冪震糖,為非線性——判斷標(biāo)準(zhǔn)還是
看約束條件和目標(biāo)函數(shù)的變量是否完全是一次方录肯。
?給該公司設(shè)計(jì)一種投資組合方案,用給定的資金M吊说,有選擇地購(gòu)買(mǎi)若干種資產(chǎn)或存銀行生息论咏,使凈收益盡可能大,總體風(fēng)險(xiǎn)盡可能小颁井。
1. 問(wèn)題分析
- 目標(biāo)函數(shù):凈收益盡可能大厅贪,總體風(fēng)險(xiǎn)盡可能小
- 約束條件:總資金有限、隱含條件(每筆投資都是非負(fù)數(shù))
2. 基本假設(shè)
由于投資數(shù)額M相當(dāng)大雅宾,題目給定的定額μi相對(duì)較小养涮,piui更小,可假設(shè)每一筆交易額xi都大于對(duì)應(yīng)μi
(即不考慮xi<μi的情況眉抬,簡(jiǎn)化模型)
3. 模型建立
決策變量:投資項(xiàng)目si的資金為xi(i=0,1,2,3,4)贯吓,總收益Q
目標(biāo)函數(shù):
4. 模型簡(jiǎn)化
現(xiàn)實(shí)中,不同人風(fēng)險(xiǎn)承受能力不同吐辙。
設(shè)某類(lèi)投資者宣决,能接受的最大投資風(fēng)險(xiǎn)率為定值a
∴只要風(fēng)險(xiǎn)率<=a, 可視為對(duì)該投資者滿足"總風(fēng)險(xiǎn)盡可能小"?
qixi/M ≤ a
風(fēng)險(xiǎn)率=投資額*損失率/總資產(chǎn)
分情況討論——將兩個(gè)目標(biāo)轉(zhuǎn)化為一個(gè)目標(biāo)(總風(fēng)險(xiǎn)小于定值):
設(shè)低風(fēng)險(xiǎn)投資者能接受a=5%,中風(fēng)險(xiǎn)投資者能接受a=15%等等
5. 完成模型
6. 模型改進(jìn)
現(xiàn)實(shí)中的a是一個(gè)變量
在求解過(guò)程中,對(duì)不同a取值分別進(jìn)行求解(該操作是將a作為變量)
7. 代碼求解
調(diào)用MATLAB自帶的Linprog函數(shù)
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)
% x為變量取值昏苏,fval返回最優(yōu)解
% f為系數(shù)向量尊沸,最小值形式下
% A,b為不等式約束的變量系數(shù)矩陣和常數(shù)項(xiàng)矩陣,<形式下
% Aeq,beq為等式約束的系數(shù)矩陣和常數(shù)項(xiàng)矩陣
% lb,ub為決策變量的最小&最大取值
% 求最大值等價(jià)于求-y的最小值
f = [-0.05,-0.27,-0.19,-0.185,-0.185]; %目標(biāo)函數(shù)的系數(shù)向量
A = [zeros(4,1),diag([0.025,0.015,0.055,0.026])]; %A是不等書(shū)約束條件的變量系數(shù)矩陣
%zeros(4,1)生成4行一列全0矩陣
%diag()為對(duì)角矩陣
Aeq = [1,1.01,1.02,1.045,1.065];
beq = 1;
lb = zeros(5,1);
Q = zeros(1,length(a)); %初始化保存最優(yōu)解的矩陣Q
xx = []; %定義空矩陣用來(lái)存不用風(fēng)險(xiǎn)率下的最優(yōu)解
for i = 1:length(a)
b = a(i)*ones(4,1);
[x,y] = linprog(f,A,b,Aeq,beq,lb);
Q(i) = -y;
xx = [xx;x'];
end
數(shù)模論文中這些操作和標(biāo)準(zhǔn)化的形式不必寫(xiě)出來(lái)洼专, 知道用linprog函數(shù)會(huì)用到該形式就行
plot(a,Q,'*r');
xlabel("風(fēng)險(xiǎn)率");
ylabel("最大收益");