Synthia
Generic and flexible data structure generator
DiscardRatio.java
Go to the documentation of this file.
1 package ca.uqac.lif.synthia.util;
2 
4 import ca.uqac.lif.synthia.Picker;
6 
7 /**
8  * A utility picker to calculate the discard ratio of a {@link PickIf} picker.
9  * @ingroup API
10  */
11 public class DiscardRatio implements Picker<Float>
12 {
13  /**
14  * Max rejected ratio of generated object autorized.
15  */
16  protected final float m_maxRejectedRatio;
17 
18  /**
19  * Generated object counter.
20  */
21  protected int m_generatedCounter;
22 
23  /**
24  * Discarted generated object counter.
25  */
26  protected int m_discartedCounter;
27 
28  /**
29  * Private constructor used to duplicate de picker.
30  *
31  * @param ratio Maximal rejected ratio.
32  * @param generated_counter Generated object counter.
33  * @param discarted_counter Discarted generated object counter.
34  */
35  private DiscardRatio(float ratio, int generated_counter, int discarted_counter)
36  {
37  m_maxRejectedRatio = ratio;
38  m_generatedCounter = generated_counter;
39  m_discartedCounter = discarted_counter;
40  }
41 
42  public DiscardRatio(float ratio)
43  {
44  m_maxRejectedRatio = ratio;
47  }
48 
49  /**
50  * Count the generated object as accepted.
51  */
52  public void countAsAccepted()
53  {
55  }
56 
57  /**
58  * Count the generated object as discarted.
59  */
60  public void countAsDiscarted()
61  {
64  }
65 
66  @Override
67  public void reset()
68  {
71  }
72 
73  @Override
74  public Float pick()
75  {
76  float ratio = (float) m_discartedCounter / (float) m_generatedCounter;
77 
78  if(ratio > m_maxRejectedRatio)
79  {
80  throw new GiveUpException();
81  }
82 
83  return ratio;
84  }
85 
86  @Override
87  public DiscardRatio duplicate(boolean with_state)
88  {
90  if(!with_state)
91  {
92  copy.reset();
93  }
94  return copy;
95  }
96 }
ca.uqac.lif.synthia.Picker
Picks an object.
Definition: Picker.java:36
ca.uqac.lif.synthia.util.DiscardRatio.m_discartedCounter
int m_discartedCounter
Discarted generated object counter.
Definition: DiscardRatio.java:26
ca.uqac.lif.synthia.util.DiscardRatio.m_maxRejectedRatio
final float m_maxRejectedRatio
Max rejected ratio of generated object autorized.
Definition: DiscardRatio.java:16
ca.uqac.lif.synthia.util.DiscardRatio.pick
Float pick()
Picks an object.
Definition: DiscardRatio.java:74
ca.uqac.lif.synthia.util.DiscardRatio.reset
void reset()
Puts the picker back into its initial state.
Definition: DiscardRatio.java:67
ca.uqac
ca.uqac.lif.synthia
Definition: Bounded.java:19
ca.uqac.lif.synthia.util.DiscardRatio.countAsAccepted
void countAsAccepted()
Count the generated object as accepted.
Definition: DiscardRatio.java:52
ca.uqac.lif.synthia.util.DiscardRatio
A utility picker to calculate the discard ratio of a PickIf picker.
Definition: DiscardRatio.java:11
ca.uqac.lif
ca.uqac.lif.synthia.relative.PickIf
Returns object from a picker satisfying a condition.
Definition: PickIf.java:39
ca
ca.uqac.lif.synthia.relative
Pickers that produce a value in relation to another value.
Definition: package-info.java:24
ca.uqac.lif.synthia.util.DiscardRatio.duplicate
DiscardRatio duplicate(boolean with_state)
Creates a copy of the picker.
Definition: DiscardRatio.java:87
ca.uqac.lif.synthia.util.DiscardRatio.countAsDiscarted
void countAsDiscarted()
Count the generated object as discarted.
Definition: DiscardRatio.java:60
ca.uqac.lif.synthia.util.DiscardRatio.m_generatedCounter
int m_generatedCounter
Generated object counter.
Definition: DiscardRatio.java:21
ca.uqac.lif.synthia.util.DiscardRatio.DiscardRatio
DiscardRatio(float ratio)
Definition: DiscardRatio.java:42
ca.uqac.lif.synthia.GiveUpException
An exception to throw to prevent the pick method of a PickIf picker from falling into an infinite loo...
Definition: GiveUpException.java:28