Class KGOEVSelection

java.lang.Object
com.polytechnik.utils.EVSelected
com.polytechnik.kgo.KGOEVSelection
Direct Known Subclasses:
KGOIterationalLinearConstraints.KGOEVSelectionSeparatelyLast, KGOIterationalLinearConstraintsE.KGOEVSelectionSeparatelyLast, KGOIterationalLinearConstraintsExtraDegreesOfFreedom.KGOEVSelectionSeparatelyExtraElements

class KGOEVSelection extends EVSelected
A container to store a vector corresponding to a KGO operator. It has several methods to "adjust" stored arbitrary solution to become partially unitary KGO operator. This class is deprecated, use EVSelected instead.
See Also:
  • Field Details

    • nC

      private final int nC
      The dimensions, eVector.length=nX*nC.
    • nX

      private final int nX
      The dimensions, eVector.length=nX*nC.
    • EV

      private static final EVSolver EV
  • Constructor Details

    • KGOEVSelection

      KGOEVSelection(int ind, double[] eVector, double eLambda, int nOrig, int nC, int nX)
  • Method Details

    • getEVAdjustedTo1

      public AdjustedStateToUnitaryWithEV getEVAdjustedTo1()
      Adjust the EVSelected.eVector to be partially unitary. The result should be the same (within sign) as the one from getSVDAdjustedTo1(). This method is faster and returns the data with additional constraint-related info that is useful in iteration process.
      See Also:
    • getSVDAdjustedTo1

      public AdjustedStateToUnitaryWithSVD getSVDAdjustedTo1()
      Adjust all singular values to 1. The result should be the same as the one from getEVAdjustedTo1(). This method is typically used for only for unit tests.
      See Also:
    • selectTopEV

      static List<KGOEVSelection> selectTopEV(int ntop, double[] ev, int nC, int nX)
    • getSVDAdjustedPartially

      private AdjustedStateToUnitaryWithSVD getSVDAdjustedPartially(double adjustmentLevel)
      Adjust singular values partially.
      Parameters:
      adjustmentLevel - A value between [0:1], 0 -- do not adjust, 1 -- adjust all to 1, for other values they are set to Sigma*(1-adjustmentLevel)+1*(adjustmentLevel), then normalized to nC=sum Sigma^2.
      Returns:
      Adjusted SVD.
    • getSVDAdjustedToPlusMinus1

      AdjustedStateToUnitaryWithSVD getSVDAdjustedToPlusMinus1(double[] SK)
      Adjust all singular values to +-1, find the best combination of signs. For not very bad initial state the best result corresponds to all signs 1 (the same is with all -1), as this is a minimal adjustment of all positive singular values returned by a SVD solver. There are \( 2^{nC} \) check of +-1 combinations what may be really slow.
    • getSVDNonAdjusted

      public AdjustedStateToUnitaryWithSVD getSVDNonAdjusted()
      Do not adjust singular values.