1 | from typing import List
|
---|
2 |
|
---|
3 |
|
---|
4 | class NegotiationData:
|
---|
5 | tSplit: int = 40
|
---|
6 |
|
---|
7 | def __init__(self, max_received_util=0.0, agreement_util=0.0, opponent_name='', opponent_util=0.0,
|
---|
8 | opponent_util_by_time=None):
|
---|
9 | self._max_received_util: float = max_received_util
|
---|
10 | self._agreement_util: float = agreement_util
|
---|
11 | self._opponent_name: str = opponent_name
|
---|
12 | self._opponent_util: float = opponent_util
|
---|
13 | if opponent_util_by_time is None:
|
---|
14 | self._opponent_util_by_time: List[float] = [0.0] * NegotiationData.tSplit
|
---|
15 | else:
|
---|
16 | self._opponent_util_by_time: List[float] = opponent_util_by_time
|
---|
17 |
|
---|
18 | def add_agreement_util(self, agreement_util: float):
|
---|
19 | self._agreement_util = agreement_util
|
---|
20 | if agreement_util > self._max_received_util:
|
---|
21 | self._max_received_util = agreement_util
|
---|
22 |
|
---|
23 | def add_bid_util(self, bid_util: float):
|
---|
24 | if bid_util > self._max_received_util:
|
---|
25 | self._max_received_util = bid_util
|
---|
26 |
|
---|
27 | def update_opponent_offers(self, op_sum: List[float], op_counts: List[int]):
|
---|
28 | for i in range(NegotiationData.tSplit):
|
---|
29 | self._opponent_util_by_time[i] = op_sum[i] / op_counts[i] if op_counts[i] > 0 else 0.0
|
---|
30 |
|
---|
31 | def set_opponent_name(self, opponent_name: str):
|
---|
32 | self._opponent_name = opponent_name
|
---|
33 |
|
---|
34 | def set_opponent_util(self, opp_util: float):
|
---|
35 | self._opponent_util = opp_util
|
---|
36 |
|
---|
37 | def get_opponent_name(self):
|
---|
38 | return self._opponent_name
|
---|
39 |
|
---|
40 | def get_max_received_util(self):
|
---|
41 | return self._max_received_util
|
---|
42 |
|
---|
43 | def get_agreement_util(self):
|
---|
44 | return self._agreement_util
|
---|
45 |
|
---|
46 | def get_opponent_util(self):
|
---|
47 | return self._opponent_util
|
---|
48 |
|
---|
49 | def get_opponent_util_by_time(self):
|
---|
50 | return self._opponent_util_by_time
|
---|