Time-Dependent Agents API Reference
Classic time-dependent negotiation strategies.
negmas_genius_agents.negotiators.time_dependent
Time-dependent negotiating agents reimplemented from Genius.
This module contains Python reimplementations of the classic time-dependent negotiation strategies from Genius, including Boulware, Conceder, and Linear agents.
Note
These are AI-generated reimplementations based on the original Java code from the Genius framework. They may not behave identically to the originals.
The time-dependent strategy uses the formula
f(t) = k + (1 - k) * t^(1/e)
Where
- t is the normalized time (0 at start, 1 at deadline)
- e is the concession exponent
- k is the initial concession (typically 0)
The target utility at time t is
p(t) = Pmin + (Pmax - Pmin) * (1 - f(t))
References
S. Shaheen Fatima, Michael Wooldridge, Nicholas R. Jennings "Optimal Negotiation Strategies for Agents with Incomplete Information" http://eprints.ecs.soton.ac.uk/6151/1/atal01.pdf
TimeDependentAgent
Bases: SAONegotiator
Base class for time-dependent negotiation strategies.
This is a Python reimplementation of Genius's TimeDependentAgent.
Time-dependent agents use a concession function based on time to determine their target utility. The concession rate is controlled by parameter 'e':
- e < 1: Boulware (reluctant to concede, tough negotiator)
- e = 1: Linear (constant concession rate)
- e > 1: Conceder (eager to concede, cooperative negotiator)
- e = 0: Hardliner (never concedes)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
e
|
float
|
Concession exponent controlling how fast the agent concedes. |
1.0
|
k
|
float
|
Initial constant (typically 0, meaning start at max utility). |
0.0
|
preferences
|
BaseUtilityFunction | None
|
NegMAS preferences/utility function. |
None
|
ufun
|
BaseUtilityFunction | None
|
Utility function (overrides preferences if given). |
None
|
name
|
str | None
|
Negotiator name. |
None
|
parent
|
Controller | None
|
Parent controller. |
None
|
owner
|
Agent | None
|
Agent that owns this negotiator. |
None
|
id
|
str | None
|
Unique identifier. |
None
|
**kwargs
|
Additional arguments passed to parent. |
{}
|
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | |
e
property
Get the concession exponent.
Returns:
| Type | Description |
|---|---|
float
|
The e value controlling concession speed. |
f(t)
Compute the concession function value at time t.
The concession function determines how much the agent has conceded from its initial position. f(0) = k (initial), f(1) = 1 (full concession).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
float
|
Normalized time in [0, 1]. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Concession value in [k, 1]. |
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
on_negotiation_start(state)
p(t)
Compute the target utility at time t.
This maps the concession function to actual utility values: - At t=0: p(0) = Pmax (start with best possible utility) - At t=1: p(1) = Pmin (end at reservation/minimum utility)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
t
|
float
|
Normalized time in [0, 1]. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Target utility value. |
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
propose(state, dest=None)
Generate a proposal based on current time.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
SAOState
|
Current negotiation state. |
required |
dest
|
str | None
|
Destination negotiator ID (ignored). |
None
|
Returns:
| Type | Description |
|---|---|
Outcome | None
|
Outcome to propose, or None. |
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
respond(state, source=None)
Respond to an offer.
Accepts if the offered utility is >= the utility of our planned counter-bid.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
SAOState
|
Current negotiation state. |
required |
source
|
str | None
|
Source negotiator ID (ignored). |
None
|
Returns:
| Type | Description |
|---|---|
ResponseType
|
ResponseType indicating acceptance or rejection. |
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
TimeDependentAgentBoulware
Bases: TimeDependentAgent
Boulware (tough) negotiation strategy.
A Boulware agent is reluctant to concede. It maintains its initial offer for most of the negotiation and only concedes near the deadline.
Uses e=0.2 by default, which means concessions are slow and happen mainly near the end.
This is a reimplementation of Genius's TimeDependentAgentBoulware.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
e
|
float
|
Concession exponent (default 0.2 for Boulware behavior). |
0.2
|
k
|
float
|
Initial concession constant (default 0.0). |
0.0
|
preferences
|
BaseUtilityFunction | None
|
NegMAS preferences/utility function. |
None
|
ufun
|
BaseUtilityFunction | None
|
Utility function (overrides preferences if given). |
None
|
name
|
str | None
|
Negotiator name. |
None
|
parent
|
Controller | None
|
Parent controller. |
None
|
owner
|
Agent | None
|
Agent that owns this negotiator. |
None
|
id
|
str | None
|
Unique identifier. |
None
|
**kwargs
|
Additional arguments passed to parent. |
{}
|
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
TimeDependentAgentConceder
Bases: TimeDependentAgent
Conceder (cooperative) negotiation strategy.
A Conceder agent is eager to concede. It moves quickly toward its reservation value early in the negotiation.
Uses e=2.0 by default, which means fast concessions early in the negotiation.
This is a reimplementation of Genius's TimeDependentAgentConceder.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
e
|
float
|
Concession exponent (default 2.0 for Conceder behavior). |
2.0
|
k
|
float
|
Initial concession constant (default 0.0). |
0.0
|
preferences
|
BaseUtilityFunction | None
|
NegMAS preferences/utility function. |
None
|
ufun
|
BaseUtilityFunction | None
|
Utility function (overrides preferences if given). |
None
|
name
|
str | None
|
Negotiator name. |
None
|
parent
|
Controller | None
|
Parent controller. |
None
|
owner
|
Agent | None
|
Agent that owns this negotiator. |
None
|
id
|
str | None
|
Unique identifier. |
None
|
**kwargs
|
Additional arguments passed to parent. |
{}
|
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
TimeDependentAgentHardliner
Bases: TimeDependentAgent
Hardliner (never concede) negotiation strategy.
A Hardliner agent always offers its best possible bid and never concedes.
Uses e=0 by default, which means no concession at all.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
e
|
float
|
Concession exponent (default 0.0 for Hardliner behavior). |
0.0
|
k
|
float
|
Initial concession constant (default 0.0). |
0.0
|
preferences
|
BaseUtilityFunction | None
|
NegMAS preferences/utility function. |
None
|
ufun
|
BaseUtilityFunction | None
|
Utility function (overrides preferences if given). |
None
|
name
|
str | None
|
Negotiator name. |
None
|
parent
|
Controller | None
|
Parent controller. |
None
|
owner
|
Agent | None
|
Agent that owns this negotiator. |
None
|
id
|
str | None
|
Unique identifier. |
None
|
**kwargs
|
Additional arguments passed to parent. |
{}
|
Source code in src/negmas_genius_agents/negotiators/time_dependent.py
TimeDependentAgentLinear
Bases: TimeDependentAgent
Linear negotiation strategy.
A Linear agent concedes at a constant rate throughout the negotiation.
Uses e=1.0 by default, which means linear concession over time.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
e
|
float
|
Concession exponent (default 1.0 for Linear behavior). |
1.0
|
k
|
float
|
Initial concession constant (default 0.0). |
0.0
|
preferences
|
BaseUtilityFunction | None
|
NegMAS preferences/utility function. |
None
|
ufun
|
BaseUtilityFunction | None
|
Utility function (overrides preferences if given). |
None
|
name
|
str | None
|
Negotiator name. |
None
|
parent
|
Controller | None
|
Parent controller. |
None
|
owner
|
Agent | None
|
Agent that owns this negotiator. |
None
|
id
|
str | None
|
Unique identifier. |
None
|
**kwargs
|
Additional arguments passed to parent. |
{}
|