Ignore:
Timestamp:
10/08/20 10:17:25 (4 years ago)
Author:
bart
Message:

MOPAC support for timedependentparty, boulware, conceder, hardliner, linear

File:
1 edited

Legend:

Unmodified
Added
Removed
  • exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java

    r24 r25  
    6363        private Settings settings;
    6464        private Votes lastvotes;
     65        private String protocol;
    6566
    6667        public RandomParty() {
     
    8182                                this.progress = settings.getProgress();
    8283                                this.settings = settings;
     84                                this.protocol = settings.getProtocol().getURI().getPath();
     85
    8386                        } else if (info instanceof ActionDone) {
    8487                                Action otheract = ((ActionDone) info).getAction();
     
    8891                        } else if (info instanceof YourTurn) {
    8992                                makeOffer();
    90                                 nextRound();
    9193                        } else if (info instanceof Finished) {
    9294                                getReporter().log(Level.INFO, "Final ourcome:" + info);
     
    9496                                lastvotes = vote((Voting) info);
    9597                                getConnection().send(lastvotes);
    96                                 nextRound();
    9798                        } else if (info instanceof OptIn) {
    9899                                // just repeat our last vote.
    99100                                getConnection().send(lastvotes);
    100                                 nextRound();
    101101                        }
    102102                } catch (Exception e) {
    103103                        throw new RuntimeException("Failed to handle info", e);
    104104                }
    105         }
    106 
    107         private void nextRound() {
    108                 if (progress instanceof ProgressRounds) {
    109                         progress = ((ProgressRounds) progress).advance();
    110                 }
    111 
     105                updateRound(info);
    112106        }
    113107
     
    125119
    126120        /**
     121         * Update {@link #progress}
     122         *
     123         * @param info the received info. Used to determine if this is the last info
     124         *             of the round
     125         */
     126        private void updateRound(Inform info) {
     127                if (protocol == null)
     128                        return;
     129                switch (protocol) {
     130                case "SAOP":
     131                case "SHAOP":
     132                        if (!(info instanceof YourTurn))
     133                                return;
     134                        break;
     135                case "MOPAC":
     136                        if (!(info instanceof OptIn))
     137                                return;
     138                        break;
     139                default:
     140                        return;
     141                }
     142                // if we get here, round must be increased.
     143                if (progress instanceof ProgressRounds) {
     144                        progress = ((ProgressRounds) progress).advance();
     145                }
     146
     147        }
     148
     149        /**
    127150         * send our next offer
    128151         */
    129152        private void makeOffer() throws IOException {
    130153                Action action;
    131                 String protocol = settings.getProtocol().getURI().getPath();
    132154                if ((protocol.equals("SAOP") || protocol.equals("SHAOP"))
    133155                                && isGood(lastReceivedBid)) {
Note: See TracChangeset for help on using the changeset viewer.