Genius源码学习

源码地址 https://secure.ecs.soton.ac.uk/notes/comp6203/genius/doc/

不会排版,建议复制到编辑器里看

AbstractNegotiationParty 抽象谈判组

    .init(NegotiationInfo ) 初始化  传入谈判信息info

    .estimateUtilitySpace  返回utilitySpace的估计值,默认是defaultUtilitySpaceEstimator()函数

    .defaultUtilitySpaceEstimator(Domain domain, UserModel um)

    .getDomain()  Domain 获取域信息

    .getUtility(Bid bid)    double  [0,1]的值,bid的utility

    .getUtilityWithDiscount(Bid bid) 应该没用,算discount的

    .getUtilitySpace()  utility space

    .getTimeline()  TimeLineInfo    获取时间

    .receiveMessage(AgentID sender,Action act) 接受信息(让另一个agent发出Action)

    .getLastReceivedAction() 获取最新的action(就是receiveMessage的action)

    .hasPreferenceUncertainty() 偏好是否不确定(是否有userModel)

    .getProtocol()  协议类型

    .negotiationEnded(Bid acceptedBid) 谈判结束,记录结果

    .getData()  获取存入container中的数据

    .getPartyId()  获取agent的id(???)

    .generateRandomBid()    随机生成一个bid(文档里没写,源码里有)

    .getRandomValue()      随机生成一个对应issue的值(文档里没写)

NegotiationInfo 谈判信息类

    .getAgentID()  String      获取ID   

    .getDeadline()  Deadline    截止日期

    .getPersistentData()  PersistentDataType 之前的session

    .getTimeline()  TimeLineInfo    获取时间

    .getUser()      User        用户记录,偏好不确定

    .getUserModel()  UserModel  存储用户模型

    .getUtilitySpace() AbstractUtilitySpace 如果有UserModel返回null,

UtilitySpace 将bids "map"到utilities的类


AbstractUtilitySpace    implements UtilitySpace

    discount    保留值随时间变化的底数

    .getDomain()  Domain 获取域信息

    .setReservationValue(double newRV)  设置保留值

    .getReservationValue()  获取保留值(如果有设置discount,用getReservationValueWithDiscount(TimeLineInfo).)

    .getReservationValueWithDiscount(TimeLineInfo/double) 保留值随时间变化,默认计算方式是 util*pow(discount,time))

    .isDiscounted() 是否设置了discount

    .getDiscountFactor() discount数值

    .getFileName() 文件名

    .getMaxUtilityBid() 返回utilitySpace的最大utility的bid(暴力搜索)

    .getMinUtilityBid() 最小utility对应bid

AdditiveUtilitySpace    extend AbstractUtilitySpace  (用于临时处理utility space)

    AdditiveUtilitySpace() 空

    AdditiveUtilitySpace(AdditiveUtilitySpace us) 直接复制

    AdditiveUtilitySpace(Domain domain) 从domin生成

    .getEvaluation(int pIssueIndex, Bid bid) 计算bid中一个issue的utility

    .getEvaluator(int index) 获取一个issue的evaluator

    .getIssue(int)  不推荐使用

    .getUtility(Bid bid)    获取一个bid的utilitiy

    .getWeight(int issueID) issue的权重

    set类函数最好不要用

Evaluator  评估器,用于计算utility

    .getWeight()    对应的权重

    .getEvaluation(AdditiveUtilitySpace uspace, Bid bid, int index) 没有算权重的utility

EvaluatorDiscrete  implements Evaluator

    这里的结构是value:evaluator,对应于key:value,别搞混

    离散值的评估器

    .getEvalMax()  最大的evaluator

    .getMaxValue()  最大的evaluator对应的value

    .getMinValue()  最小的evaluator对应的value

    .getValue(ValueDiscrete value) 传入value,返回对应的evaluator(真恶心,绕圈子)

    .getValues()    所有的value集合

    .getEvaluation(ValueDiscrete value)  传入value,获取归一化后的eval(相对于最大evaluator的百分比)

    .getEvaluationNotNormalized(ValueDiscrete value) 未归一化的evaluator

Domain  域 记录谈判的物品信息

    .getObjectives() List  所有信息

    .getIssues()    List    所有的issue,已排序

    .getRandomBid()  Bid    随机生成bid

    .getNumberOfPossibleBids    可生成的bid总数

Issue  条目/问题  每条issue有index对应(number)

    作为 List 使用, 程序运行时直接读入,不应该修改任何数据

    .getNumber()  issude的序号

public class MyAgent extends AbstractNegotiationParty

    public void init(NegotiationInfo info)  初始化

    public Action chooseAction(List> possibleActions)  根据offer提供相应的action

    public void receiveMessage(AgentID sender, Action action) 获取对方的offer(对方action)

    public String getDescription() 在genius软件里现实的策略描述

    public AbstractUtilitySpace estimateUtilitySpace() 期望不确定时的估算方法

User

    .elicitRank(Bid bid, UserModel userModel)  更新usermodel

    .getElicitationCost()  获取成本数字

    .getTotalBother()  已用的打扰成本

BidRaking  排序bid

    BidRanking(java.util.List bidOrder, double lowUtil, double highUtil)

    .getMinimalBid()    最小bid

    .getLowUtility()    最小bid对应的utility

    .getHighUtility()  最大bid对应的utility

    .getMaximalBid()    最大bid

    .indexOf(Bid b)    bid在list对应的序号

    .getBidOrder()      bid序列

    .getSize()          list大小

UserModel 

    .getBidRanking()

    .getDomain()

AdditiveUtilitySpaceFactory

    AdditiveUtilitySpaceFactory(Domain d)

    .estimateUsingBidRanks(BidRanking r)    根据bid的排序简单计算utilitysapce

你可能感兴趣的:(Genius源码学习)