14 #ifndef OR_TOOLS_SAT_THETA_TREE_H_
15 #define OR_TOOLS_SAT_THETA_TREE_H_
93 template <
typename IntegerType>
102 template <
typename IntegerType>
112 void Reset(
int num_events);
128 IntegerType energy_min, IntegerType energy_max);
133 IntegerType energy_min, IntegerType energy_max);
141 IntegerType energy_max);
146 IntegerType initial_envelope_opt,
147 IntegerType energy_max);
193 IntegerType target_envelope,
int* critical_event,
int* optional_event,
194 IntegerType* available_energy)
const;
198 return tree_[GetLeafFromEvent(event)].sum_of_energy_min;
203 IntegerType envelope;
204 IntegerType envelope_opt;
205 IntegerType sum_of_energy_min;
206 IntegerType max_of_energy_delta;
209 TreeNode ComposeTreeNodes(TreeNode left, TreeNode right);
211 int GetLeafFromEvent(
int event)
const;
212 int GetEventFromLeaf(
int leaf)
const;
215 void RefreshNode(
int node);
221 int GetMaxLeafWithEnvelopeGreaterThan(
int node, IntegerType target_envelope,
222 IntegerType* extra)
const;
225 int GetLeafWithMaxEnergyDelta(
int node)
const;
229 void GetLeavesWithOptionalEnvelopeGreaterThan(
230 IntegerType target_envelope,
int* critical_leaf,
int* optional_leaf,
231 IntegerType* available_energy)
const;
240 bool leaf_nodes_have_delayed_operations_ =
false;
243 std::vector<TreeNode> tree_;
247 extern template class ThetaLambdaTree<IntegerValue>;
248 extern template class ThetaLambdaTree<int64>;
IntegerType GetEnvelopeOf(int event) const
void GetEventsWithOptionalEnvelopeGreaterThan(IntegerType target_envelope, int *critical_event, int *optional_event, IntegerType *available_energy) const
void RecomputeTreeForDelayedOperations()
IntegerType GetOptionalEnvelope() const
void RemoveEvent(int event)
int GetMaxEventWithEnvelopeGreaterThan(IntegerType target_envelope) const
void Reset(int num_events)
void AddOrUpdateOptionalEvent(int event, IntegerType initial_envelope_opt, IntegerType energy_max)
void DelayedAddOrUpdateEvent(int event, IntegerType initial_envelope, IntegerType energy_min, IntegerType energy_max)
IntegerType EnergyMin(int event) const
void DelayedAddOrUpdateOptionalEvent(int event, IntegerType initial_envelope_opt, IntegerType energy_max)
void AddOrUpdateEvent(int event, IntegerType initial_envelope, IntegerType energy_min, IntegerType energy_max)
IntegerType GetEnvelope() const
void DelayedRemoveEvent(int event)
constexpr IntegerValue kMinIntegerValue(-kMaxIntegerValue)
constexpr IntegerType IntegerTypeMinimumValue()
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...