首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多智能体微观经济仿真中“值”的确定

多智能体微观经济仿真中“值”的确定
EN

Software Engineering用户
提问于 2014-03-03 02:17:11
回答 2查看 95关注 0票数 2

我试图确定一种客观的方法,让一个自我利益的代理人在一个与Sugarscape (http://en.wikipedia.org/wiki/Sugarscape)相似的多agent模拟中,计算出最优的商品买卖价格。模拟结果如下:

每个代理都有一个储存的食物F,一个储存的钱G,一定数量的“能量”,E,和一个位置(x,y)在一个方格上。从一个正方形移动到一个相邻的正方形会消耗A个单位的能量,而能量自然是以模拟日B单位的速度消耗的。代理人每天都有下列可供选择的选择:消耗一单位食物以增加Q单位的能量;转移到另一地点(只要它有足够的能量),为食物“饲料”(消耗P单位能量以获得可能不知道数量的食物),或以双方都同意的价格与邻近的代理人进行交易。

每个agent的目标是使其“效用函数”U(E,F,G)最大化,而不考虑其他agent的效用函数。

现在,这似乎给出了食物的基本“使用价值”:Vuse = U(E + Q,F1,G) - U(E,F,G),但如果这是整个故事,这将不是一个有趣的问题。

似乎最普遍(但指数时间)的解决方案如下所示:

代码语言:javascript
复制
Function SearchActions(State S):
    Add(consume food) to action set
    Add(forage for food) to action set
    For each other agent A
        For each possible trading price P
            Add(trade with A at price P) to action set
    For each action X in action set
        S' = Apply X to S
        SearchActions(S')
    Return optimal X
End function

然而,主要的困难被“每一种可能的价格”所掩盖,因为代理A将购买/出售的价格本身取决于相同的计算方法。

我对这个值的计算要么取决于我自己可以从使用它得到什么,要么取决于其他人将为it...but支付什么--他们将为此支付什么--取决于我将为此支付什么。

你是怎么砍这个结的?

我知道这个问题已经解决了,before...but我找不到对它的任何引用,更不用说任何实际的实现了。我最近看到的是一篇关于SugarScape中的“战略规划”的论文,但它似乎只给出了计划的结果,而没有解释计划是如何完成的。

EN

回答 2

Software Engineering用户

发布于 2014-03-03 20:22:46

关键是每个代理的开采成本。据推测,在任何特定的时间里,一些特工会比其他人更接近食物矿。

开采的成本是能源+时间。因此,离矿井越远的代理人的成本就越高,因为它必须花费更多的精力和时间才能到达那里。

每个代理商将需要根据自己目前的采矿成本和目前的能源、食品和货币存量来确定其最高购买价格。相反,每个代理商将需要根据这四个相同的因素来确定其最低销售价格。

当一家代理商的买入价格高于另一家代理商的销售价格时,交易就会发生。

那么你是如何定价的呢?就像我们人类一样。试图出售的代理商将以高于其最低销售价格的价格报价。试图购买的代理人将以低于其最低购买价格的价格提出购买建议。然后,双方将进行谈判,直到(或如果)达成双方都同意的价格。

票数 1
EN

Software Engineering用户

发布于 2015-06-13 16:40:49

我有自己的Sugarscape实现,下面是我如何解决这个问题的方法。我的源代码实现可以在http://sugarscape.sourceforge.net/上找到。注意,实现需要JRE安装才能在浏览器中运行。或者,您可以使用Jave AppletViewer在本地运行它。

以下是我根据我的实现对这个问题的看法。代理商有两种食物来源,糖和香料。他们也有消费要求(新陈代谢)对这两个项目。一个内部价值是由每个代理根据他们当前股票的多少周期来决定的。因此,如果代理具有以下基值,

代码语言:javascript
复制
Agent x has 15 units of sugar and needs to consume 3 sugar units to survive each cycle.
Agent x has 30 units of spice and needs to consume 2 spice units to survive each cycle.

他们的计算如下所述,

代码语言:javascript
复制
Sugar Metabolic Rate (SuM) = 15 / 3 = 5.
Spice Metabolic Rate (SpM) = 30 / 2 = 15.

Time Until Death = Minimum of (SuM, SpM)

Marginal Rate of Substitution (MRS) = SpM / SuM

...MRS结果小于1表示对香料的偏好,而大于1的结果则表示对糖的偏好。

计算盈余:

代码语言:javascript
复制
if( MRS > 1  )
{   surplus = SpiceStocks - (SpiceMetabolism * TUD);
    //If surplus <= metabolism Then Set surplus to Zero
    surplus = surplus > (SpiceMetabolism * 2) ? surplus : 0;
} 
else if( MRS < 1  )
{   surplus = SugarStocks - (SugarMetabolism * TUD);
    //If surplus <= metabolism Then Set surplus to Zero
    surplus = surplus > (SugarMetabolism * 2) ? surplus : 0;
}
else
    surplus = 0;    //MRS == 1, 

一旦确定了这些计算,就会通过检查相邻的单元格来构造潜在贸易伙伴的列表。

名单是按代理人与每个贸易伙伴之间的差距进行排序的。

一笔交易是与我们的代理人有最大的差距的贸易伙伴的消费。在每个周期内,可以允许在可用盈余被消耗之前进行多种交易。

在代理人与贸易伙伴之间的2项盈余中,拟交易的盈余较低。

代码语言:javascript
复制
BarterPrice = Squareroot( Agent MRS * Trading Partner MRS );

我知道这个答案有点晚,但我希望它能帮助下一个人实现这个奇妙的模拟。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/231010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档