本文实例讲述了C语言实现运筹学中的马氏决策算法。分享给大家供大家参考,具体如下:

一、概述
马氏决策(Markov decision)是马尔可夫决策过程(Markov Decision Processes,简记为MDP)的简称,是研究随机序贯决策问题的一门重要理论。马氏决策是一类可连续进行观察的随机动态系统的最优化决策,它将(确定性)动态规划与马尔可夫过程相结合,是随机离散事件动态系统惟一的动态控制方法。
关于马氏决策的具体说明可参考百度百科:https://baike.baidu.com/item/%E9%A9%AC%E6%B0%8F%E5%86%B3%E7%AD%96
二、实现代码
#include<stdio.h>
#include<cstdlib>
#define N 100
float p[N][N],s[N][N],a[N],b[N];
int o;
void set_TPM() //输入转移概率矩阵(Transition Probability Matrix)
{ int i,j;
printf("Please input Number of State:");
scanf("%d",&o);
for(i=0;i<o;i++)
for(j=0;j<o;j++)
{
printf("Please input state%d,state%d:",i,j);
scanf("%f",&p[i][j]);
rewind(stdin);
}
}
void set_Initial_Prob() //输入初始概率状态(Initial Probability)
{
int i;
for(i=0;i<o;i++)
{
printf("Please input state%d Initial Prob:",i);
scanf("%f",&a[i]);
rewind(stdin);
}
}
void run_Markov(int count) //Markov主算法
{
int i,j,k;
float c[N];
for(i=0;i<o;i++) c[i]=a[i];
for(k=0;k<count;k++)
{
for(i=0;i<o;i++)
for(j=0;j<o;j++)
{
s[i][j]=p[i][j]*c[i];
}
for(i=0;i<o;i++)
{
b[i]=0;
for(j=0;j<o;j++)
{
b[i]=b[i]+s[j][i];
}
c[i]=b[i];
}
}
for(i=0;i<o;i++) c[i]=0;
}
void print_Result() //输出周期结果
{
int i,j;
for(i=0;i<o;i++)
for(j=0;j<o;j++)
{
printf(" %f",s[i][j]);
if(j==2) printf("/n");
}
for(i=0;i<o;i++)
{
printf(" %f",b[i]);
}
printf("/n");
}
main() //主函数
{
int a,count,i,j;
for(count=0;;)
{
printf("Create New Project:/n");
set_TPM();
set_Initial_Prob();
for(;;)
{
printf("***********************************/n"); //展示选择菜单
printf("1.Times periods from initial./n");
printf("2.Next Period./n");
printf("3.Create New Porject./n");
printf("4.Exit./n/n");
printf("**********************************/n");
printf("Please input your choose:/n");
scanf("%d",&a);
rewind(stdin);
if(a==3) break;
switch(a)
{
case 1:
printf("Input number of time periods from initial:/n");
scanf("%d",&count);
rewind(stdin);
run_Markov(count);
print_Result();
break;
case 2:
run_Markov(count++);
print_Result();
break;
case 4: exit(1);
default: printf("Error choose!!/n");break;
}
}
}
system("pause");
}
希望本文所述对大家C语言程序设计有所帮助。
# C语言
# 运筹学
# 马氏决策
# 算法
# C语言数据结构之二叉树的非递归后序遍历算法
# 必须知道的C语言八大排序算法(收藏)
# C语言基本排序算法之桶式排序实例
# C语言基本排序算法之shell排序实例
# C语言排序算法之冒泡排序实现方法【改进版】
# C语言基本排序算法之插入排序与直接选择排序实现方法
# C语言实现文件内容按行随机排列的算法示例
# c语言实现基数排序解析及代码示例
# 马氏
# 马尔
# 简记
# 可夫
# 给大家
# 一门
# 它将
# 所述
# 最优化
# 学中
# 讲述了
# AC
# baike
# https
# baidu
# item
# brush
# class
# cpp
# lt
相关文章:
购物网站制作公司有哪些,哪个购物网站比较好?
如何通过VPS搭建网站快速盈利?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何快速搭建支持数据库操作的智能建站平台?
建站之星多图banner生成与模板自定义指南
C++如何编写函数模板?(泛型编程入门)
如何通过可视化优化提升建站效果?
如何高效完成独享虚拟主机建站?
江苏网站制作公司有哪些,江苏书法考级官方网站?
专业网站建设制作报价,网页设计制作要考什么证?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
建站之星会员如何解锁更多建站功能?
网站按钮制作软件,如何实现网页中按钮的自动点击?
建站上传速度慢?如何优化加速网站加载效率?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何在景安服务器上快速搭建个人网站?
网站制作免费,什么网站能看正片电影?
定制建站流程解析:需求评估与SEO优化功能开发指南
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何通过主机屋免费建站教程十分钟搭建网站?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
,网页ppt怎么弄成自己的ppt?
宝塔建站助手安装配置与建站模板使用全流程解析
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何通过山东自助建站平台快速注册域名?
香港网站服务器数量如何影响SEO优化效果?
如何用虚拟主机快速搭建网站?详细步骤解析
如何通过网站建站时间优化SEO与用户体验?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
广平建站公司哪家专业可靠?如何选择?
如何快速搭建个人网站并优化SEO?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
动图在线制作网站有哪些,滑动动图图集怎么做?
建站之星logo尺寸如何设置最合适?
ppt制作免费网站有哪些,ppt模板免费下载网站?
css网站制作参考文献有哪些,易聊怎么注册?
建站之星在线版空间:自助建站+智能模板一键生成方案
如何通过服务器快速搭建网站?完整步骤解析
建站之星如何通过成品分离优化网站效率?
盐城做公司网站,江苏电子版退休证办理流程?
制作网站的软件免费下载,免费制作app哪个平台好?
音乐网站服务器如何优化API响应速度?
建站之星安装提示数据库无法连接如何解决?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在建站之星网店版论坛获取技术支持?
*请认真填写需求信息,我们会在24小时内与您取得联系。