定义: 目标函数+决策变量+约束条件,目标函数与约束条件均为线性函数
一般线性规划问题的标准型:
max z = ∑ j = 1 n c j x j s . t . { ∑ j = 1 n a i j x j = b i i = 1 , 2 , ⋅ ⋅ ⋅ , m x j ≥ 0 j = 1 , 2 , ⋅ ⋅ ⋅ , n \max z=\sum_{j=1}^nc_jx_j\\ s.t.\begin{cases} \sum_{j=1}^n{a_{ij}x_j=b_i} \enspace i=1,2,···,m\\ x_j\ge 0 \enspace j=1,2,···,n\\ \end{cases}\\ maxz=j=1∑ncjxjs.t.{∑j=1naijxj=bii=1,2,⋅⋅⋅,mxj≥0j=1,2,⋅⋅⋅,n
可行解: 满足一组约束条件的解
最优解: 使目标函数达到最大值的可行解
可行域: 所有可行解构成的集合,记为R
matlab中:
min x c T x s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b 其中 c 和 x 为 n 维向量, A 、 A e q 为适当维数的矩阵, b 、 b e q 为适当维数的列向量 \min\limits_{x} c^Tx\\ s.t.\begin{cases} Ax\leq b\\ Aeq·x=beq\\ lb\leq x \leq ub \end{cases}\\ 其中c和x为n维向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量 xmincTxs.t.⎩ ⎨ ⎧Ax≤bAeq⋅x=beqlb≤x≤ub其中c和x为n维向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量
matlab求解: 首先变为matlab标准型
[x,fval]=linprog(c,A,b)
[x,fval]=linprog(c,A,b,Aeq,beq)
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)
%
x返回的使决策向量的取值
fval返回的使目标函数的最优值
c为价值向量
A,b对应的使线性不等式约束
Aeq,beq对应的使线性等式约束
lb,ub分别对应的决策向量的下界和上界向量
min ∣ x 1 ∣ + ∣ x 2 ∣ + ⋅ ⋅ ⋅ + ∣ x n ∣ s . t . A x ≤ b 对 x i 存在任意的 u i , v i > 0 满足 x i = u i − v i , ∣ x i ∣ = u i + v i 即取 u i = x i + ∣ x i ∣ 2 , v i = ∣ x i ∣ − x i 2 将原式变为: min ∑ i = 1 n ( u i + v i ) s . t . { A ( u − v ) ≤ b u , v ≥ 0 \min |x_1|+|x_2|+···+|x_n|\\ s.t.\enspace Ax\le b\\ 对x_i存在任意的u_i,v_i>0满足\\ x_i=u_i-v_i,|x_i|=u_i+v_i\\ 即取u_i=\frac{x_i+|x_i|}{2},v_i=\frac{|x_i|-x_i}{2}\\ 将原式变为:\min \sum_{i=1}^n(u_i+v_i) \\s.t.\begin{cases} A(u-v)\leq b\\ u,v\ge 0 \end{cases} min∣x1∣+∣x2∣+⋅⋅⋅+∣xn∣s.t.Ax≤b对xi存在任意的ui,vi>0满足xi=ui−vi,∣xi∣=ui+vi即取ui=2xi+∣xi∣,vi=2∣xi∣−xi将原式变为:mini=1∑n(ui+vi)s.t.{A(u−v)≤bu,v≥0
纯整数规划: 所有决策变量要求取非负整数(引进的松弛变量和剩余变量可以不要求取整)
混合整数规划: 只有一部分的决策变量要求取非负整数,另一部分可以取非负实数
全整数规划: 除了所有决策变量要求取非负整数外,系数aij和常熟bi也要求取整数
0-1整数规划: 所有决策变量只能取0或1
特点:
先求出对应松弛问题的最优解
选取不满足整数条件的变量 xi0 来构造,形成两个子问题
x i ≤ ⌊ x i o ⌋ x i ≥ ⌊ x i o ⌋ + 1 x_i\le \lfloor x_i^o \rfloor\\ x_i\ge \lfloor x_i^o \rfloor +1 xi≤⌊xio⌋xi≥⌊xio⌋+1
对两个子问题求解,观察是否有可行解
分支定界法代码(matlab) 文件Branch_Delimitation_methode
% 主要修改参数即可进行分支定界的求解
clear;clc;
f = [-40, -90];
a = [8,7;7,20;];
b = [56;70];
aeq = [];
beq = [];
lb = [0; 0];
ub = [inf; inf];
Branch_Delimitation_method(f,a,b,aeq,beq,lb,ub)
% 分支定界法
function Branch_Delimitation_method(f, A, b, Aeq, beq, lbnd, ubnd)
global result; % 存储所有整数解
global lowerBound; % 下界
global upperBound; % 上界
global count; % 用以判断是否为第一次分支
count = 1;
createBinTreeNode({f, A, b, Aeq, beq, lbnd, ubnd});
if ~isempty(result)
[~,flag]=min(result(:,end)); % result中每一行对应一个整数解及对应的函数值
Result=result(flag,:);
disp('该整数规划问题的最优解为:');
disp(Result(1,1:end-1));
disp('该整数规划问题的最优值为:');
disp(Result(1,end));
else
disp('该整数规划问题无可行解');
end
先求出对应松弛问题的最优解
若最优解不满足整数要求则增加割平面条件
x i + ∑ a i k x k = b i , x k 为松弛变量 a i k = [ a i k ] + ( a i k − L a i k ) = [ a i k ] + f i k b i = [ b i ] + ( b i − L b i ) = [ b i ] + f i 原式: x i + ∑ [ a i k ] x k + ∑ f i k x i = [ b i ] + f i x_i+\sum a_{ik}x_k=b_i\enspace ,x_k 为松弛变量\\ a_{ik}=[a_{ik}]+(a_{ik}-La_ik)=[a_{ik}]+f_{ik}\\ b_i=[b_i]+(b_i-Lb_i)=[b_i]+f_i\\ 原式:x_i+\sum[a_{ik}]x_k+\sum f_{ik}x_i=[b_i]+f_i\\ xi+∑aikxk=bi,xk为松弛变量aik=[aik]+(aik−Laik)=[aik]+fikbi=[bi]+(bi−Lbi)=[bi]+fi原式:xi+∑[aik]xk+∑fikxi=[bi]+fi
增加一个线性约束,将松弛问题的可行区域割掉一块,使得非整数解恰好在割掉的一块中,但又没有割掉原问题的可行解,得到新问题
移项,使得整数部分 = 小数部分 x i + ∑ [ a i k ] x k − [ b i ] = f i − ∑ f i k x i ≤ 0 f i − ∑ f i k x i ≤ 0 即为增加的线性约束 移项,使得整数部分=小数部分\\ x_i+\sum [a_{ik}]x_k -[b_i]=f_i-\sum f_{ik}x_i \leq 0\\ f_i-\sum f_{ik}x_i\leq 0 \enspace 即为增加的线性约束 移项,使得整数部分=小数部分xi+∑[aik]xk−[bi]=fi−∑fikxi≤0fi−∑fikxi≤0即为增加的线性约束
若仍不为整数解则重复步骤
割平面法代码:文件Cut_plane_method
function [intx,intf] = DividePlane(A,c,b,baseVector)
%功能:用割平面法求解整数规划
%调用格式:[intx,intf]=DividePlane(A,c,b,baseVector)
%其中,A:约束矩阵;
% c:目标函数系数向量;
% b:约束右端向量;
% baseVector:初始基向量;
% intx:目标函数取最小值时的自变量值;
% intf:目标函数的最小值;
sz = size(A);
nVia = sz(2);%获取有多少决策变量
n = sz(1);%获取有多少约束条件
xx = 1:nVia;
if length(baseVector) ~= n
disp('基变量的个数要与约束矩阵的行数相等!');
mx = NaN;
mf = NaN;
return;
end
M = 0;
sigma = -[transpose(c) zeros(1,(nVia-length(c)))];
xb = b;
%首先用单纯形法求出最优解
while 1
[maxs,ind] = max(sigma);
%--------------------用单纯形法求最优解--------------------------------------
if maxs <= 0 %当检验数均小于0时,求得最优解。
vr = find(c~=0 ,1,'last');
for l=1:vr
ele = find(baseVector == l,1);
if(isempty(ele))
mx(l) = 0;
else
mx(l)=xb(ele);
end
end
if max(abs(round(mx) - mx))<1.0e-7 %判断最优解是否为整数解,如果是整数解。
intx = mx;
intf = mx*c;
return;
else %如果最优解不是整数解时,构建切割方程
sz = size(A);
sr = sz(1);
sc = sz(2);
[max_x, index_x] = max(abs(round(mx) - mx));
[isB, num] = find(index_x == baseVector);
fi = xb(num) - floor(xb(num));
for i=1:(index_x-1)
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
for i=(index_x+1):sc
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
Atmp(1,index_x) = 0; %构建对偶单纯形法的初始表格
A = [A zeros(sr,1);-Atmp(1,:) 1];
xb = [xb;-fi];
baseVector = [baseVector sc+1];
sigma = [sigma 0];
%-------------------对偶单纯形法的迭代过程----------------------
while 1
%----------------------------------------------------------
if xb >= 0 %判断如果右端向量均大于0,求得最优解
if max(abs(round(xb) - xb))<1.0e-7 %如果用对偶单纯形法求得了整数解,则返回最优整数解
vr = find(c~=0 ,1,'last');
for l=1:vr
ele = find(baseVector == l,1);
if(isempty(ele))
mx_1(l) = 0;
else
mx_1(l)=xb(ele);
end
end
intx = mx_1;
intf = mx_1*c;
return;
else %如果对偶单纯形法求得的最优解不是整数解,继续添加切割方程
sz = size(A);
sr = sz(1);
sc = sz(2);
[max_x, index_x] = max(abs(round(mx_1) - mx_1));
[isB, num] = find(index_x == baseVector);
fi = xb(num) - floor(xb(num));
for i=1:(index_x-1)
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
for i=(index_x+1):sc
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
Atmp(1,index_x) = 0; %下一次对偶单纯形迭代的初始表格
A = [A zeros(sr,1);-Atmp(1,:) 1];
xb = [xb;-fi];
baseVector = [baseVector sc+1];
sigma = [sigma 0];
continue;
end
else %如果右端向量不全大于0,则进行对偶单纯形法的换基变量过程
minb_1 = inf;
chagB_1 = inf;
sA = size(A);
[br,idb] = min(xb);
for j=1:sA(2)
if A(idb,j)<0
bm = sigma(j)/A(idb,j);
if bm<minb_1
minb_1 = bm;
chagB_1 = j;
end
end
end
sigma = sigma -A(idb,:)*minb_1;
xb(idb) = xb(idb)/A(idb,chagB_1);
A(idb,:) = A(idb,:)/A(idb,chagB_1);
for i =1:sA(1)
if i ~= idb
xb(i) = xb(i)-A(i,chagB_1)*xb(idb);
A(i,:) = A(i,:) - A(i,chagB_1)*A(idb,:);
end
end
baseVector(idb) = chagB_1;
end
%------------------------------------------------------------
end
%--------------------对偶单纯形法的迭代过程---------------------
end
else %如果检验数有不小于0的,则进行单纯形算法的迭代过程
minb = inf;
chagB = inf;
for j=1:n
if A(j,ind)>0
bz = xb(j)/A(j,ind);
if bz<minb
minb = bz;
chagB = j;
end
end
end
sigma = sigma -A(chagB,:)*maxs/A(chagB,ind);
xb(chagB) = xb(chagB)/A(chagB,ind);
A(chagB,:) = A(chagB,:)/A(chagB,ind);
for i =1:n
if i ~= chagB
xb(i) = xb(i)-A(i,ind)*xb(chagB);
A(i,:) = A(i,:) - A(i,ind)*A(chagB,:);
end
end
baseVector(chagB) = ind;
end
M = M + 1;
if (M == 1000000)
disp('找不到最优解!');
mx = NaN;
minf = NaN;
return;
end
end
文件Hungarian_algorithm
一般形式:
min f ( x ) s . t . { h j ( x ) ≤ 0 j = 1 , 2 , ⋅ ⋅ ⋅ ⋅ q g i ( x ) = 0 i = 1 , 2 , ⋅ ⋅ ⋅ p \min f(x)\\ s.t.\begin{cases} h_j(x)\le 0 \enspace j=1,2,····q\\ g_i(x)=0 \enspace i=1,2,···p \end{cases} minf(x)s.t.{hj(x)≤0j=1,2,⋅⋅⋅⋅qgi(x)=0i=1,2,⋅⋅⋅p
matlab中:
min f ( x ) s . t . { A ⋅ x ≤ b A e q ⋅ x = b e q c ( x ) ≤ 0 c e q ( x ) = 0 l b ≤ x ≤ u b c ( x ) , c e q ( x ) 是非线性向量函数 \min f(x)\\ s.t.\begin{cases} A·x \le b\\ Aeq·x=beq\\ c(x)\le 0\\ ceq(x)=0\\ lb\le x \le ub \end{cases}\\ c(x),ceq(x)是非线性向量函数 minf(x)s.t.⎩ ⎨ ⎧A⋅x≤bAeq⋅x=beqc(x)≤0ceq(x)=0lb≤x≤ubc(x),ceq(x)是非线性向量函数
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
fun:非线性函数,M文件定义的函数,目标函数
x0:x的初始值,随机在x中一个值
nonlcon:非线性约束条件,M文件定义的函数
options:优化参数,一般缺省[]
一般步骤:
**定义:**目标函数的自变量为二次函数,约束条件全为线性
min 1 2 x T H x + f T x s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \min \frac{1}{2}x^THx+f^Tx\\ s.t.\begin{cases} Ax \le b\\ Aeq·x=beq\\ lb \le x \le ub \end{cases} min21xTHx+fTxs.t.⎩ ⎨ ⎧Ax≤bAeq⋅x=beqlb≤x≤ub
[x,fval]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,option)
H:二次系数矩阵,平方处需要两倍
f:一次系数矩阵
解析解
数值解
已知 d y d x = e x 2 , 初始值: y ( 0 ) = 1 求 y = f ( x ) 已知 \frac{dy}{dx}=e^{x^2},初始值:y(0)=1\\ 求 y = f(x) 已知dxdy=ex2,初始值:y(0)=1求y=f(x)
通过 f ( x + h ) − f ( x ) h = e x 2 \frac{f(x+h)-f(x)}{h}=e^{x^2} hf(x+h)−f(x)=ex2 得到递推公式 f ( x + h ) = f ( x ) + h × e x 2 f(x+h)=f(x)+h\times e^{x^2} f(x+h)=f(x)+h×ex2
clc;clear;
k=1;x(1)=0;y(1)=1;
for i=0:h:1
y(k+1)=y(k)+exp(i^2)*h;
x(k+1)=i+k;
k=k+1;
end
plot(x,y)
d 2 y d x 2 + d y d x + y = e x 2 \frac{d^2y}{dx^2}+\frac{dy}{dx}+y=e^{x^2} dx2d2y+dxdy+y=ex2
clc;clear;
k=1;x(1)=0;y(1)=1;z(1)=1;
h=0.01;
for i=0:h:1
z(k+1)=z(k)+(exp(i^2)-z(k)-y(k))*h;
y(k+1)=y(k)+z(k)*h;
x(k+1)=i+h;
k=k+1;
end
plot(x,y)
hold on
plot(x,z)
dsolve('方程1','方程2',...,'方程n','初始条件','自变量')
D表示微分,D2、D3表示求二阶、三阶
d y d x = 1 + y 2 , y ( 0 ) = 1 \frac{dy}{dx}=1+y^2,y(0)=1 dxdy=1+y2,y(0)=1
输入:y1=dsolve(‘Dy=1+y^2’,‘x’) 求通解
y2=dsolve(‘Dy=1+y^2’,‘y(0)=1’,‘x’) 求特解
[T,Y]=solver(odefun,tspan,y0)
y0为初始条件
tspan为求解区间
solver:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb
结合AR,MA
X t = ϕ 0 + ϕ 1 x t − 1 + . . . + ϕ p x t − p + ξ t + μ + ξ t − θ 1 ξ t − 1 − . . . θ q ξ t − q X_t=\phi_0+\phi_1x_{t-1}+...+\phi_px_{t-p}+\xi_t+\mu+\xi_t-\theta_1\xi_{t-1}-...\theta_q\xi_{t-q} Xt=ϕ0+ϕ1xt−1+...+ϕpxt−p+ξt+μ+ξt−θ1ξt−1−...θqξt−q
d x d t = r x ln k x \frac{dx}{dt}=rx\ln\frac{k}{x} dtdx=rxlnxk
d x d t = r x \frac{dx}{dt}=rx dtdx=rx
用r(x)表示r关于x的变化:r(x)=r-sr
d x d t = r ( 1 − x x m ) x \frac{dx}{dt}=r(1-\frac{x}{x_m})x dtdx=r(1−xmx)x
解析解为:
x ( t ) = k 1 + ( k x 0 − 1 ) e − r t x(t)=\frac{k}{1+(\frac{k}{x_0}-1)e^{-rt}} x(t)=1+(x0k−1)e−rtk
以及放疗对于肿瘤细胞的增长有着抑制作用,我们用 α \alpha α来描述放疗的杀伤效应,可以得到模型:
{ d x d t = r ( 1 − x k ) x − α x x ( 0 ) = x 0 \begin{cases} \frac{\text{d}x}{\text{d}t}=r(1-\frac{x}{k})x-\alpha x\\ \\ x(0)=x_0 \end{cases} ⎩ ⎨ ⎧dtdx=r(1−kx)x−αxx(0)=x0
假设放疗的杀伤作用是比较稳定的,即放疗对细胞的杀伤率与时间成正比(假设5.),我们使用指数函数来描述它 α = α 0 e − β t \alpha = \alpha_0 e ^{-\beta t} α=α0e−βt
{ d x d t = r ( 1 − x k ) x − α 0 e − β t x x ( 0 ) = x 0 \begin{cases} \frac{\text{d}x}{\text{d}t}=r(1-\frac{x}{k})x-\alpha_0e^{-\beta t} x\\ \\ x(0)=x_0 \end{cases} ⎩ ⎨ ⎧dtdx=r(1−kx)x−α0e−βtxx(0)=x0
解析解为:
x ( t ) = k ( 1 + α e − β t ) ( 1 + ( k x 0 − 1 ) e − r t ) x(t)=\frac{k}{(1+\alpha e^{-\beta t})(1+(\frac{k}{x_0}-1)e^{-rt})} x(t)=(1+αe−βt)(1+(x0k−1)e−rt)k
被评价对象、评价指标、权重系数、综合评价模型、评价者
评价指标: 系统性、科学性、可比性、可测性、独立性
指标类型正向化
标准化处理
特点: 对复杂的决策问题的本质、影响因素以及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准测或无结构特性的复杂决策问题提供简便的决策方法
文件 Analytic_hierarchy
将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系,将因素按不同层次聚集组合,形成一个多层次的分析结构模型,将问题归结为最低层相对于最高层的相对重要权值的确定或相对优劣次序的排定
建立层次结构模型
成对比较
不把所有因素放在一起比较,而是两两比较
采用相对尺度,减少性质不同的诸多因素相互比较的困难
使用1~9的标度方法
标度 | 含义 |
---|---|
1 | 同样重要 |
3 | 稍微重要 |
5 | 明显重要 |
7 | 强烈重要 |
9 | 极端重要 |
2,4,6,8 | 上述两相邻判断的中值 |
倒数 | 不重要程度 |
构建判断矩阵(一致矩阵or不一致矩阵)
层次单排序及其一致性检验
层次总排序及其一致性检验
粗略、主观,比较、判断以及结果都是粗糙的不适于精度要求很高的问题。其次是从建立层次结构图到给出两两比较矩阵,人的主观因素作用很大,使决策结果较大程度的依赖于决策人的主观意志,可能难以为众人所接收
多指标评价方法,通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,排序选择最优方案
文件: Evaluation -->TOPSIS(手动加权)
设多属性决策方案集 D = d 1 , d 2 , ⋅ ⋅ ⋅ , d m D = {d_1,d_2,···,d_m} D=d1,d2,⋅⋅⋅,dm ,衡量方案优劣的属性变量为 x 1 , x 2 , ⋅ ⋅ ⋅ , x n x_1,x_2,···,x_n x1,x2,⋅⋅⋅,xn ,这时方案集D中的每个方案 d i d_i di 的n个属性值构成的向量是 [ a i 1 , a i 2 , ⋅ ⋅ ⋅ , a i n ] [a_{i1},a_{i2},···,a_{in}] [ai1,ai2,⋅⋅⋅,ain] 。
正理想解,方案集D中并不存在的虚拟的最佳方案;负理想解,方案集D中并不存在的虚拟的最劣方案。
数据预处理(正向化,非量纲化,归一化)
线性变化
b i j = a i j / a j m a x , 效益型 b i j = 1 − a i j / a j m a x , 成本型 b_{ij}=a_{ij}/a_j^{max} ,效益型\\ b_{ij}=1-a_{ij}/a_j^{max},成本型 bij=aij/ajmax,效益型bij=1−aij/ajmax,成本型
标准0,1变化
b i j = a i j − a j m i n a j m a x − a j m i n ,效益型 b i j = a j m a x − a i j a j m a x − a j m i n ,成本型 b_{ij}=\frac{a_{ij}-a_j^{min}}{a_j^{max}-a_j^{min}},效益型\\ b_{ij}=\frac{a_j^{max}-a_{ij}}{a_j^{max}-a_j^{min}},成本型 bij=ajmax−ajminaij−ajmin,效益型bij=ajmax−ajminajmax−aij,成本型
区间型属性变化
b i j = { 1 − ( a j 0 − a i j ) a j 0 − a j d o w n , a j d o w n ≤ a i j ≤ a j 0 1 , a j 0 ≤ a i j ≤ a j u p 1 − a i j − a j ∗ a j u p − a j ∗ , a j ∗ ≤ a i j ≤ a j u p 0 , e l s e c a s e s a j d o w n 可接收的下线,一般取 m i n a j u p 可接受的上线 b_{ij}=\begin{cases} 1-\frac{(a_j^0-a_{ij})}{a_j^0-a_j^{down}}, a_j^{down} \le a_{ij} \le a_j^0\\ 1, a_j^0 \le a_{ij} \le a_j^{up}\\ 1-\frac{a_{ij}-a_j^*}{a_j^{up}-a_j^*},a_j^* \le a_{ij} \le a_j^{up}\\ 0,else\enspace cases \end{cases}\\ a_j^{down}可接收的下线,一般取min\\ a_j^{up}可接受的上线 bij=⎩ ⎨ ⎧1−aj0−ajdown(aj0−aij),ajdown≤aij≤aj01,aj0≤aij≤ajup1−ajup−aj∗aij−aj∗,aj∗≤aij≤ajup0,elsecasesajdown可接收的下线,一般取minajup可接受的上线
x_new = @(interval,lb,ub,x)(1-(interval(1)-x)./(interval(1)-lb)).*(x>=lb&x<interval(1))+(x>=interval(1)&x<=interval(2))+(1-(x-interval(2))./(ub-interval(2))).*(x>interval(2)&x<=ub);
interval=[];lb= ;ub= ;
x_data=[];
x=x_new(interval,lb,ub,x_data)
向量归一化(最常用,但不适合区间型)
效益型 b i j = a i j ∑ i = 1 m a i j 2 , i = 1 , 2 ⋅ ⋅ ⋅ , m , j = 1 , 2 ⋅ ⋅ ⋅ , n 成本型 b i j = 1 − a i j ∑ i = 1 m a i j 2 , i = 1 , 2 ⋅ ⋅ ⋅ , m , j = 1 , 2 ⋅ ⋅ ⋅ , n 效益型b_{ij}=\frac{a_{ij}}{\sqrt{\sum_{i=1}^m a_{ij}^2}} \enspace ,i=1,2···,m,j=1,2···,n\\ 成本型b_{ij}=1-\frac{a_{ij}}{\sqrt{\sum_{i=1}^m a_{ij}^2}} \enspace ,i=1,2···,m,j=1,2···,n 效益型bij=∑i=1maij2aij,i=1,2⋅⋅⋅,m,j=1,2⋅⋅⋅,n成本型bij=1−∑i=1maij2aij,i=1,2⋅⋅⋅,m,j=1,2⋅⋅⋅,n
标准化处理zscore(x)
a j ‾ = 1 m ∑ i = 1 m a i j S j = 1 m − 1 ∑ i = 1 m ( a i j − x j ‾ ) 2 b i j = a i j − a j ‾ S j \overline{a_j}=\frac{1}{m}\sum_{i=1}^ma_{ij}\\ S_j = \sqrt{\frac{1}{m-1}\sum_{i=1}^m(a_ij-\overline{x_j})^2}\\ b_{ij}=\frac{a_{ij}-\overline{a_j}}{S_j} aj=m1i=1∑maijSj=m−11i=1∑m(aij−xj)2bij=Sjaij−aj
用向量规划的方法球的规范决策矩阵
构成加权规范矩阵$C= (c_{ij})_{m\times n} $
确定正理想解和负理想解
计算距离
计算最终指标
利用信息熵计算各个指标的权重,为多指标综合评价提供依据
归一化(消除量纲的影响)
x − m i n m a x − m i n ( m i n − m a x 归一化 ) \frac{x-min}{max-min}(min-max归一化) max−minx−min(min−max归一化)
计算信息熵
H ( p ) = − ∑ i = 1 n p i log 2 p i H(p)=-\sum_{i=1}^np_i\log_2p_i H(p)=−i=1∑npilog2pi
p为概率: 元素的值 列和 \frac{元素的值}{列和} 列和元素的值
计算每一列的信息熵:
e j = − 1 ln n ∑ i = 1 n [ p i j × ln ( p i j ) ] , j = 1 , 2 , 3... m e_j=-\frac{1}{\ln n}\sum_{i=1}^n[p_{ij}\times \ln(p_{ij})]\enspace,j=1,2,3...m ej=−lnn1i=1∑n[pij×ln(pij)],j=1,2,3...m
确定权重
d j = 1 − e j w j = d j ∑ j = 1 m d j , j = 1 , 2 , 3... m d_j=1-e_j\\w_j=\frac{d_j}{\sum_{j=1}^md_j}\enspace,j=1,2,3...m dj=1−ejwj=∑j=1mdjdj,j=1,2,3...m
将一个数据集划分为若干组或类的过程,并使得同一个组内的数据对象具有较高的相似度,而不同组中的数据对象是不相似的,通常利用各数据对象间的距离来表示。适用于探讨样本之间的互相关联关系从而对一个样本结构做一个初步评价
距离矩阵
a=[];
d1=pdist(a); %欧氏距离举例
D=squareform(d1); %实对称矩阵
S=tril(D); %保留下三角
当对p个指标变量进行聚类时,用相似系数来衡量变量之间的相似程度 C α . β C_{\alpha.\beta} Cα.β ,应该满足
∣ C α , β ∣ ≤ 1 , 且 C α . α = 1 C α , β = ± 1 , 当且仅当 α = k β C α , β = C β , α |C_{\alpha,\beta}|\le 1 ,且C_{\alpha.\alpha}=1\\ C_{\alpha,\beta}= \pm1,当且仅当\alpha=k\beta\\ C_{\alpha,\beta}=C_{\beta,\alpha} ∣Cα,β∣≤1,且Cα.α=1Cα,β=±1,当且仅当α=kβCα,β=Cβ,α
夹角余弦
C i j ( 1 ) = cos α i j = ∑ t = 1 n x t i x t j ∑ t = 1 n x t i 2 ∑ t = 1 n x t j 2 C_{ij}(1)=\cos \alpha_{ij}=\frac{\sum_{t=1}^n x_{ti}x_{tj}}{\sqrt{\sum_{t=1}^nx_{ti}^2}\sqrt{\sum_{t=1}^nx_{tj}^2}} Cij(1)=cosαij=∑t=1nxti2∑t=1nxtj2∑t=1nxtixtj
相关系数
C i j ( 2 ) = ∑ t = 1 n ( x t i − x i ‾ ) ( x t j − x j ‾ ) ∑ t = 1 n ( x t i − x i ‾ ) 2 ∑ t = 1 n ( x t j − x j ‾ ) 2 C_{ij}(2)=\frac{\sum_{t=1}^n(x_{ti}-\overline{x_i})(x_{tj}-\overline{x_j})}{\sqrt{\sum_{t=1}^n(x_{ti}-\overline{x_i})^2}\sqrt{\sum_{t=1}^n(x_{tj}-\overline{x_j})^2}} Cij(2)=∑t=1n(xti−xi)2∑t=1n(xtj−xj)2∑t=1n(xti−xi)(xtj−xj)
R=corrcoef(a); %指标之间的相关系数
a1=normc(a); %将a的各列化为单位向量
J=a1'*a1 %计算各列之间的夹角余弦
d i j d_{ij} dij 表示两个样本 x i , x j x_i,x_j xi,xj 之间的距离, G p , G q G_p,G_q Gp,Gq 分别表示两个类别,各自含有 n p , n q n_p,n_q np,nq 个样本
特点: 只适用于聚类均值有意义的场合,对噪声和孤立点数据敏感
数据少,看不出明显规律,适合灰色预测
拉格朗日插值 lagrange(x,y,x0)
f ( x ) = y 1 f 1 ( x ) + y 2 f 2 ( x ) + y 3 f 3 ( x ) f(x)=y_1f_1(x)+y_2f_2(x)+y_3f_3(x) f(x)=y1f1(x)+y2f2(x)+y3f3(x) 每一次对一个点拟合,最后相加
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end
高次插值的Runge现象
一维插值interp1
yi=interp1(x,y,xi,'method')
nearest:最近邻插值
linear:线性插值
spline:三次样条插值,一般优先
cubic:立方插值
省略为线性插值
x=0:2:24;
y-[12 9 9 10 18 24 28 27 25 20 18 15 13];
x1=13;
y1=interp1(x,y,x1,'spline')
xi=0:1/3600:24;
yi=interp1(x,y,xi,'spline');
plot(x,y,'*',xi,yi)
二维插值interp2
zi=inter2(x,y,z.xi,yi,'method')
nearest:最邻近插值
linear:双线性插值
spline:双三次样插值
cubic:双立方插值,一般优先
x=1:5;
y=1:3;
temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
figure(1);
mesh(x,y,temps);
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi.yi,'cubic');
figure(2);
mesh(xi,yi,zi);
figure(3);
contour(xi,yi,zi,20,'r'); % 等高线
[i,j]=find(zi==min(min(zi)));
x=xi(j),y=yi(i),zmin=zi(i,j)
[i,j]=find(zi==max(max(zi)));
x=xi(j),y=yi(i),zmax=zi(i,j)
plot3空间曲线,mesh空间曲面,surf空间曲面,contour等高线
散乱点插值griddata
griddata(x,y,z,xi,yi,'method')
插值主要用于求函数值,拟合主要求函数关系
多项式拟合
[a,S]=polyfit(x,y,n)
n为拟合多项式的次数
a为多项式系数构成的向量
S为分析拟合效果所需的指标
x=1:12;
y=[5 8 9 15 25 29 31 30 22 25 27 24];
a=polyfit(x,y,9)
xp=1:0.1:12;
yp=polyval(a,xp);
plot(x,y,'.k',xp,yp,'r');
非线性拟合
[b,r]=polyfit(x,y,fun,b0,option)
fun为拟合函数
b0为拟合参数的初始迭代值
option为拟合选项
b为拟合参数
r为拟合残差
x=1:16;
y=[4.00 6.40 8.00 8.80 9.22 9.50 9.70 9.86 10.00 10.20 10.32 10.42 10.50 10.55 10.58 10.60];
y1=@(b,t)b(1)*exp(-t/b(2))+b(3)*exp(-t/b(4))+b(5);
b0=[-1 1 -1 1 1];
a=nlinfit(x,y,y1,b0)
xp=1:0.1:16;
yp=y1(a,xp);
plot(x,y,'.k',xp,yp,'r');
cftool工具箱
一元线性回归模型
{ y = β 0 + β 1 x + ξ E ξ = 0 , D ξ = σ 2 \begin{cases} y=\beta_0+\beta_1x+\xi\\ E_\xi=0,D_\xi=\sigma^2\\ \end{cases} {y=β0+β1x+ξEξ=0,Dξ=σ2
β 0 、 β 1 \beta_0、\beta_1 β0、β1为回归系数,自变量 x x x为回归变量, Y = β 0 + β 1 x Y=\beta_0+\beta_1x Y=β0+β1x为 y y y对 x x x的回归直线方程
主要任务:
检验:
置信区间
预测与控制
图论问题
参数初始化
计算概率
更新信息素浓度
{ τ i j ( t + 1 ) = ( 1 − ρ ) τ i j ( t ) + ∑ k = 1 m Δ τ i j k , 0 < ρ < 1 Δ τ i j k = { Q L k , 第 k 只蚂蚁曾经过路径 i 到 j 0 , 其他 \begin{cases} \tau_{ij}(t+1)=(1-\rho)\tau_{ij}(t)+\sum_{k=1}^m \Delta \tau_{ij}^k, 0<\rho<1\\ \Delta \tau_{ij}^k = \begin{cases} \frac{Q}{L_k},第k只蚂蚁曾经过路径i到j\\ 0,其他 \end{cases} \end{cases}\\ ⎩ ⎨ ⎧τij(t+1)=(1−ρ)τij(t)+∑k=1mΔτijk,0<ρ<1Δτijk={LkQ,第k只蚂蚁曾经过路径i到j0,其他
判断是否终止
采用贪心思想,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的
图论中求解最短路径
随机模拟方法,使用随机数解决问题,得到的解都是近似解
蒙特卡洛的基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。比如投3个骰子,计算3个骰子同时是6的概率,可以模拟投N次(随机样本数),统计同时是6出现的次数C,然后C除以N即是计算结果。