数学建模和Matlab
鸭脖
爱学习
展开
-
匈牙利算法
匈牙利算法主要用来求解指派问题。过程如下:每一行减去改行最小值,然后看看哪一列上面还没有0,没有的那一列上再减去最小值,然后就找所有不在同一行也不在同一列的0,找到了便找到了最优解,找不到则说明系数矩阵比较特殊,需要做一定的变换 。变换方法如下:从变换后的矩阵中只能选出四个位于不同行不同列的零元素,但 5 = n ,最优指派还无法看出。此时等价变换还可进行下去。步骤如下:原创 2013-01-23 21:16:15 · 1188 阅读 · 0 评论 -
蒙特卡罗算法的matlab实现
蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法。假设我们有个y=x^2的表达式,如何用MC方法求得函数在[0,1]区间的定积分呢?定积分可以用面积来求解,也就是通过求箭头下的面积为了衔接方便,照顾新手,给出作图程序吧x=0:0.01:1;y=x.^2;plot(x,y);MC方法实现非常简单,通过下面的代码就可以st转载 2013-01-30 21:48:47 · 26700 阅读 · 1 评论 -
模拟退火算法举例及其matlab实现
已知敌方100个目标的经度、纬度如表1所示。表1 经度和纬度数据表经度 纬度 经度 纬度 经度 纬度 经度 纬度53.7121 15.3046 51.1758 0.0322 46.3253 28.2753 30.3313 6.9348 56.5432 21.4188 10.8198 16.2529 22.7891 23.1045 10.1584 12.4819原创 2013-01-30 23:24:07 · 26064 阅读 · 0 评论 -
大白话解析模拟退火算法
一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜转载 2013-01-30 23:20:00 · 1365 阅读 · 0 评论 -
模拟退火原理
1.1 算法简介模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。如果用粒子的能量定义材料的状态,Met原创 2013-01-30 23:22:38 · 2353 阅读 · 0 评论 -
遗传算法入门
遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识。 一.进化论知识 作为遗传算法生物背景的介绍,下面内容了解即可: 种群(Population):生物的进化以群体的形式进行,这样的一个群体称转载 2013-01-31 15:41:57 · 1516 阅读 · 0 评论 -
matlab中sort函数的用法
help文档中第一句就说明,可以用sort将参量中的元素按升序或降序排列~格式:B = sort(A) %沿着输入参量 A的不同维的方向、从小到大重新排列 A中的元素。A 可以是字符串的、实数的、复数的单元数组。对于 A 中完全相同的元素,则按它们在 A 中的先后位置排列在一块;若 A 为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间[-π ,π转载 2013-01-31 16:48:09 · 1175 阅读 · 0 评论 -
使用matlab实现遗传算法解决飞行员侦查问题
randData = round(80*rand(25,8));save .\sj.txt randData -asciiclc,clear load sj.txt %加载敌方100个目标的数据x=sj(:,1:2:8);x=x(:); y=sj(:,2:2:8);y=y(:); sj=[x y]; d1=[70,40]; sj0=[d1;sj;d1];原创 2013-01-31 16:52:10 · 2315 阅读 · 3 评论 -
使用Matlab实现AHP算法
clc,clear fid=fopen('txt3.txt','r'); n1=6;n2=3; a=[]; for i=1:n1 tmp=str2num(fgetl(fid)); a=[a;tmp]; %读准则层判断矩阵end for i=1:n1 str1=char(['b',int2str(i),'=[];']); str2=char(['b',原创 2013-02-01 16:42:39 · 6310 阅读 · 1 评论 -
Matlab生成Kruskal最小生成树
%编程工具Matlab;%这是一个通过避圈法求解连通带权图的最小生成树的程序.n=input('请输入图的顶点数目:n= ')W=input('请输入图的加权邻接矩阵:[W(1,1),..,W(1,n);..;W(n,1),..,W(n,n)]=') %用W(i,i)="inf" 代替 "=0"%准备工作T=zeros(n); %最小生成树的加权邻接矩阵 WW=W;原创 2013-02-02 12:18:03 · 7487 阅读 · 6 评论 -
Matlab-音乐-卡农
function Canon% Cripple Pachebel's Canon on Matlab% Have funfs = 44100; % sample ratedt = 1/fs;T16 = 0.125;t16 = [0:dt:T16];[temp k] = size(t16);t4 = linspace(0,4*T16,4*k);t8转载 2013-01-29 23:21:23 · 5001 阅读 · 2 评论 -
【MATLAB】读取和写入文本文件
在MATLAB中,来读取和写入文本文件是很简单的事。下面,就来简单介绍下。如果有其他问题,请留言。一、读取文本文件思路:1、用fopen来打开一个文件句柄2、用fgetl来获得文件中的一行,如果文件已经结束,fgetl会返回-13、用fclose来关闭文件句柄比如,TIM_Grid_Data.txt的内容如下:0.1 0.1 151.031转载 2013-01-28 15:16:13 · 33489 阅读 · 1 评论 -
MATLAB常用基本数学函数
abs(x) 变量的绝对值或者向量的长度angle(z) 复数z的相角(PhaseAngle)sqrt(x) 开平方real(z) 复数z的实部imag(z) 复数z的虚部conj(z) 复数z的共轭复数round(x) 四舍五入至最近整数fix(x) 无论正负,舍去小数至最近整数flo转载 2013-01-28 14:22:12 · 1137 阅读 · 0 评论 -
数学建模竞赛中应当掌握的十类算法
1 十类常用算法 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。 3. 线性规划、转载 2013-01-22 21:09:50 · 3491 阅读 · 0 评论 -
线性规划法及其整数规划
线性规划的目的也不用说,注意matlab中的linprog函数以及各种重载的形式。那么这其中用到的方法主要有匈牙利法求已经给出指派系数矩阵的最优化问题。另外,注意很多问题可以转换为线性规划问题。思考如何将其他问题转换为线性规划问题。然后便是整数的线性规划,显然这依赖于以非整数线性规划的方式求的的最优解。如果最优解刚好是整数,那么便不用再做其他工作了,如果无解,那么也无解,如原创 2013-01-24 01:44:09 · 3551 阅读 · 0 评论 -
浅谈动态规划法与贪心法和回溯法的联系
今天在建模的时候又回头看了看自己的算法课本,真是温故而知新。这里,我主要想从树的角度来探讨一下这三类算法。首先我想说的是,当你看到一个算法的时候,脑子里必须要有一个实例立马出现,这样才说明你对这个算法算是有点掌握,否则看到一个算法的时候,乱七八糟的算法一下子都出来了,那么说明你并没有很好的理解这些算法,而是把他们搅在一起了。那么看到这三种算法,你应该有所出现:贪心法是动原创 2013-01-25 15:29:46 · 6789 阅读 · 1 评论 -
排队论和对策论(博弈论)
排队论就是你算算各个指标,然后分析一下系统的好坏,没啥意思。对策论倒还有点意思,记住几个术语,局中人,策略集,以及零和对策,赢得函数以及赢得矩阵。一般根据赢得矩阵来评估局中人哪个更占优势。原创 2013-01-25 16:37:07 · 2738 阅读 · 0 评论 -
层次分析法 插值与拟合
层次分析又是很水的一章。插值和拟合是比较重要的。插值指的是你弄出来的这个函数必须要过给出的这几个点,而拟合则不要求过这些点,这要求离得最近。拟合中常用的方法有最小二乘法,就是求导然后构造方程组求参数。matlab中有关数据拟合的函数和工具很多。原创 2013-01-25 19:27:34 · 817 阅读 · 0 评论 -
非线性规划
非线性规划主要采用的方法是:斐波那契算法缩短最短区间,0.618法,二次插值算法。也可以采用matlab中的函数来解决此类问题。原创 2013-01-25 14:24:37 · 1035 阅读 · 1 评论 -
Matlab中的plot函数
本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。5.1 二维平面图形5.1.1 基本图形函数plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制曲线。当x转载 2013-01-27 16:14:29 · 3294 阅读 · 0 评论 -
matlab 基本语句
matlab 基本语句1.循环语句forfor i=s1:s3:s2 循环语句组end解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i转载 2013-01-27 17:48:41 · 19331 阅读 · 0 评论 -
关于matlab生成随机数
一,matlab中生成随机数主要有三个函数:rand, randn,randi1,rand 生成均匀分布的伪随机数。分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single' rand(Ra转载 2013-01-27 19:07:37 · 10194 阅读 · 0 评论 -
采用动量梯度下降算法训练 BP 网络
例1 采用动量梯度下降算法训练 BP 网络。训练样本定义如下:输入矢量为 p =[-1 -2 3 1 -1 1 5 -3]目标矢量为 t = [-1 -1 1 1]解:本例的 MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对原创 2013-02-02 15:00:23 · 4146 阅读 · 0 评论