首先:这不是关于如何让节目连续播放的问题.去过也做过.
我做了一个五行的游戏作为一个框架,试验基因改进AI(哎呀,这听起来非常自命不凡).与大多数回合制游戏一样,最佳动作是通过为每个可能的动作分配分数,然后以最高分数进行动作来决定.将分数分配给移动(正方形)的功能如下:
如果正方形已有令牌,则得分为0,因为在正方形中放置新令牌是非法的.
每个方格可以是多达20个不同获胜行的一部分(5个水平,5个垂直,10个对角线).平方的得分是这些行中每一行的得分之和.
连续得分取决于行中已有的友方和敌方令牌的数量.例子:
鉴于此算法,我已经声明了一个名为TBrain的类型:
type
TBrain = array[cFriendly..cEnemy , 0..4] of integer;
Run Code Online (Sandbox Code Playgroud)
数组中的值表示具有N个友好令牌和0个敌人令牌的行的分数,或0个友好令牌和N个敌人令牌.如果连续有5个令牌,那么因为该行已满,所以没有得分.
实际上很容易确定数组中应该包含哪些值.Brain [0,4](四个友方代币)应该是"无限",让我们称之为1.000.000.vBrain [1,4]应该非常高,但不要太高,以至于大脑更愿意阻止几个敌人胜利而不是自我胜利
以下(不可能的)董事会:
0123456789
+----------
0|1...1...12
1|.1..1..1.2
2|..1.1.1..2
3|...111...2
4|1111.1111.
5|...111....
6|..1.1.1...
7|.1..1..1..
8|1...1...1.
Run Code Online (Sandbox Code Playgroud)
玩家2应该将他的令牌放入(9,4),赢得游戏,而不是(4,4),即使他会阻止玩家1的8个潜在获胜行.Ergo,vBrain [1,4]应该是(vBrain) [0,4]/8)-1.像这样工作,我们可以找到"大脑"的最佳值,但同样,这不是我感兴趣的.我想要一个算法来找到最佳值.
我已经实现了这个框架,因此它完全是确定性的.分数中没有添加随机值,如果几个方格具有相同的分数,则会选择左上角.
这是介绍,现在到有趣的部分(对我来说,至少)
我有两个"大脑",vBrain1和vBrain2.我应该如何迭代地使这些变得更好?我想象这样的事情:
这似乎不起作用.大脑并没有变得更聪明.为什么?
分数方法是否应该为结果添加一些小的随机值,以便同一个两个大脑之间的两场比赛会有所不同?每次迭代的值应该改变多少?应该如何初始化"大脑"?有恒定的价值?随机值?
此外,这与AI或遗传算法有什么关系吗?
PS:这个问题与五连胜无关.这只是我选择的东西,因为我可以宣布一个非常简单的"大脑"进行实验.
如何在ASP.NET MVC操作中获取引用者URL?我在调用操作之前尝试重定向回页面.
在我正在开发的iPhone应用程序中,有一个设置可以输入URL,因为形式和功能,此URL需要在线和离线验证.
到目前为止,我还没有找到任何验证网址的方法,所以问题是;
如何在线和离线验证iPhone(Objective-C)上的URL输入?
.NET分析器可以显示对托管对象的引用计数。他们如何计算它们?
.net garbage-collection memory-management reference-counting
如果我有一个像这样非常非常简单的例子的表:
table {
table-layout:fixed;
width:300px;
}
.td1 {
width:100px;
}
.td2 {
width:200px;
}
Run Code Online (Sandbox Code Playgroud)
我的其中一张.td2
包含一张图像,可以说,300px
在width
。我想显示滚动条以允许用户滚动以查看全部内容。但我认为这是不可能的,是吗?
所以我的问题是:
hidden
除了处理表中的溢出之外还有其他选择吗?
是否可以仅当内容超出设定宽度时才显示滚动条?(我发誓我在一些论坛软件中见过它,但我不记得是哪一个了)
如何用C++或C#编写在Windows Vista上启动应用程序的程序?
例如,启动Dreamweaver CS 4("C:\ Program Files\Adobe\Adobe Dreamweaver CS4\Dreamweaver.exe")并使用BringWindowToTop函数将其置于顶部?
如果我有这样的全局变量列表......
int a;
char b;
float c[10];
double d[3];
Run Code Online (Sandbox Code Playgroud)
我在类中列出了相同的变量序列......
class test_type
{
int a;
char b;
float c[10];
double d[3];
}
Run Code Online (Sandbox Code Playgroud)
是否保证内存中所有变量的排列是相同的.ie'b'保证在全局列表和类列表中的'a'之后立即存储?
编辑:我问,因为我想A)将数据从一个复制到另一个作为"工作批次"和B)我想检查它们之间作为工作批次的任何差异.如果主要问题的答案是"否",那么是否有人对如何解决问题有任何建议,最好尽可能保持现有代码不变.
我使用itextsharp创建了一个示例项目.在那里我提到了页脚和一个表,我按循环为给定的数字生成行,如果表拆分到另一页然后,我有一个没有给定数据的空白页.它似乎未定义.
这是代码:
PdfWriter.GetInstance(document, New FileStream(ConfigurationManager.AppSettings("PDFPath") & fileName, FileMode.Create))
Dim FooterFont As Font = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12, Font.BOLD)
Dim FooterTxt As Phrase = New Phrase(Format(Now, "MM/dd/yyyy") )
Dim footer As New HeaderFooter(FooterTxt, True)
footer.Border = iTextSharp.text.Rectangle.TOP_BORDER
document.Footer = footer
document.Open()
Dim tblbody As New iTextSharp.text.Table(2)
tblbody.SpaceInsideCell = 1
tblbody.WidthPercentage = 100
tblbody.Border = 0
for i as integer=0 to 150
Dim cell = New Cell(New Phrase(i, New Font(Font.TIMES_ROMAN, 12, "" & CellStyle & "", iTextSharp.text.Color.BLACK)))
cell.Colspan = Span
cell.Border = CellBorder
cell.HorizontalAlignment …
Run Code Online (Sandbox Code Playgroud) 有没有更好的方法来执行这样的查询:
SELECT COUNT(*)
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
FROM DocumentOutputItems) AS internalQuery
Run Code Online (Sandbox Code Playgroud)
我需要计算此表中不同项目的数量,但不同的是超过两列.
我的查询工作正常,但我想知道我是否只使用一个查询得到最终结果(不使用子查询)