Ignore:
Timestamp:
06/11/20 16:34:50 (4 years ago)
Author:
bart
Message:

Update to version 1.41

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/webapp/utilstable.xhtml

    r13 r14  
    257257        */
    258258        function addUtilityCell(cell, agreedbid, partyname, profileurl) {
    259                 if (Object.keys(agreedbid).lengt==0) {
    260                 cell.innerHTML = "0 :"+partyname;
    261                 return;
    262                 }
    263259                var util = utility(profiles[profileurl],agreedbid);
    264260                cell.innerHTML = Math.round(util*1000000)/1000000 +" :"+partyname;
     
    267263       
    268264
    269 
    270        
    271         /**
    272         @json the log file contents
    273         @param partyprofiles a dict with key=party id and value a the (linear additive) profile
    274         */
    275         function computeUtils(json, partyprofiles) {
    276                
    277                 setStatus("Computing utilities.")
    278                 var utilities={};
    279                         for (var party in partyprofiles) {
    280                                 utilities[party]=[];
    281                         }
    282                 var actions = json['actions'];
    283                 for (var action in actions) {
    284                         var offer = actions[action];
    285                         if (offer['offer']==undefined)
    286                                 continue;
    287                         var issueutilities = offer['offer']['bid']['issuevalues']
    288                                 for (var party in partyprofiles) {
    289                                         utilities[party].push(utility(partyprofiles[party],issueutilities));
    290                                 }
    291                 }
    292                 return utilities;
    293                
    294                
    295         }
    296265
    297266
     
    324293                /**
    325294                Compute utilityes
    326                 @param linadditive the linear additive utility space
     295                @param profile the linear additive utility space
    327296                @param issueValues the bid containing dict with values for the issues
    328                 @return utility of issueValues
     297                @param isResBidAlternative true if the reservation bid is usable as alternative bid
     298                  . If true, and the issueValues list is empty/null, this returns the utility
     299                  of the reservation bid instead.
     300                @return utility of issueValues. Returns 0 if profile =null or no bid available
     301               
    329302                */
    330                 function utility(profile, issueValues) {
     303                function utility(profile, issueValues, isResBidAlternative) {
     304                        if (profile==null) return 0;
     305
     306                        // check if we need the reservationbid.
     307                        if (issueValues==null || Object.keys(issueValues).length==0) {
     308                                var resBid = profile['reservationBid'];
     309                                if (resBid==null) return 0;
     310                                issueValues = resBid['issuevalues'];
     311                        }
     312                       
     313                        if (issueValues==null) return 0;
     314                       
    331315                        var util=0;
    332316                        var weights = profile['issueWeights'];
     
    359343                        if (utilfunc['discreteutils']!=undefined) {
    360344                                // it's discrete issue. Compute
    361                                 return utilfunc['discreteutils']['valueUtilities'][value];
     345                                if (value in utilfunc['discreteutils']['valueUtilities'])
     346                                        return utilfunc['discreteutils']['valueUtilities'][value];
     347                                return 0;
    362348                        }
    363349                setStatus("Unknown utility function type "+Object.keys(utilfunc));
Note: See TracChangeset for help on using the changeset viewer.