数学建模系列-优化模型---(一)规划模型

数学建模中我们经常遇到的一种问题是给定一些条件,目标是求得基于单或者多自变量的某个条件之的最优结果。

一、线性规划模型
给定多个条件,求某一个线性方程的最大值。(对与这种问题,我们一般采用的是最普通的图像法,在坐标系中标出我们需要的条件范围,采用直线逼近求最顶点的距离和对应的冲量)。

二、非线性规划
球的是某一个非线性方程的最大值,凸优化的思想也是来源于次,目标可能是局部最优而非全局最优了。

三、0-1规划
0-1规划中,所有未知量的取值只能是0或1,应用于任务分配场景。

以上三种都可以直接用Matlab工具箱直接解决。

目标规划模型
线性规划模型只能解决一组线性约束条件下的最大或最小值的问题。目标规划模型用来解决多目标优化的模型。

思路:
1.用评价模型的思想,各项加权转化为单目标优化
2.用不同的优先等级,分为前后数次单目标优化
3.有效解法,可以参考20年省赛题定向越野,其中就只需要我们得到一个可行解即可,可以采用模拟退火算法获得局部近似最优解啊。

matlab多目标优化直接法:

[x,fval]= fgoalattain('fun',x0,goal,weight)           
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b)           
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)           
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
———————————————
function F=Fun(x); 
 
F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); 
 
F(2)=3*x(2)+2*x(4);

a=[-1 -1  0  0    
   0  0  -1 -1    
   3  0   2  0    
   0  3   0  2]; 
b=[-30 -30 120 48]'; 
c1=[-100 -90 -80 -70]; 
c2=[0 3 0 2]; 
[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1))  %求第一个目标函数的目标值 
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1))  %求第二个目标函数的目标值 
g3=[g1;g2]  %目标goal的值 
[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1)) 
%这里权重weight=目标goal的绝对值
原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932```
这个其实也是给权重的一种思想

**动态规划**

动态规划是规划模型里面较难的一个。可如此做
动态规划的应用范围:
1.方法计数(如TSP问题总共有多少条路经,有多少种方法取k个值达到sum2.求最大值最小值(如TSP问题最长或最短路径)
3.求存在性(如是否存在必胜策略,以及是否能求的特定的sum等。)
因此,动态规划从底层逻辑上来看更像是一种高级算法的思想。

算法步骤:
1,确定状态(两个核心:1最后一步 2化成子问题)
2转移方程
3开始和边界条件
4计算顺序

1.1 最后一步:
图论里有一种很厉害的思想:如果我这一条路线是最短的,那么去掉最后一步的前n-1跳的路线也是最短的。

1.2思想就是根据最后一步有多少种情况,然后分别推演,把优化问题扔给上一步。比如付钱模型,怎么样付钱使得我的硬币最少,那么在最少的方法中。我除了最后一枚硬币,前面的数量应该也是最少的。

转化为:假入最后一枚的面值(lujing)有n条,那么模型可以写为
f(n)=min{f(x-n1)+n1,f((x-n2)+n2,f(x-n3)+n3};


2.初始条件f(0)=0;边界条件算当f(Y<0)时怎么做,另外,f(Y)无解时,置+无穷


详见https://blog.csdn.net/sinat_19594515/article/details/102738781?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163012761716780366559677%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163012761716780366559677&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-102738781.pc_search_result_control_group&utm_term=%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92&spm=1018.2226.3001.4187
动态规划更像是递归得反推。


小结:
所有规划模型说白了,就是给他简化为单目标优化。动态规划一般应用于图论问题,在这种规划模型中只是有应用场景。


你可能感兴趣的:(数学建模系列+算法系列,动态规划,matlab,算法)