1 | package agents.qoagent;
|
---|
2 |
|
---|
3 | /**
|
---|
4 | * @author raz
|
---|
5 | * This class should serve as an auxiliary class
|
---|
6 | * The methods should not be changed/revised
|
---|
7 | *
|
---|
8 | */
|
---|
9 | public class AgentTools {
|
---|
10 | AutomatedAgent agent = null;
|
---|
11 |
|
---|
12 | /**
|
---|
13 | * Constructor
|
---|
14 | * Save a pointer to the AutomatedAgent class
|
---|
15 | * @param agent - pointer to the AutomatedAgent class
|
---|
16 | */
|
---|
17 | public AgentTools(AutomatedAgent agent) {
|
---|
18 | this.agent = agent;
|
---|
19 | }
|
---|
20 |
|
---|
21 | /***********************************************
|
---|
22 | * @@ Logic for sending messages
|
---|
23 | * Below are messages the automated agent sends to the opponent
|
---|
24 | * Call them from the AbstractAutomatedAgent class, and also
|
---|
25 | * add any logic you need in that class, just before calling them
|
---|
26 | * Do not add the logic in this class!
|
---|
27 | ***********************************************/
|
---|
28 |
|
---|
29 | /**
|
---|
30 | * Called when you want to accept a message
|
---|
31 | * @param sOriginalMessage - the message to be accepted
|
---|
32 | */
|
---|
33 | public void acceptMessage(String sOriginalMessage) {
|
---|
34 | String sAcceptMsg = agent.formatMessage(AutomatedAgentMessages.ACCEPT, sOriginalMessage);
|
---|
35 |
|
---|
36 | //createFrom a thread to send delayed message
|
---|
37 | // You can choose how much time the agent should wait before accepting the opponent's offer.
|
---|
38 | // The delay time is defined the AutomatedAgentDelayedMessageThread class.
|
---|
39 | AutomatedAgentDelayedMessageThread delayedMessageThread = new AutomatedAgentDelayedMessageThread(agent, sAcceptMsg);
|
---|
40 | delayedMessageThread.start();
|
---|
41 | }
|
---|
42 |
|
---|
43 | /**
|
---|
44 | * Called when you want to reject a message
|
---|
45 | * @param sOriginalMessage - the message to be rejected
|
---|
46 | */
|
---|
47 | public void rejectMessage(String sOriginalMessage) {
|
---|
48 | String sRejectMsg = agent.formatMessage(AutomatedAgentMessages.REJECT, sOriginalMessage);
|
---|
49 |
|
---|
50 | //createFrom a thread to send delayed message
|
---|
51 | // You can choose how much time the agent should wait before sending the rejection to the opponent.
|
---|
52 | // The delay time is defined the AutomatedAgentDelayedMessageThread class.
|
---|
53 | AutomatedAgentDelayedMessageThread delayedMessageThread = new AutomatedAgentDelayedMessageThread(agent, sRejectMsg);
|
---|
54 | delayedMessageThread.start();
|
---|
55 | }
|
---|
56 |
|
---|
57 | /**
|
---|
58 | * Called when you want to send a message of type offer, counter offer, promise or query
|
---|
59 | * @param currentAgreementIdx - the indices of the message
|
---|
60 | */
|
---|
61 | public void sendMessage(int nMessageType, int currentAgreementIdx[]) {
|
---|
62 | String sMessage = getMessageByIndices(currentAgreementIdx);
|
---|
63 | sMessage = agent.formatMessage(nMessageType, sMessage);
|
---|
64 |
|
---|
65 | //createFrom a thread to send delayed message
|
---|
66 | // You can choose how much time the agent should wait before sending the message to the opponent.
|
---|
67 | // The delay time is defined the AutomatedAgentDelayedMessageThread class.
|
---|
68 | AutomatedAgentDelayedMessageThread delayedMessageThread = new AutomatedAgentDelayedMessageThread(agent, sMessage, agent.getCurrentTurn());
|
---|
69 | delayedMessageThread.start();
|
---|
70 | }
|
---|
71 |
|
---|
72 | public void optOut() {
|
---|
73 | String sMessage = agent.formatMessage(AutomatedAgentMessages.OPT_OUT, "");
|
---|
74 | agent.printMessageToServer(sMessage);
|
---|
75 | }
|
---|
76 |
|
---|
77 | /**
|
---|
78 | * Called when you want to send a message of type offer, counter offer, promise or query
|
---|
79 | * @param sMessage - the message as a String
|
---|
80 | */
|
---|
81 | public void sendMessage(int nMessageType, String sMessage) {
|
---|
82 | sMessage = agent.formatMessage(nMessageType, sMessage);
|
---|
83 |
|
---|
84 | //createFrom a thread to send delayed message
|
---|
85 | // You can choose how much time the agent should wait before sending the message to the opponent.
|
---|
86 | // The delay time is defined the AutomatedAgentDelayedMessageThread class.
|
---|
87 | AutomatedAgentDelayedMessageThread delayedMessageThread = new AutomatedAgentDelayedMessageThread(agent, sMessage, agent.getCurrentTurn());
|
---|
88 | delayedMessageThread.start();
|
---|
89 | }
|
---|
90 |
|
---|
91 |
|
---|
92 | /**
|
---|
93 | * Called when you want to send an offer
|
---|
94 | * @param sOffer - the offer to be sent
|
---|
95 | */
|
---|
96 | public void sendOffer(String sOffer) {
|
---|
97 | setSendOfferFlag(true);
|
---|
98 | sendMessage(AutomatedAgentMessages.OFFER, sOffer);
|
---|
99 | }
|
---|
100 |
|
---|
101 | /**
|
---|
102 | * Called when you want to send a query
|
---|
103 | * @param currentAgreementIdx - the indices of the query
|
---|
104 | */
|
---|
105 | public void sendQuery(int currentAgreementIdx[]) {
|
---|
106 | setSendOfferFlag(true);
|
---|
107 | sendMessage(AutomatedAgentMessages.QUERY, currentAgreementIdx);
|
---|
108 | }
|
---|
109 |
|
---|
110 | /**
|
---|
111 | * Called when you want to send a promise
|
---|
112 | * @param currentAgreementIdx - the indices of the promise
|
---|
113 | */
|
---|
114 | public void sendPromise(int currentAgreementIdx[]) {
|
---|
115 | setSendOfferFlag(true);
|
---|
116 | sendMessage(AutomatedAgentMessages.PROMISE, currentAgreementIdx);
|
---|
117 | }
|
---|
118 |
|
---|
119 | /**
|
---|
120 | * Called when you want to send a counter offer
|
---|
121 | * @param currentAgreementIdx - the indices of the counter offer
|
---|
122 | */
|
---|
123 | public void sendCounterOffers(int currentAgreementIdx[]) {
|
---|
124 | setSendOfferFlag(true);
|
---|
125 | sendMessage(AutomatedAgentMessages.COUNTER_OFFER, currentAgreementIdx);
|
---|
126 | }
|
---|
127 |
|
---|
128 | /**
|
---|
129 | * Called when you want to send a comment
|
---|
130 | * @param sMessage - the comment to be sent
|
---|
131 | */
|
---|
132 | public void sendComment(String sMessage) {
|
---|
133 | sMessage = agent.formatMessage(AutomatedAgentMessages.COMMENT, sMessage);
|
---|
134 | agent.printMessageToServer(sMessage);
|
---|
135 | }
|
---|
136 |
|
---|
137 | /**
|
---|
138 | * Called when you want to send a threat
|
---|
139 | * @param sMessage - the threat to be sent
|
---|
140 | */
|
---|
141 | public void sendThreat(String sMessage) {
|
---|
142 | sMessage = agent.formatMessage(AutomatedAgentMessages.THREAT, sMessage);
|
---|
143 | agent.printMessageToServer(sMessage);
|
---|
144 | }
|
---|
145 | /***********************************************
|
---|
146 | * @@ End of methods for sending message
|
---|
147 | ***********************************************/
|
---|
148 |
|
---|
149 | // helper function
|
---|
150 | /**
|
---|
151 | * Get the total number of turns in the negotiation
|
---|
152 | * @return total number of turns
|
---|
153 | */
|
---|
154 | public int getTurnsNumber() {
|
---|
155 | return agent.getMaxTurns();
|
---|
156 | }
|
---|
157 |
|
---|
158 | /**
|
---|
159 | * Get the current turn number
|
---|
160 | * @return the current turn
|
---|
161 | */
|
---|
162 | public int getCurrentTurn() {
|
---|
163 | return agent.getCurrentTurn();
|
---|
164 | }
|
---|
165 |
|
---|
166 | // utility functions
|
---|
167 | /**
|
---|
168 | * @param agentType - the agent's type
|
---|
169 | * @param CurrentAgreementIdx - the agreement indices
|
---|
170 | * @param nCurrentTurn - the current turn for calculations
|
---|
171 | * @return the value of a given agreement for the agent at a given turn
|
---|
172 | */
|
---|
173 | public double getAgreementValue(AutomatedAgentType agentType, int[] CurrentAgreementIdx, int nCurrentTurn) {
|
---|
174 | return agentType.getAgreementValue(CurrentAgreementIdx, nCurrentTurn);
|
---|
175 | }
|
---|
176 |
|
---|
177 |
|
---|
178 | /**
|
---|
179 | * Return the best agreement as string
|
---|
180 | * @param agentType - the agent's type
|
---|
181 | * @return the best agreement as String
|
---|
182 | */
|
---|
183 | public String getBestAgreementStr(AutomatedAgentType agentType) {
|
---|
184 | return agentType.getBestAgreementStr();
|
---|
185 | }
|
---|
186 |
|
---|
187 | /**
|
---|
188 | * Return the best agreement value for a given agent
|
---|
189 | * @param agentType - the agent's type
|
---|
190 | * @return the best agreement value computed for the current turn
|
---|
191 | */
|
---|
192 | public double getBestAgreementValue(AutomatedAgentType agentType) {
|
---|
193 | return agentType.getBestAgreementValue();
|
---|
194 | }
|
---|
195 |
|
---|
196 | /**
|
---|
197 | * Return the worst agreement as a String
|
---|
198 | * @param agentType - the agent's type
|
---|
199 | * @return the worst agreement as String
|
---|
200 | */
|
---|
201 | public String getWorstAgreementStr(AutomatedAgentType agentType) {
|
---|
202 | return agentType.getWorstAgreementStr();
|
---|
203 | }
|
---|
204 |
|
---|
205 | /**
|
---|
206 | * Return the worst agreement for a given agent
|
---|
207 | * @param agentType - the agent's type
|
---|
208 | * @return the worst agreement value computed for the current turn
|
---|
209 | */
|
---|
210 | public double getWorstAgreementValue(AutomatedAgentType agentType) {
|
---|
211 | return agentType.getWorstAgreementValue();
|
---|
212 | }
|
---|
213 |
|
---|
214 | /**
|
---|
215 | * Sets the best agreement value for a given agent
|
---|
216 | * @param agentType - the agent's type
|
---|
217 | * @param value - the value
|
---|
218 | */
|
---|
219 | public void setBestAgreementValue(AutomatedAgentType agentType, double value) {
|
---|
220 | agentType.setBestAgreementValue(value);
|
---|
221 | }
|
---|
222 |
|
---|
223 | /**
|
---|
224 | * Sets the best agreement indices for a given agent
|
---|
225 | * @param agentType - the agent's type
|
---|
226 | * @param currentAgreementIdx - the agreement indices
|
---|
227 | */
|
---|
228 | public void setBestAgreementIndices(AutomatedAgentType agentType, int[] currentAgreementIdx) {
|
---|
229 | agentType.setBestAgreementIndices(currentAgreementIdx);
|
---|
230 | }
|
---|
231 |
|
---|
232 | /**
|
---|
233 | * Sets the worst agreement value for a given agent
|
---|
234 | * @param agentType - the agent's type
|
---|
235 | * @param value - the value
|
---|
236 | */
|
---|
237 | public void setWorstAgreementValue(AutomatedAgentType agentType, double value) {
|
---|
238 | agentType.setWorstAgreementValue(value);
|
---|
239 | }
|
---|
240 |
|
---|
241 | /**
|
---|
242 | * Sets the worst agreement indices for a given agent
|
---|
243 | * @param agentType - the agent's type
|
---|
244 | * @param currentAgreementIdx - the agreement indices
|
---|
245 | */
|
---|
246 | public void setWorstAgreementIndices(AutomatedAgentType agentType, int[] currentAgreementIdx) {
|
---|
247 | agentType.setWorstAgreementIndices(currentAgreementIdx);
|
---|
248 | }
|
---|
249 | /**
|
---|
250 | * Initializes the best agreement -
|
---|
251 | * inits the indices and sets minimal value
|
---|
252 | * @param agentType - the agent's type
|
---|
253 | */
|
---|
254 | public void initializeBestAgreement(AutomatedAgentType agentType) {
|
---|
255 | agentType.setBestAgreementValue(AutomatedAgentType.VERY_SMALL_NUMBER);
|
---|
256 | agentType.initializeBestAgreementIndices();
|
---|
257 | }
|
---|
258 |
|
---|
259 | /**
|
---|
260 | * Initializes the worst agreement -
|
---|
261 | * inits the indices and sets maximal value
|
---|
262 | * @param agentType - the agent's type
|
---|
263 | */
|
---|
264 | public void initializeWorstAgreement(AutomatedAgentType agentType) {
|
---|
265 | agentType.setWorstAgreementValue(AutomatedAgentType.VERY_HIGH_NUMBER);
|
---|
266 | agentType.initializeWorstAgreementIndices();
|
---|
267 |
|
---|
268 | }
|
---|
269 |
|
---|
270 | /**
|
---|
271 | * Return the time effect for the entire agreement
|
---|
272 | * @param agentType - the agent's type
|
---|
273 | * @return the time effect for the entire agreement
|
---|
274 | */
|
---|
275 | public double getAgreementTimeEffect(AutomatedAgentType agentType) {
|
---|
276 | return agentType.getAgreementTypeEffect();
|
---|
277 | }
|
---|
278 |
|
---|
279 | /**
|
---|
280 | * Return the SQ value for a given agent
|
---|
281 | * @param agentType - the agent's type
|
---|
282 | * @return the status quo value computed for the current turn
|
---|
283 | * for a given agent type
|
---|
284 | */
|
---|
285 | public double getSQValue(AutomatedAgentType agentType) {
|
---|
286 | return agentType.getSQValue();
|
---|
287 | }
|
---|
288 |
|
---|
289 | /**
|
---|
290 | * Return the opting out value for a given agent
|
---|
291 | * @param agentType - the agent's type
|
---|
292 | * @return the opting out value computed for the current turn
|
---|
293 | */
|
---|
294 | public double getOptOutValue(AutomatedAgentType agentType) {
|
---|
295 | return agentType.getOptOutValue();
|
---|
296 | }
|
---|
297 |
|
---|
298 | /**
|
---|
299 | * @return the total number of agreement
|
---|
300 | */
|
---|
301 | public int getTotalAgreements(AutomatedAgentType agentType) {
|
---|
302 | return agentType.getTotalAgreements();
|
---|
303 | }
|
---|
304 |
|
---|
305 |
|
---|
306 | /**
|
---|
307 | * Set the automated agent type
|
---|
308 | * Possible types: COMPROMISE_TYPE, SHORT_TERM_TYPE and LONG_TERM_TYPE
|
---|
309 | *
|
---|
310 | */
|
---|
311 | public void setAutomatedAgentType(String side) {
|
---|
312 | // @@EXAMPLE@@
|
---|
313 | // using the short term type for the automated agent,
|
---|
314 | // no matter which side it plays
|
---|
315 | agent.setAgentType(side, AutomatedAgentsCore.LONG_TERM_TYPE_IDX);
|
---|
316 | }
|
---|
317 |
|
---|
318 | public String getAgentSide() {
|
---|
319 | return agent.getAgentSide();
|
---|
320 | }
|
---|
321 |
|
---|
322 | /**
|
---|
323 | *
|
---|
324 | * @return the selected offer of the agent at a given turn
|
---|
325 | */
|
---|
326 | public String getSelectedOffer() {
|
---|
327 | String sAutomatedAgentAgreement = agent.getAutomatedAgentAgreement();
|
---|
328 |
|
---|
329 | return sAutomatedAgentAgreement;
|
---|
330 | }
|
---|
331 |
|
---|
332 | /**
|
---|
333 | *
|
---|
334 | * @return the value of the selected offer of the agent at a given turn
|
---|
335 | */
|
---|
336 | public double getSelectedOfferValue() {
|
---|
337 | String sAutomatedAgentAgreement = agent.getAutomatedAgentAgreement();
|
---|
338 |
|
---|
339 | int nextAgreementIndices[] = new int[AutomatedAgentType.MAX_ISSUES];
|
---|
340 | nextAgreementIndices = agent.getAgreementIndices(sAutomatedAgentAgreement);
|
---|
341 |
|
---|
342 | double dNextAgreementValue = agent.getAgreementValue(nextAgreementIndices);
|
---|
343 |
|
---|
344 | return dNextAgreementValue;
|
---|
345 | }
|
---|
346 |
|
---|
347 | /**
|
---|
348 | *
|
---|
349 | * @return the value of previously accepted agreement
|
---|
350 | */
|
---|
351 | public double getAcceptedAgreementsValue() {
|
---|
352 | // The accepted agreement is saved in agent.m_PreviosAcceptedOffer
|
---|
353 | // Note: agreements can be incremental. The m_PreviosAcceptedOffer saves the whole agreement
|
---|
354 | int previousAcceptedAgreementsIndices[] = new int[AutomatedAgentType.MAX_ISSUES];
|
---|
355 | previousAcceptedAgreementsIndices = agent.getPreviousAcceptedAgreementsIndices();
|
---|
356 |
|
---|
357 | double dAcceptedAgreementValue = agent.getAgreementValue(previousAcceptedAgreementsIndices);
|
---|
358 |
|
---|
359 | return dAcceptedAgreementValue;
|
---|
360 |
|
---|
361 | }
|
---|
362 |
|
---|
363 | public int[] getAcceptedAgreementIdx() {
|
---|
364 | // The accepted agreement is saved in agent.m_PreviosAcceptedOffer
|
---|
365 | // Note: agreements can be incremental. The m_PreviosAcceptedOffer saves the whole agreement
|
---|
366 | int previousAcceptedAgreementsIndices[] = new int[AutomatedAgentType.MAX_ISSUES];
|
---|
367 | previousAcceptedAgreementsIndices = agent.getPreviousAcceptedAgreementsIndices();
|
---|
368 |
|
---|
369 | return previousAcceptedAgreementsIndices;
|
---|
370 |
|
---|
371 | }
|
---|
372 |
|
---|
373 | /**
|
---|
374 | * calculate the selected offer the agent will propose
|
---|
375 | * in the following turn
|
---|
376 | *
|
---|
377 | */
|
---|
378 | public void calculateNextTurnOffer() {
|
---|
379 | agent.calculateNextTurnOffer();
|
---|
380 | }
|
---|
381 |
|
---|
382 | /**
|
---|
383 | *
|
---|
384 | * @return the value of the selected offer the agent will propose
|
---|
385 | * in the following turn
|
---|
386 | */
|
---|
387 | public double getNextTurnOfferValue() {
|
---|
388 | double dAutomatedAgentNextOfferValueForAgent = agent.getNextTurnAutomatedAgentOfferValue();
|
---|
389 | return dAutomatedAgentNextOfferValueForAgent;
|
---|
390 | }
|
---|
391 |
|
---|
392 | /**
|
---|
393 | * Iterator for going over all possible agreements
|
---|
394 | * @param totalIssuesNum - the total number of issues in the negotiatoin
|
---|
395 | * @param currentAgreementIdx - the current agreement indices
|
---|
396 | * @param maxIssueValues - the maximal issue value
|
---|
397 | */
|
---|
398 | public void getNextAgreement(int totalIssuesNum, int[] currentAgreementIdx, int[] maxIssueValues) {
|
---|
399 | //TODO:DEBUG THIS
|
---|
400 | // receiveMessage issue values indices for evaluating the next agreement
|
---|
401 | boolean bFinishUpdate = false;
|
---|
402 | for (int k = totalIssuesNum-1; k >= 0 && !bFinishUpdate; --k)
|
---|
403 | {
|
---|
404 | if (currentAgreementIdx[k]+1 >= maxIssueValues[k])
|
---|
405 | {
|
---|
406 | currentAgreementIdx[k] = 0;
|
---|
407 | }
|
---|
408 | else
|
---|
409 | {
|
---|
410 | currentAgreementIdx[k]++;
|
---|
411 | bFinishUpdate = true;
|
---|
412 | }
|
---|
413 | }
|
---|
414 | }
|
---|
415 |
|
---|
416 | /**
|
---|
417 | * Get the opponent's side
|
---|
418 | * @param sideName - the type of side (A or B)
|
---|
419 | * @param type - the type (compromise, short, long)
|
---|
420 | * @return
|
---|
421 | */
|
---|
422 | public AutomatedAgentType getNextTurnSideAgentType(String sideName, int type) {
|
---|
423 | AutomatedAgentType agentType = null;
|
---|
424 | agentType = agent.getNextTurnSideAgentType(sideName, type);
|
---|
425 | return agentType;
|
---|
426 | }
|
---|
427 |
|
---|
428 | /**
|
---|
429 | * Get the opponent's side
|
---|
430 | * @param sideName - the type of side (A or B)
|
---|
431 | * @param type - the type (compromise, short, long)
|
---|
432 | * @return
|
---|
433 | */
|
---|
434 | public AutomatedAgentType getCurrentTurnSideAgentType(String sideName, int type) {
|
---|
435 | AutomatedAgentType agentType = null;
|
---|
436 | agentType = agent.getCurrentTurnSideAgentType(sideName, type);
|
---|
437 | return agentType;
|
---|
438 | }
|
---|
439 |
|
---|
440 | /**
|
---|
441 | *
|
---|
442 | * @return the value of the selected offer for the next turn
|
---|
443 | */
|
---|
444 | public double getNextTurnAutomatedAgentValue() {
|
---|
445 | return agent.getNextTurnAutomatedAgentValue();
|
---|
446 | }
|
---|
447 |
|
---|
448 | /**
|
---|
449 | *
|
---|
450 | * @return the value of the selected offer for the current turn
|
---|
451 | */
|
---|
452 | public double getCurrentTurnAutomatedAgentValue() {
|
---|
453 | return agent.getCurrentTurnAutomatedAgentValue();
|
---|
454 | }
|
---|
455 |
|
---|
456 |
|
---|
457 |
|
---|
458 | /**
|
---|
459 | * Sets the value of the selected offer for the current turn
|
---|
460 | * @param agreementValue - the agreement's value
|
---|
461 | */
|
---|
462 | public void setCurrentTurnAutomatedAgentValue(double agreementValue) {
|
---|
463 | agent.setCurrentTurnAutomatedAgentValue(agreementValue);
|
---|
464 | }
|
---|
465 |
|
---|
466 | /**
|
---|
467 | * Sets the value of the selected offer for the following turn
|
---|
468 | * @param agreementValue - the agreement's value
|
---|
469 | */
|
---|
470 | public void setNextTurnAutomatedAgentSelectedValue(double agreementValue) {
|
---|
471 | agent.setNextTurnAutomatedAgentSelectedValue(agreementValue);
|
---|
472 | }
|
---|
473 |
|
---|
474 | /**
|
---|
475 | * Sets the value of the selected offer for the following turn
|
---|
476 | * for the opponent
|
---|
477 | * @param agreementValue - the agreement's value
|
---|
478 | */
|
---|
479 | public void setNextTurnOpponentSelectedValue(double agreementValue) {
|
---|
480 | agent.setNextTurnOpponentSelectedValue(agreementValue);
|
---|
481 | }
|
---|
482 |
|
---|
483 | /**
|
---|
484 | * Sets the value of the selected offer for the current turn
|
---|
485 | * for the opponent
|
---|
486 | * @param agreementValue - the agreement's value
|
---|
487 | */
|
---|
488 | public void setCurrentTurnOpponentSelectedValue(double agreementValue) {
|
---|
489 | agent.setCurrentTurnOpponentSelectedValue(agreementValue);
|
---|
490 | }
|
---|
491 |
|
---|
492 | /**
|
---|
493 | * Sets the String of the selected offer for the following turn
|
---|
494 | * @param agreementStr - the agreement as String
|
---|
495 | */
|
---|
496 | public void setNextTurnAgreementString(String agreementStr) {
|
---|
497 | agent.setNextTurnAgreementString(agreementStr);
|
---|
498 | }
|
---|
499 |
|
---|
500 | /**
|
---|
501 | * Sets the String of the selected offer for the current turn
|
---|
502 | * @param agreementStr - the agreement as String
|
---|
503 | */
|
---|
504 | public void setCurrentTurnAgreementString(String agreementStr) {
|
---|
505 | agent.setCurrentTurnAgreementString(agreementStr);
|
---|
506 | }
|
---|
507 |
|
---|
508 | /**
|
---|
509 | * Sets the side of the opponent (Side A or B)
|
---|
510 | * @param agreementStr - the agreement as String
|
---|
511 | */
|
---|
512 | public void setNextTurnOpponentType(int type) {
|
---|
513 | agent.setNextTurnOpponentType(type);
|
---|
514 | }
|
---|
515 |
|
---|
516 | /**
|
---|
517 | * Calculating the response to a given proposal.
|
---|
518 | * This method eventually calls AbstractAutomatedAgent.calculateResponse()
|
---|
519 | * @see AbstractAutomatedAgent#calculateResponse
|
---|
520 | *
|
---|
521 | */
|
---|
522 | public void calculateResponse(int messageType, int[] currentAgreementIdx, String message) {
|
---|
523 | agent.calculateResponse(messageType, currentAgreementIdx, message);
|
---|
524 | }
|
---|
525 |
|
---|
526 | /**
|
---|
527 | * @return string of a given agreement for the current agent
|
---|
528 | */
|
---|
529 | public String getMessageByIndices(int[] currentAgreementIdx) {
|
---|
530 | return agent.getAgreementStr(currentAgreementIdx);
|
---|
531 | }
|
---|
532 |
|
---|
533 | /**
|
---|
534 | * @return indices of a given agreement for the current agent
|
---|
535 | */
|
---|
536 | public int[] getMessageIndicesByMessage(String currentAgreementStr) {
|
---|
537 | return agent.getAgreementIndices(currentAgreementStr);
|
---|
538 | }
|
---|
539 |
|
---|
540 | /**
|
---|
541 | * @return value of a given agreement for the current agent
|
---|
542 | */
|
---|
543 | public double getAgreementValue(int[] currentAgreementIdx) {
|
---|
544 | double dAgreementValue = agent.getAgreementValue(currentAgreementIdx);
|
---|
545 | return dAgreementValue;
|
---|
546 | }
|
---|
547 |
|
---|
548 | /**
|
---|
549 | *
|
---|
550 | * @return the total number of seconds per each turn
|
---|
551 | */
|
---|
552 | public double getSecondPerTurn() {
|
---|
553 | return agent.getSecondsForTurn();
|
---|
554 | }
|
---|
555 |
|
---|
556 | /**
|
---|
557 | *
|
---|
558 | * @return the total number of issues for negotiation
|
---|
559 | */
|
---|
560 | public int getTotalIssues(AutomatedAgentType agentType) {
|
---|
561 | return agentType.getIssuesNum();
|
---|
562 | }
|
---|
563 |
|
---|
564 | /**
|
---|
565 | * return the maximal value for the agent for issue i
|
---|
566 | * @param agentType - the agent's type
|
---|
567 | * @param issueNum - the issue number
|
---|
568 | * @return the maximal value per that issue
|
---|
569 | */
|
---|
570 | public int getMaxValuePerIssue(AutomatedAgentType agentType, int issueNum) {
|
---|
571 | return agentType.getMaxIssueValue(issueNum);
|
---|
572 | }
|
---|
573 |
|
---|
574 | /**
|
---|
575 | *
|
---|
576 | * @return whether the flag for sending offers/queries/promises
|
---|
577 | * is true or not
|
---|
578 | */
|
---|
579 | public boolean getSendOfferFlag() {
|
---|
580 | return agent.getSendOfferFlag();
|
---|
581 | }
|
---|
582 |
|
---|
583 | /**
|
---|
584 | * Sets the boolean flag of sending offers/queries/promises
|
---|
585 | * @param flag - true if wanting to send message, false - o/w
|
---|
586 | */
|
---|
587 | public void setSendOfferFlag(boolean flag) {
|
---|
588 | agent.setSendOfferFlag(flag);
|
---|
589 | }
|
---|
590 | }
|
---|