我正在制作的游戏有问题。我想我知道解决方案(或适用什么解决方案),但不确定所有“部分”如何组合在一起。
游戏的工作方式:
(来自How to approach number guessing game(with a twist) algorithm?)
将为用户提供带有值的商品(值每天都会更改,并且程序会意识到价格的变化)。例如
Apple = 1
Pears = 2
Oranges = 3
Value quantity(day1) value(day1)
Apple 1 100 100
Pears 2 20 40
Orange 3 1 3
Total 121 143
quantity(day2) %change(day2) value(day2) quantity(day3) %change(day3) value(day3)
104 104 106 106
21 42 23 46
2 6 4 12
127 4.96% 152 133 4.72% 164
最佳答案
就像您说的那样,可以使用HMM来描述此问题。您实际上对保持潜在状态或隐藏状态的分布感兴趣,这是每个时间点的真实数量。但是,与仅在已知HMM中进行推论相反,似乎让您迷惑了为HMM学习参数的问题。您有后一个问题,但建议采用一个解决方案(Baum-Welch)来设计前一个问题。也就是说,您已经有了模型,只需要使用它即可。
有趣的是,如果您针对问题进行离散HMM编码,则所获得的算法与图论解决方案中描述的算法非常相似。最大的区别是您的解决方案正在跟踪可能是的可能性,而正确的推理算法(例如Virterbi algorithm)将跟踪可能是的东西。当域的5%范围内有重叠时,也就是说,当多个可能的状态可能潜在地转换为同一状态时,差异显而易见。您的算法可能会在一条点上增加2条边,但是我怀疑当您计算第二天有效果时(本质上应该计算两次)。
无论如何,您可以使用Viterbi算法,如果您只对最近一天的最佳猜测感兴趣,那么我只是给您一个简短的想法,您可以如何修改图形理论解决方案。代替维持状态之间的边缘,而是保留代表状态正确的概率的分数(此分布有时称为置信状态)。在每个新的一天,通过将每个存储桶作为父项的概率递增(而不是通过添加浮点数来增加边沿)来传播您的信念状态。您还必须确保您的信念状态已正确归一化(总和为1),因此在每次更新后只需除以其总和即可。之后,您可以通过观察加权每个状态,但是由于您没有嘈杂的观察,因此您可以将所有不可能的状态设置为零概率,然后重新进行归一化。现在,您可以根据观测条件分配基础数量。
我在这里跳过了很多统计细节,只是为了给您一个想法。
编辑(回复:问题):
您问题的答案实际上取决于您想要的内容,如果您只希望获得最近一天的分布,则可以采用我所描述的一遍算法。但是,如果您想在每一天对数量进行正确的分配,则还必须进行向后传递。因此,恰当地命名为forward-backward algorithm。我感觉到,由于您希望退后一步并删除边线,因此您可能希望整天都进行分配(与我最初假设的不同)。当然,您已经注意到可以使用一些信息,以便可以说“ future 可以告知过去”,这正是您也需要进行反向传递的原因,您仅拥有的并不复杂从链的末尾开始运行完全相同的算法。要获得良好的概述,请在videolectures.net上查看Christopher Bishop的6篇教程。
因为您提到了添加/删除边,所以让我只是澄清一下我先前描述的算法,请记住,这是针对单次向前通过。假设总共有N个可能的数量置换,那么您将拥有一个信念状态,该状态为长度为N个元素的稀疏向量(称为v_0)。第一步,您将得到和的观测值,然后通过将所有可能的值设置为概率为1.0来填充矢量,然后重新进行归一化。下一步,您将创建一个全为0的新稀疏向量(v_1),迭代v_0中的所有非零条目,并递增(按v_0中的概率)v_1中所有5%之内的条目。然后,根据新观察将v_1中所有不可能的条目清零,然后重新规范化v_1并丢弃v_0。永远重复一次,v_1将永远是可能性的正确分配。
顺便说一句,如果您有嘈杂的观察结果,非常大的状态或连续状态,那么事情会变得比这更复杂。因此,很难阅读一些有关统计推论的文献。这很一般。
关于python - 将机器学习应用于猜谜游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057936/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht