问题列表 - 第13986页

我应该使用什么算法进行"遗传AI改善"

首先:这不是关于如何让节目连续播放的问题.去过也做过.

介绍性解释

我做了一个五行的游戏作为一个框架,试验基因改进AI(哎呀,这听起来非常自命不凡).与大多数回合制游戏一样,最佳动作是通过为每个可能的动作分配分数,然后以最高分数进行动作来决定.将分数分配给移动(正方形)的功能如下:

  1. 如果正方形已有令牌,则得分为0,因为在正方形中放置新令牌是非法的.

  2. 每个方格可以是多达20个不同获胜行的一部分(5个水平,5个垂直,10个对角线).平方的得分是这些行中每一行的得分之和.

  3. 连续得分取决于行中已有的友方和敌方令牌的数量.例子:

    • 有四个友方令牌的行应该有无限分数,因为如果你在那里放置一个令牌,你就赢了游戏.
    • 具有四个敌人令牌的行的得分应该非常高,因为如果你没有在那里放置一个令牌,则对手将在下一回合获胜.
    • 具有友方和敌方令牌的行将得0,因为此行永远不会成为获胜行的一部分.

鉴于此算法,我已经声明了一个名为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.我应该如何迭代地使这些变得更好?我想象这样的事情:

  1. 使用随机值初始化vBrain1和vBrain2.
  2. 模拟他们之间的游戏.
  3. 将赢家的值分配给输家,然后稍微改变其中一个.

这似乎不起作用.大脑并没有变得更聪明.为什么?

分数方法是否应该为结果添加一些小的随机值,以便同一个两个大脑之间的两场比赛会有所不同?每次迭代的值应该改变多少?应该如何初始化"大脑"?有恒定的价值?随机值?

此外,这与AI或遗传算法有什么关系吗?

PS:这个问题与五连胜无关.这只是我选择的东西,因为我可以宣布一个非常简单的"大脑"进行实验.

algorithm artificial-intelligence genetic-algorithm

7
推荐指数
2
解决办法
1238
查看次数

如何在ASP.NET MVC操作中获取引用者URL?

如何在ASP.NET MVC操作中获取引用者URL?我在调用操作之前尝试重定向回页面.

asp.net-mvc redirect referrer

83
推荐指数
3
解决办法
8万
查看次数

如何在iPhone上验证网址

在我正在开发的iPhone应用程序中,有一个设置可以输入URL,因为形式和功能,此URL需要在线和离线验证.

到目前为止,我还没有找到任何验证网址的方法,所以问题是;

如何在线和离线验证iPhone(Objective-C)上的URL输入?

iphone url xcode objective-c ios

89
推荐指数
6
解决办法
7万
查看次数

如何获得被管理对象的引用计数?

.NET分析器可以显示对托管对象的引用计数。他们如何计算它们?

.net garbage-collection memory-management reference-counting

2
推荐指数
1
解决办法
939
查看次数

处理表中的溢出

如果我有一个像这样非常非常简单的例子的表:

table {
    table-layout:fixed;
    width:300px;
}

.td1 {
    width:100px;
}
.td2 {
    width:200px;
}
Run Code Online (Sandbox Code Playgroud)

我的其中一张.td2包含一张图像,可以说,300pxwidth。我想显示滚动条以允许用户滚动以查看全部内容。但我认为这是不可能的,是吗?

所以我的问题是:

  1. hidden除了处理表中的溢出之外还有其他选择吗?

  2. 是否可以仅当内容超出设定宽度时才显示滚动条?(我发誓我在一些论坛软件中见过它,但我不记得是哪一个了)

html css overflow css-tables

4
推荐指数
1
解决办法
2万
查看次数

如何使用C++或C#为Windows Vista编写启动程序

如何用C++或C#编写在Windows Vista上启动应用程序的程序?

例如,启动Dreamweaver CS 4("C:\ Program Files\Adob​​e\Adob​​e Dreamweaver CS4\Dreamweaver.exe")并使用BringWindowToTop函数将其置于顶部?

c# c++ windows-vista

3
推荐指数
1
解决办法
2102
查看次数

在内存中存储变量

如果我有这样的全局变量列表......

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)我想检查它们之间作为工作批次的任何差异.如果主要问题的答案是"否",那么是否有人对如何解决问题有任何建议,最好尽可能保持现有代码不变.

c++ memory-management

4
推荐指数
2
解决办法
1021
查看次数

gdb调试器最棘手/最有用的命令

你可以在运行像gdb或dbx这样的调试器时发布最棘手和最有用的命令.

c unix debugging gdb dbx

136
推荐指数
8
解决办法
4万
查看次数

ItextSHARP表拆分问题

我使用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)

split itext

2
推荐指数
1
解决办法
5661
查看次数

在多列上计算DISTINCT

有没有更好的方法来执行这样的查询:

SELECT COUNT(*) 
FROM (SELECT DISTINCT DocumentId, DocumentSessionId
      FROM DocumentOutputItems) AS internalQuery
Run Code Online (Sandbox Code Playgroud)

我需要计算此表中不同项目的数量,但不同的是超过两列.

我的查询工作正常,但我想知道我是否只使用一个查询得到最终结果(不使用子查询)

sql t-sql sql-server

184
推荐指数
9
解决办法
41万
查看次数