40 void setup(
const QJSValue &js_value);
46 double value(
const FMStand *stand,
const int specific_year=-1);
48 double minValue(
const double U=100.)
const;
50 double maxValue(
const double U=100.)
const;
70 void setup(QJSValue &js_value, QStringList event_names);
72 QJSValue
run(
const QString event,
FMStand *stand, QJSValueList *params=0);
74 bool hasEvent(
const QString &event)
const;
78 QMap<QString, QJSValue> mEvents;
86 void setup(
const QJSValue &js_value);
88 bool isValid()
const {
return filter_type!=ftInvalid;}
91 enum { ftInvalid, ftExpression, ftJavascript} filter_type;
99 void setup(QJSValue &js_value);
103 QList<DynamicExpression> mConstraints;
116 bool active()
const {
return flag(Active); }
136 void setDoSimulate(
const bool dosimulate) {setFlag(DoSimulate, dosimulate); }
137 void setIsSalvage(
const bool issalvage) {setFlag(IsSalvage, issalvage); }
141 enum Flags { Active=1,
152 bool flag(
const ActivityFlags::Flags flag)
const {
return mFlags & flag; }
153 void setFlag(
const ActivityFlags::Flags flag,
const bool value) {
if (value) mFlags |= flag;
else mFlags &= (flag ^ 0xffffff );}
173 virtual QString
type()
const;
174 QString
name()
const {
return mName; }
175 int index()
const {
return mIndex; }
185 virtual void setup(QJSValue value);
199 virtual QStringList
info();
208 void setIndex(
const int index) { mIndex =
index; }
209 void setName(
const QString &
name) { mName =
name; }
212 const FMSTP *mProgram;
214 Constraints mConstraints;
216 DynamicExpression mEnabledIf;
Q_DECLARE_TYPEINFO(ABE::ActivityFlags, Q_PRIMITIVE_TYPE)
Activity meta data (enabled, active, ...) that need to be stored per stand.
Definition: activity.h:110
void setIsRepeating(const bool repeat)
Definition: activity.h:130
ActivityFlags(Activity *act)
Definition: activity.h:113
void setIsScheduled(const bool doschedule)
Definition: activity.h:135
bool isFinalHarvest() const
Definition: activity.h:121
bool isScheduled() const
Definition: activity.h:123
void setExecuteImmediate(const bool doexec)
Definition: activity.h:134
ActivityFlags()
Definition: activity.h:112
bool isDoSimulate() const
Definition: activity.h:124
Activity * activity() const
Definition: activity.h:114
bool isRepeating() const
Definition: activity.h:118
bool active() const
Definition: activity.h:116
void setForceNext(const bool isnext)
Definition: activity.h:132
void setEnabled(const bool enabled)
Definition: activity.h:129
void setFinalHarvest(const bool isfinal)
Definition: activity.h:133
bool isPending() const
Definition: activity.h:119
void setActive(const bool active)
Definition: activity.h:128
bool enabled() const
Definition: activity.h:117
void setIsPending(const bool pending)
Definition: activity.h:131
void setIsSalvage(const bool issalvage)
Definition: activity.h:137
bool isForcedNext() const
Definition: activity.h:120
bool isSalvage() const
Definition: activity.h:125
bool isExecuteImmediate() const
Definition: activity.h:122
void setDoSimulate(const bool dosimulate)
Definition: activity.h:136
Activity is the base class for management activities.
Definition: activity.h:162
QString name() const
name of the activity as provided by JS
Definition: activity.h:174
virtual void setup(QJSValue value)
setup of the activity (events, schedule, constraints). additional setup in derived classes.
Definition: activity.cpp:478
Phase
Definition: activity.h:171
@ Regeneration
Definition: activity.h:171
@ Tending
Definition: activity.h:171
@ Thinning
Definition: activity.h:171
@ All
Definition: activity.h:171
@ Invalid
Definition: activity.h:171
Schedule & schedule()
Definition: activity.h:201
int earliestSchedule(const double U=100.) const
get earlist possible scheduled year (relative to rotation begin)
Definition: activity.h:177
virtual bool execute(FMStand *stand)
executes the action (usually defined in derived classes) using the context of 'stand'.
Definition: activity.cpp:513
virtual double scheduleProbability(FMStand *stand, const int specific_year=-1)
returns a value > 0 if the activity coult be scheduled now
Definition: activity.cpp:501
Constraints & constraints()
Definition: activity.h:202
ActivityFlags & standFlags(FMStand *stand=0)
Definition: activity.cpp:547
virtual QString type() const
Definition: activity.cpp:473
virtual bool evaluate(FMStand *stand)
executes the evaluation of the forest stand.
Definition: activity.cpp:520
friend class FMSTP
Definition: activity.h:217
static QStringList mAllowedProperties
Definition: activity.h:206
Events & events()
Definition: activity.h:203
int optimalSchedule(const double U=100.) const
get optimal scheduled year (relative to rotation begin)
Definition: activity.h:181
int latestSchedule(const double U=100.) const
get latest possible scheduled year (relative to rotation begin)
Definition: activity.h:179
ActivityFlags mBaseActivity
Definition: activity.h:205
static Activity * createActivity(const QString &type, FMSTP *stp)
Activity factory - create activities for given 'type'.
Definition: activity.cpp:447
virtual QStringList info()
dumps some information for debugging
Definition: activity.cpp:536
bool isRepeatingActivity() const
Definition: activity.h:182
int index() const
index of the activity within the STP
Definition: activity.h:175
Activity(const FMSTP *parent)
Definition: activity.cpp:433
virtual void evaluateDyanamicExpressions(FMStand *stand)
function that evaluates "bound" dynamic expressions
Definition: activity.cpp:527
const FMSTP * program() const
Definition: activity.h:172
virtual ~Activity()
Definition: activity.cpp:442
virtual double execeuteProbability(FMStand *stand)
returns a probability for the activity to be executed (ie all constraints are fulfilled) return value...
Definition: activity.cpp:507
The ActivityObj class encapsulates the 'activity' object in JS.
Definition: fomescript.h:333
Definition: activity.h:96
double evaluate(FMStand *stand)
run the constraints
Definition: activity.cpp:306
Constraints()
Definition: activity.h:98
QStringList dump()
prints some debug info
Definition: activity.cpp:326
void setup(QJSValue &js_value)
setup from javascript
Definition: activity.cpp:285
Definition: activity.h:64
QString dump()
prints some debug info
Definition: activity.cpp:273
void clear()
clear the list of events
Definition: activity.cpp:225
Events()
Definition: activity.h:66
void setup(QJSValue &js_value, QStringList event_names)
setup events from the javascript object
Definition: activity.cpp:230
QJSValue run(const QString event, FMStand *stand, QJSValueList *params=0)
execute javascript event /if registered) in the context of the forest stand 'stand'.
Definition: activity.cpp:241
bool hasEvent(const QString &event) const
returns true, if the event 'event' is available.
Definition: activity.cpp:268
The FMSTP class encapsulates a stand treatment program, which is defined in Javascript.
Definition: fmstp.h:39
FMStand encapsulates a forest stand for the forest management engine.
Definition: fmstand.h:49
Definition: activity.h:34
double maxValue(const double U=100.) const
returns the latest possible execution time
Definition: activity.cpp:200
int repeat_interval
Definition: activity.h:58
int topt
Definition: activity.h:54
int tmin
Definition: activity.h:54
double optimalValue(const double U=100.) const
returns the "optimal" year, i.e. the first year when prob. to execute is highest.
Definition: activity.cpp:211
void setup(const QJSValue &js_value)
Definition: activity.cpp:56
int tmax
Definition: activity.h:54
void clear()
Definition: activity.h:39
bool repeat
Definition: activity.h:60
double tminrel
Definition: activity.h:55
Schedule()
Definition: activity.h:37
bool force_execution
Definition: activity.h:56
bool absolute
Definition: activity.h:61
QString dump() const
Definition: activity.cpp:94
int repeat_start
Definition: activity.h:59
double value(const FMStand *stand, const int specific_year=-1)
value() evaluates the schedule for the given 'stand'.
Definition: activity.cpp:103
double tmaxrel
Definition: activity.h:55
double minValue(const double U=100.) const
gives (fixed) earliest possible execution time
Definition: activity.cpp:189
double toptrel
Definition: activity.h:55
Schedule(QJSValue &js_value)
Definition: activity.h:38
An expression engine for mathematical expressions provided as strings.
Definition: expression.h:29
DynamicExpression encapsulates an "expression" that can be either a iLand expression,...
Definition: activity.h:83
QString dump() const
Definition: activity.cpp:417
bool evaluate(FMStand *stand) const
Definition: activity.cpp:371
~DynamicExpression()
Definition: activity.cpp:336
bool isValid() const
Definition: activity.h:88
DynamicExpression()
Definition: activity.h:84
void setup(const QJSValue &js_value)
Definition: activity.cpp:342