一、模型的建立、求解与应用
1.1 解决二次规划问题
问题模型
解决方法
[x,fval,exitflag,output,lamda] = quadprog(H,f,A,b,Aeq,beq,lb,ub)
将数据写入excle文件
xlswrite(‘D/test.xlsx’,x)
将数据写入excel文件指定位置
1.2 解决多目标规划问题
问题描述
例子:基于遗传算法求解多目标规划模型
%%定义求解函数文件
function f = my_first_multi(x)
f(1) = x(1)^4 - 10*x(1)^2+x(1)*x(2) + x(2)^4 - (x(1)^2)*(x(2)^2);
f(2) = x(2)^4 - (x(1)^2)*(x(2)^2) + x(1)^4 + x(1)*x(2);
%%求解文件
clear
clc
fitnessfcn = @my_first_multi; % Function handle to the fitness function
nvars = 2; % Number of decision variables
lb = [-5,-5]; % Lower bound
ub = [5,5]; % Upper bound
A = []; b = []; % No linear inequality constraints
Aeq = []; beq = []; % No linear equality constraints
options = gaoptimset('ParetoFraction',0.3,'PopulationSize',100,'Generations',200,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
[x,fval] = gamultiobj(fitnessfcn,nvars, A,b,Aeq,beq,lb,ub,options);
参考资料
https://blog.csdn.net/panmingqian/article/details/122416880#:~:text=%E6%9C%80%E4%BC%98%E5%89%8D%E7%AB%AF%E4%B8%AA%E4%BD%93%E7%B3%BB%E6%95%B0%E5%AE%9A%E4%B9%89%E4%B8%BA%E6%9C%80%E4%BC%98%E5%89%8D%E7%AB%AF%E4%B8%AD%E7%9A%84%E4%B8%AA%E4%BD%93%E5%9C%A8%E7%A7%8D%E7%BE%A4%E4%B8%AD%E6%89%80%E5%8D%A0%E7%9A%84%E6%AF%94%E4%BE%8B%EF%BC%8C%E5%8D%B3%E6%9C%80%E4%BC%98%E5%89%8D%E7%AB%AF%E4%B8%AA%E4%BD%93%E6%95%B0%20%3D%20min%20%7B,ParetoFraction%20%2A%20%E7%A7%8D%E7%BE%A4%E5%A4%A7%E5%B0%8F%EF%BC%8C%E5%89%8D%E7%AB%AF%E4%B8%AD%E7%8E%B0%E5%AD%98%E7%9A%84%E4%B8%AA%E4%BD%93%E6%95%B0%E7%9B%AE%20%7D%EF%BC%8C%E5%85%B6%E5%8F%96%E5%80%BC%E8%8C%83%E5%9B%B4%E4%B8%BA%200%EF%BD%9E1%E3%80%82
1.3 matlab求解多目标线性规划
模糊折中规划(理想点法):
先逐个求解单目标规划
例
通过单目标规划的解集构造评价函数,求解极小化评价函数
例
参考材料
多目标线性规划求解方法及matlab实现_sljwy的博客-CSDN博客_多目标规划模型matlab
1.4 K-means聚类算法实现
例
Idx:每行数据的聚类标号
C:聚类处理后的数据
sumD:每个类类内各点和质心之间的距离之和
D:类内各点和质心之间的距离
data:要处理的矩阵数据
其他参数:
参考材料
https://cloud.tencent.com/developer/article/1391975#:~:text=K-means%E8%81%9A%E7%B1%BB%E7%AE%97%E6%B3%95%E9%87%87%E7%94%A8%E7%9A%84%E6%98%AF%E5%B0%86N%2AP%E7%9A%84%E7%9F%A9%E9%98%B5X%E5%88%92%E5%88%86%E4%B8%BAK%E4%B8%AA%E7%B1%BB%EF%BC%8C%E4%BD%BF%E5%BE%97%E7%B1%BB%E5%86%85%E5%AF%B9%E8%B1%A1%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB%E6%9C%80%E5%A4%A7%2C%E8%80%8C%E7%B1%BB%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB%E6%9C%80%E5%B0%8F%E3%80%82%20%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%EF%BC%9A%20Idx%3DKmeans%20%28X%2CK%29%20%5BIdx%2CC%5D%3DKmeans%20%28X%2CK%29,%5BIdx%2CC%2CsumD%5D%3DKmeans%20%28X%2CK%29%20%5BIdx%2CC%2CsumD%2CD%5D%3DKmeans%20%28X%2CK%29%20%5D%3D%5B%26Kmeans%20%28%E2%80%A6%2C%E2%80%99Param1%E2%80%99%2CVal1%2C%E2%80%99Param2%E2%80%99%2CVal2%2C%E2%80%A6%29
1.5 matlab求解非线性方程组
例
function x = test1()
x0=[0.5000 0.5000 1.1817 1.1817 1.0000];
x = fsolve(@test2,x0);
end
function F = test2(x)
a1 = 1;
a2 = 2;
a3 = 3;
a4 = 4;
a5 = 5;
eq1 = a1 * x(1) ^ 2 + a2 * x(2);
eq2 = x(1)^3 + a3*x(2);
eq3 = x(3)^2 + x(2)^2 + a2*x(5) + a3*x(1);
eq4 = x(5)^2 + a5*x(3) + x(2)^3 + a2*x(1) + x(1);
eq5 = x(2)^4 + x(1) + a4*x(2);
F = [eq1;eq2;eq3;eq4;eq5];
end
1.6 matlab求解动态规划问题
思想:把大问题分解成小的子问题,记录子问题的解,迭代出大问题的解
例:
二、与excel文件的交互
2.1 读取excel文件数据
x=xlsread(‘D/test.xlsx’)
读取数据和字符串