2016-08-22 2 views
0

Optaplanner 연습에서 포트폴리오 최적화에 하한 제약 조건을 추가하고 싶습니다.Optaplanner 연습에서 포트폴리오 최적화에 하한 제약 조건을 추가하고 싶습니다.

Optaplanner의 포트폴리오 최적화에서는 섹터 제약을 제어하여 비율 제한을 제어 할 수 있으며 최대 수량으로 지정된 상한값 만 제어 할 수 있습니다.

나는 '수량 하한선을 더하고, 하한선을 수량 상한선과 비슷하게 수량을 변경하려고 노력했다.' 그러나, 나는 그것을 적용하지 못했습니다.

어쨌든, Optaplanner의 포트폴리오 최적화에 하한 제한을 추가하는 더 좋은 방법이 있습니까?

Plz 도움말 이 지역 당 예를 들어 만약

+0

죄송합니다. – hjsg1010

답변

0

, 단지 RegionquantityMillisMinimum 필드를 추가 : 당신은 심각한 아무것도 포트폴리오 최적화를 사용하고

// New rule 
rule "Region quantity minimum" 
    when 
     $region : Region($quantityMillisMinimum : quantityMillisMinimum) 
     accumulate(
      AssetClassAllocation(region == $region, quantityMillis != null, $quantityMillis : quantityMillis); 
      $quantityMillisTotal : sum($quantityMillis); 
      $quantityMillisTotal < $quantityMillisMinimum 
     ) 
    then 
     scoreHolder.addHardConstraintMatch(kcontext, 
       $quantityMillisTotal - $quantityMillisMinimum); 
end 

:

public class Region extends AbstractPersistable { 

    private String name; 
    private Long quantityMillisMaximum; // In milli's (so multiplied by 1000) 

    // New field 
    private Long quantityMillisMinimum; // In milli's (so multiplied by 1000) 
} 

및 점수 규칙 하드 제약 조건을 추가 할 수 ? : 불쌍한 내 영어 실력에 대한

+0

답변을위한 Thx, Geoffrey. 나는 당신의 Q & As를 구글 +와 유튜브 비디오에서 보았다. 그런데 섹터에 하한 제한을 추가하고 아래 코드로 편집하려고합니다. // 섹터 수량 최소 Map sectorQuantityTotalMap = solution.calculateSectorQuantityMillisTotalMap(); 대한 (섹터 부문 : solution.getSectorList()) { 오래 사용할 수 = sector.getQuantityMillisMinimum() - sectorQuantityTotalMap.get (부문); 경우 (가능> 0) { hardScore + = 사용할; } } 그러나 작동하지 않습니다. (( ) 결과 비율이 한도보다 낮습니다. – hjsg1010

+0

주석에 코드를 인식하기가 어렵습니다. – hjsg1010

+0

아! 편집 .drl 파일로 해결되었습니다. Thx! – hjsg1010

관련 문제