HDU4865

意: 真难解释清楚,给你一个海藻的状态序列,让你找出一个最有可能的天气序列,前一天的天气能影响今天的天气,海藻的状态受天气的影响。
(从题目中应该是读不出他是怎样影响的,具体看下面的推荐的链接) 
思路: 这其实是隐马尔可夫模型(HMM)的一个应用,根据可观察状态的序列找到一个最可能的隐藏状态序列,
隐马尔可夫模型介绍见这里:点击打开链接 dp[i][j]表示第i天天气为j的概率,
dp[i][j]=dp[i-1][k]*wea[k][j]*lea[j][num[i]],记录路径,最后输出最有可能的路径,
根据最后一天的概率来看。 
#include<iostream>
#include<cmath>//A了 
#include <cstdio> 
#include <cstring> 

using namespace std;
double aa[3][4]={0.6, 0.2, 0.15, 0.05, 0.25, 0.3, 0.2, 0.25, 0.05, 0.10, 0.35, 0.50};
double bb[3][3]={0.5, 0.375, 0.125, 0.25, 0.125, 0.625, 0.25, 0.375, 0.375};
int t,n;
double dp[55][3];
int pre[55][3];
int ans[55];
int ca;
int lea[55]; 

int main()
{
	

for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
	aa[i][j]=log(aa[i][j]);
}
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
	bb[i][j]=log(bb[i][j]);
}

while(cin>>t)
{
	if(t==0)
	break;
	while(t--)
	{
		cin>>n;
		for(int i=0;i<n;i++)
		{
			char s[22]; 
			scanf("%s",s); 
			if(strcmp(s,"Dry")==0) lea[i]=0; 
			else if(strcmp(s,"Dryish")==0) lea[i]=1; //这里的方法挺不错的 
			else if(strcmp(s,"Damp")==0) lea[i]=2; 
			else lea[i]=3;
		}
		dp[0][0]=log(0.63)+aa[0][lea[0]];
		dp[0][1]=log(0.17)+aa[1][lea[0]];
		dp[0][2]=log(0.20)+aa[2][lea[0]];
	
		for(int i=1;i<n;i++)//第0天已经有了 
		for(int j=0;j<3;j++)
	    {
			double ma=-1e8; //是1非l 
			int idx;
			for(int k=0;k<3;k++)
		{
			if(dp[i-1][k]+aa[j][lea[i]]+bb[k][j]>ma)
			{
			ma=dp[i-1][k]+aa[j][lea[i]]+bb[k][j];
		    idx=k;
			}
			
		}
		    pre[i][j]=idx;
			dp[i][j]=ma;
	    }
	     double ma=-1e8;int idx;
	     for(int j=0;j<3;j++)
	     {
	     	if(dp[n-1][j]>ma)
	     {
	        ma=dp[n-1][j];
	     	idx=j;
	     }
		 }
		 ans[n-1]=idx;
		 for(int i=n-1;i>0;i--)
		 {
		 	ans[i-1]=pre[i][idx];//前一天等于后一天的之前的最可能的天气,倒着递归。 
		    idx=pre[i][idx]; //天气转为i-1天的天气,再往前推 
		} 
		printf("Case #%d:\n",++ca); 
		for(int i=0;i<n;++i)
		{ 
		if(ans[i]==0)puts("Sunny"); 
		else if(ans[i]==1)puts("Cloudy"); 
		else puts("Rainy"); 
		}
	    
	}
	
}return 0;
}

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
基于粒子群算法优化Kmeans聚类的居民用电行为分析研究(Matlb代码实现)内容概要:本文围绕基于粒子群算法(PSO)优化Kmeans聚类的居民用电行为分析展开研究,提出了一种结合智能优化算法与传统聚类方法的技术路径。通过使用粒子群算法优化Kmeans聚类的初始聚类中心,有效克服了传统Kmeans算法易陷入局部最优、对初始值敏感的问题,提升了聚类的稳定性和准确性。研究利用Matlab实现了该算法,并应用于居民用电数据的行为模式识别与分类,有助于精细化电力需求管理、用户画像构建及个性化用电服务设计。文档还提及相关应用场景如负荷预测、电力系统优化等,并提供了配套代码资源。; 适合人群:具备一定Matlab编程基础,从事电力系统、智能优化算法、数据分析等相关领域的研究人员或工程技术人员,尤其适合研究生及科研人员。; 使用场景及目标:①用于居民用电行为的高效聚类分析,挖掘典型用电模式;②提升Kmeans聚类算法的性能,避免局部最优问题;③为电力公司开展需求响应、负荷预测和用户分群管理提供技术支持;④作为智能优化算法与机器学习结合应用的教学与科研案例。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,深入理解PSO优化Kmeans的核心机制,关注参数设置对聚类效果的影响,并尝试将其应用于其他相似的数据聚类问题中,以加深理解和拓展应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值