소스 검색

pidV2更新

gufengshou1 1 년 전
부모
커밋
2a864badcb

+ 3 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogMergeEcpmScorer.java

@@ -37,7 +37,7 @@ public class VlogMergeEcpmScorer extends BaseLRModelScorer {
 
 
         long startTime = System.currentTimeMillis();
-        List<AdRankItem> result = mergetEcpm(rankItems);
+        List<AdRankItem> result = mergeEcpm(rankItems);
         LOGGER.debug("ctr ranker time java items size={}, time={} ", result != null ? result.size() : 0,
                 System.currentTimeMillis() - startTime);
 
@@ -46,7 +46,8 @@ public class VlogMergeEcpmScorer extends BaseLRModelScorer {
 
 
 
-    public List<AdRankItem> mergetEcpm(List<AdRankItem> items) {
+
+    public List<AdRankItem> mergeEcpm(List<AdRankItem> items) {
         CountDownLatch countDownLatch = new CountDownLatch(items.size());
         for (AdRankItem item : items) {
             executorService.execute(() -> {

+ 3 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/container/PidLambdaV2Container.java

@@ -230,8 +230,9 @@ public class PidLambdaV2Container {
             lastError = error;
             lastPidValue=kp * error + ki * integral + kd * derivative;
             double result=currentValue+lastPidValue;
-            if(result<=currentValue/8d){
-                result=currentValue/8d;
+            double min=setPoint>currentValue?currentValue:setPoint;
+            if(result<=min/8d){
+                result=min/8d;
             }
             return result;
         }

+ 32 - 6
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

@@ -88,7 +88,7 @@ public class RankServiceImpl implements RankService {
             item.setBid1(1d);
             item.setBid2(1d);
             item.setCpa(75d);
-            item.setPidLambda(PidLambdaContainer.getPidLambda(item.getAdId()));
+            item.setPidLambda(1d);
         }
 
         //兜底方案
@@ -270,14 +270,27 @@ public class RankServiceImpl implements RankService {
         if(!cache.isEmpty()){
             rankItems=new LinkedList<>(cache.values());
         }
+        double lambda=-1d;
         for(AdRankItem item:rankItems){
             try {
+//                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
                 AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
-                item.setCpa(dto.getCpa());
-                item.setPidLambda(PidLambdaV2Container.getPidLambda(item.getAdId()));
+                lambda=PidLambdaV2Container.getPidLambda(item.getAdId());
+                if(lambda<0){
+                    item.setCpa(dto.getCpa());
+                    item.setPidLambda(0.6);
+                }else {
+                    if(dto.getCpa()>1&&lambda<=1){
+                        lambda=2d;
+                    }
+                    item.setCpa(lambda);
+                    item.setPidLambda(1d);
+                }
+
             }catch (Exception e){
+                log.error("rankItems info error itemId={}",item.getAdId());
                 e.printStackTrace();
             }
         }
@@ -288,10 +301,21 @@ public class RankServiceImpl implements RankService {
                 AdRankItem item=new AdRankItem();
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
-                item.setCpa(dto.getCpa());
                 item.setAdId(dto.getCreativeId());
                 item.setItemFeature(new AdItemFeature());
-                item.setPidLambda(PidLambdaV2Container.getPidLambda(item.getAdId()));
+                lambda=PidLambdaV2Container.getPidLambda(item.getAdId());
+                if(lambda<0){
+                    item.setCpa(dto.getCpa());
+                    item.setPidLambda(0.6);
+                }else {
+                    if(dto.getCpa()>1&&lambda<=1){
+                        lambda=2d;
+                    }
+                    item.setCpa(lambda);
+                    item.setPidLambda(1d);
+                }
+//                item.setCpa(dto.getCpa());
+//                item.setPidLambda(PidLambdaContainer.getPidLambda(item.getAdId()));
                 rankItems.add(item);
             }
             rankResult=rankServiceThompson.rank(param, userAdFeature, rankItems,null);
@@ -320,6 +344,7 @@ public class RankServiceImpl implements RankService {
             realECpm=cpmMin/1000d;
         }
         result.setEcpm2(realECpm);
+        AdPlatformBidCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
         JSONObject object=new JSONObject();
         object.put("mid",request.getMid());
         object.put("adid",result.getCreativeId());
@@ -332,7 +357,8 @@ public class RankServiceImpl implements RankService {
         //临时加入供pid v2使用
         object.put("realECpm",realECpm);
         object.put("creativeId",result.getCreativeId());
-        object.put("cpa",topItem.getCpa());
+        //CPA还原
+        object.put("cpa",dto.getCpa());
         object.put("dataTime",currentTime.format(timeFormatter));
         log.info("svc=adBidRankNewPid {}", JSONObject.toJSONString(object));
         object.remove("lrsamples");