??關(guān)于美賽個人定位與團隊分工:
1、建模:三人一起討論模型思路,確保每人都能明白模型架構(gòu)與原理;參數(shù)處理、模型改進與優(yōu)化等細節(jié)交給建模者處理。
2、編程:模型確立好后,編程者寫程序求解問題,如果用到某些算法,需要與另外兩人討論清楚,確保三人思路在一條線,尤其確保寫論文的人能理解算法原理。
3、寫論文:涉及模型和算法方面的,要由最能理解模型或算法的人寫出梗概交給寫作者,由寫作者擴充出正文,確保全文語句和排版的風格一致。
而且比賽過程中,三人的任務(wù)不是固定的,例如A擅長第一問的模型和第二問的編程,那么就要隨時調(diào)整每個人側(cè)重的任務(wù)。
還需注意,一切工作以論文為中心。因為最終評委看到的就是論文。
數(shù)學建模國賽,組隊 & 歷年賽題知識點
??學MATLAB還是Python?
直接給結(jié)論:都學!先學MATLAB.
但是一個團隊有人精通MATLAB,有人精通Python就牛犇啦!
具體理由看這個:http://www.itdecent.cn/p/94d27362ebac
本周計劃入門MATLAB
在掌握MATLAB基本代碼編寫規(guī)則后開始學習MATLAB中的數(shù)模知識。
每個模型簡單了解適用賽題和原理,以及代碼求解。
一. 線性規(guī)劃模型
三要素:決策變量,目標函數(shù),約束條件。
☆ 要解決的是優(yōu)化類問題(在一組線性約束條件下,求線性目標函數(shù)的max)
適用賽題:“怎樣分配”、“利潤最大”、“運輸、車次、生產(chǎn)安排”等等。
總收益最大一般為線性規(guī)劃;總收益率最大一般為非線性規(guī)劃
收益率=收益/成本如果成本為變量,是-1次冪,為非線性——判斷標準還是
看約束條件和目標函數(shù)的變量是否完全是一次方。

?給該公司設(shè)計一種投資組合方案,用給定的資金M,有選擇地購買若干種資產(chǎn)或存銀行生息,使凈收益盡可能大,總體風險盡可能小。
1. 問題分析
- 目標函數(shù):凈收益盡可能大,總體風險盡可能小
- 約束條件:總資金有限、隱含條件(每筆投資都是非負數(shù))
2. 基本假設(shè)
由于投資數(shù)額M相當大,題目給定的定額μi相對較小,piui更小,可假設(shè)每一筆交易額xi都大于對應(yīng)μi
(即不考慮xi<μi的情況,簡化模型)
3. 模型建立
決策變量:投資項目si的資金為xi(i=0,1,2,3,4),總收益Q
目標函數(shù):
多目標線性規(guī)劃模型
4. 模型簡化
現(xiàn)實中,不同人風險承受能力不同。
設(shè)某類投資者,能接受的最大投資風險率為定值a
∴只要風險率<=a, 可視為對該投資者滿足"總風險盡可能小"?
qixi/M ≤ a
風險率=投資額*損失率/總資產(chǎn)
分情況討論——將兩個目標轉(zhuǎn)化為一個目標(總風險小于定值):
設(shè)低風險投資者能接受a=5%,中風險投資者能接受a=15%等等
5. 完成模型

6. 模型改進
現(xiàn)實中的a是一個變量
在求解過程中,對不同a取值分別進行求解(該操作是將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ù)項矩陣,<形式下
% Aeq,beq為等式約束的系數(shù)矩陣和常數(shù)項矩陣
% lb,ub為決策變量的最小&最大取值
% 求最大值等價于求-y的最小值


f = [-0.05,-0.27,-0.19,-0.185,-0.185]; %目標函數(shù)的系數(shù)向量
A = [zeros(4,1),diag([0.025,0.015,0.055,0.026])]; %A是不等書約束條件的變量系數(shù)矩陣
%zeros(4,1)生成4行一列全0矩陣
%diag()為對角矩陣
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 = []; %定義空矩陣用來存不用風險率下的最優(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ù)模論文中這些操作和標準化的形式不必寫出來, 知道用linprog函數(shù)會用到該形式就行
plot(a,Q,'*r');
xlabel("風險率");
ylabel("最大收益");

