1 Introduction 想象一下,在一场拍卖会上,有四位著名艺术家的画作,分别是:毕加索、梵高、伦勃朗和达芬奇。毕加索、梵高、伦勃朗和达芬奇。在拍卖室里,拍卖师将每幅作品展示给大家,然后所有的竞拍者在一张密封的秘密纸条上写下他们对该物品的出价,并交给拍卖师。然后,拍卖师宣布出价最高的竞拍者为赢家,收取款项(相当于他们的出价或出价第二高的竞拍者的出价,视拍卖情况而定),并开始下一轮新的物品。如果有目标藏品要买,则第一个买下这捆物品的竞拍者终止拍卖并获胜。否则,拍卖继续进行,直到没有更多的物品可以出售。如果没有目标画束,拥有总价值最高的画作的竞拍者为赢家。 2 The Game Copyright By PowCoder代写 加微信 powcoder 这是一个广泛的游戏,同时的动作编码为拍卖,按顺序进行。游戏的运行方式如下。拍卖师初始化一个充满机器人的房间,然后设置拍卖。这包括给每个机器人相同的预算,设置要出售的物品的顺序,并设置拍卖规则,如如何决定游戏的总赢家。 拍卖师会宣布要竞拍的物品类型,并询问机器人的出价。你的机器人将使用拍卖师提供的信息,包括其他玩家到目前为止的状态,来决定出价的金额。一旦所有机器人出价,拍卖师将宣布出价最高者为赢家,然后他将被收取一笔款项(不一定是他们出价的金额,见下文),并收到物品。如果有多个出价最高的人,则从这些竞拍者中随机选出获胜者。每一轮最多只有一个赢家。 拍卖会将继续进行,直到没有更多的物品出售,或者有一个设定的获胜条件,例如,一个竞拍者成功地获得了所需的艺术家画作的目标收藏,在这种情况下,他们被宣布为获胜者。如果没有目标藏品作为中标条件,那么当所有画作售出后,拍卖会就会结束,最后以物品总价值最高的竞拍者为赢家。 然而,请注意,虽然出价最高的人总是会赢,但拍卖会可以设置为最高出价者不支付自己的出价。也可以设置成最高出价者只需支付第二高的出价(见赢家支付)。 您将在您的机器人中写下您的策略。您的机器人将在一系列难度和数量不同的机器人拍卖中接受测试。最后,您的机器人将在比赛中互相测试。 有两种类型的游戏将进行。 最后总价值最高的人获胜,出价最高的人支付第二高的价格。毕加索价值2,梵高价值11,伦勃朗价值23,达芬奇价值47。 先收集到指定的一捆画作,出价最高者自付标价。收藏包的最低条件将是任何艺术家的3幅画,另一个艺术家的2幅画和另一个艺术家的1幅画。例如,3个达芬奇,2个毕加索,1个伦勃朗;或者4个达芬奇,4个伦勃朗,1个毕加索。 需要注意的是,本次比赛的所有场次,拍卖规模(拍卖画作数量)为200幅,每位竞拍者的起拍预算为1001元。 3 Implementation 我们为您提供了两个主要的Python 3文件来运行拍卖:Auctioneer.py和arena.py。我们还在 bots 文件夹中为您提供了一些示例机器人,random_bot.py, flat_bot_10.py和 u1234321.py。 3.1 auctioneer.py auctioneer.py包含了Auctioneer类的定义,用于设置和运行拍卖。我们在标记您的机器人时将使用这个完全相同的文件,所以不要改变这个文件中的任何代码。 游戏类型(string)。2种游戏类型中的 “价值 “或 “收集”。价值游戏由所有回合后拥有最高价值的机器人获胜。收集游戏是当机器人成功收集到目标收藏品中指定的全套画作时获胜。 房间(模块列表)。一个 “房间 “是一个将进行拍卖的机器人列表。这些机器人是模块对象。在 auctioneer.py 文件的顶部有一个如何导入它们的例子,在 auctioneer.py 文件的底部有一个如何将它们作为列表传递给拍卖者的例子。在arena.py文件中也有例子。 绘画顺序(字符串列表)。将在每轮拍卖中拍卖的绘画类型的顺序列表。如果将此设置为None,则将使用随机顺序。 目标集合(整数列表)。对于收集类型的游戏,获胜的机器人是第一个赢得画作收集的人。这是作为一个列表给出的。例如,[3,2,1]意味着获胜者是第一个收集到至少3幅一个艺术家的画作,2幅另一个艺术家的画作和1幅另一个艺术家的画作的机器人。具体的艺术家并不重要。因此,3幅达文西、2幅毕加索和1幅伦勃朗会获胜,3幅伦勃朗、2幅梵高和1幅达文西也会获胜。注:这些策略将根据[3,2,1]的目标收藏进行评估。 slowdown(float): 每一轮拍卖的等待时间。如果您将此设置为零,拍卖会将快速进行。 verbose(boolean)。拍卖人是否向终端打印更新。 输出csv文件(字符串)。拍卖师自动记录每一轮拍卖的结果。默认值为’data/auctioneer log.csv’,但您可以指定一个不同的文件名。 当拍卖师被初始化后,它将通过initialise bots()方法自动设置拍卖和房间里的所有机器人。方法run auction()将运行拍卖,直到拍卖结束。不一定要知道拍卖师类是如何工作的才能做好课程作业。但如果你有兴趣的话,README.md文件中有更多细节。 3.2 arena.py arena.py文件是作为运行拍卖的一个方便的方法提供的。其中包括一些方法,展示了如何运行拍卖的例子。这是作为一个例子提供给你的,所以请随意修改这里的任何代码并进行实验。