Management Strategy Evaluation Demo  1.0
MSED
 All Classes Files Functions Variables Enumerations Enumerator Groups Pages
HarvestControlRule Class Reference

A harvest control rule class. More...

#include <HarvestControlRule.h>

Collaboration diagram for HarvestControlRule:
Collaboration graph

Public Types

enum  enumHCR {
  FORTY_TEN, FIXED_ESCAPEMENT, FIXED_ESCAPEMENT_CAP, FIXED_HARVEST_RATE,
  CONDITIONAL_CONSTANT_CATCH, THIRTY_TWENTY, FIXED_HR_DELTA, FLOOR_THIRTY_TWENTY,
  FAO_PA_COMPLIANT
}
 

Public Member Functions

 HarvestControlRule (int &eHCR)
 
double getTac (const double &bt, const double &fmsy, const double &msy, const double &bmsy, const double &bo, const double &delta, const double &ptac, const double &mintac)
 Return the TAC given estimates of current biomass and reference points. More...
 
double FortyTen (const double &bt, const double &bo, const double &fmsy)
 Implement the 40:10 harvest control rule. More...
 
double ThirtyTwenty (const double &bt, const double &bo, const double &fmsy)
 30:20 harvest control rule More...
 
double FixedHarvestRate (const double &bt, const double &fmsy)
 
double FixedEscapement (const double &bt, const double &bmsy)
 
double FixedEscapementCap (const double &bt, const double &bmsy, const double &msy)
 
double ConditionalConstantCatch (const double &bt, const double &bmsy, const double &msy, const double &fmsy)
 Implement the Conditional Constant Catch harvest control rule proposed by the IPHC. More...
 
double FixedHarvestRateDelta (const double &bt, const double &fmsy, const double &delta, const double &ptac)
 
double FloorThirtyTwenty (const double &bt, const double &bo, const double &fmsy, const double &mintac)
 

Detailed Description

A harvest control rule class.

Author
Steven Martell
Remarks
Contains an enum type that defines the various harvest control rules that can be used

Definition at line 10 of file HarvestControlRule.h.

Member Enumeration Documentation

A enum type to select the appropriate harvest control rule.

Enumerator
FORTY_TEN 

40:10 harvest contrl rule

FIXED_ESCAPEMENT 

Fixed escapement rule

FIXED_ESCAPEMENT_CAP 

Fixed escapement rule with a cap at MSY

FIXED_HARVEST_RATE 

Fixed harvest rate rule based on Fmys

CONDITIONAL_CONSTANT_CATCH 

IPHC's Conditional constant catch rule

THIRTY_TWENTY 

30:20 harvest control rule

FIXED_HR_DELTA 

Fixed catch with 15% maximum changed

FLOOR_THIRTY_TWENTY 

30:20 rule with a minimum catch floor.

FAO_PA_COMPLIANT 

Not implemented yet

Definition at line 19 of file HarvestControlRule.h.

Member Function Documentation

double HarvestControlRule::ConditionalConstantCatch ( const double &  bt,
const double &  bmsy,
const double &  msy,
const double &  fmsy 
)

Implement the Conditional Constant Catch harvest control rule proposed by the IPHC.

Author
Steve Martell
Parameters
btavailable biomass
bmsyBiomass at MSY
msyMaximum sustainable yield
fmsyFishing mortality rate that achieves MSY.

For this rule, fish at Fmsy if bt>0.8Bmsy and reduce the TAC to msy of the tac > MSY.

If the biomass is less than 0.8Bmsy and greater then 0.4Bmsy, then set fishing mortality rate as a liner function of depletion.

If the biomass is less than 0.4Bmsy, the set the tac=0

Definition at line 221 of file HarvestControlRule.cpp.

222 {
223  double tac;
224  double f = 0;
225  if( bt >= 0.8*bmsy)
226  {
227  f = fmsy;
228  }
229  else if( bt < 0.8*bmsy && bt >= 0.4*bmsy )
230  {
231  f = (bt-0.4*bmsy)/(0.8-0.4)*fmsy;
232  }
233  tac = f * bt;
234  if(tac > msy)
235  {
236  tac = msy;
237  }
238  return tac;
239 }

Here is the caller graph for this function:

double HarvestControlRule::FortyTen ( const double &  bt,
const double &  bo,
const double &  fmsy 
)

Implement the 40:10 harvest control rule.

Author
Steve Martell
Parameters
<bt>biomass available at time t
<bo>theoretical unfished biomass
<fmsy>Fishing mortality rate that generates Maximum Sustainable Yield.

This function implements the 40:10 harvest control rule that is commonly used by the Pacific Fisheries Management Council.

Definition at line 84 of file HarvestControlRule.cpp.

85 {
86  double dt = bt/bo;
87  double ft = fmsy;
88  if( dt <= 0.1 )
89  {
90  ft = 0;
91  }
92  else if( dt > 0.1 && dt <= 0.4 )
93  {
94  ft = fmsy * (dt-0.1)/(0.4-0.1);
95  }
96  else if( dt > 0.4 )
97  {
98  ft = fmsy;
99  }
100 
101  return bt*(1.-exp(-ft));
102 }

Here is the caller graph for this function:

double HarvestControlRule::getTac ( const double &  bt,
const double &  fmsy,
const double &  msy,
const double &  bmsy,
const double &  bo,
const double &  delta,
const double &  ptac,
const double &  mintac 
)

Return the TAC given estimates of current biomass and reference points.

Author
Steve Martell
Remarks
Uses a swithc statement based on the type of harvest control rule to call the appropriate function to calculate the TAC.
Parameters
btpreseason biomass forecast
fmsyestimate of Fmsy
msyestimate of MSY
bmsyestimate of Bmsy
boestimate of unfished spawning biomass

Definition at line 10 of file HarvestControlRule.cpp.

14 {
20  double tac = 0;
21  switch (m_enum)
22  {
23  case FORTY_TEN:
24  tac = FortyTen(bt, bo, fmsy);
25  cout<<"Forty Ten tac = "<<tac<<endl;
26  break;
27  case FIXED_ESCAPEMENT:
28  tac = FixedEscapement(bt,bmsy);
29  cout<<"Fixed Escapement tac = "<<tac<<endl;
30  break;
32  tac = FixedEscapementCap(bt,bmsy,msy);
33  cout<<"Fixed Escapement cap tac = "<<tac<<endl;
34  break;
35  case FIXED_HARVEST_RATE:
36  tac = FixedHarvestRate(bt,fmsy);
37  cout<<"Fixed harvest rate tac = "<<tac<<endl;
38  break;
40  tac = ConditionalConstantCatch(bt,bmsy,msy,fmsy);
41  cout<<"Conditional constant catch = "<<tac<<endl;
42  break;
43  case THIRTY_TWENTY:
44  tac = ThirtyTwenty(bt,bo,fmsy);
45  cout<<"Thirty Twenty tac = "<<tac<<endl;
46  break;
47  case FIXED_HR_DELTA:
48  tac = FixedHarvestRateDelta(bt,fmsy,delta,ptac);
49  cout<<"Fixed Harvest Rate Delta tac = "<<tac<<endl;
50  break;
51  case FAO_PA_COMPLIANT:
52  cout<<"FAO_PA_COMPLIANT"<<endl;
53  break;
55  cout<<"FLOOR_THIRTY_TWENTY"<<endl;
56  tac = FloorThirtyTwenty(bt,bo,fmsy,mintac);
57  break;
58 
59  }
60 
61  // Put in SUFD adjustment here
62  // 50% decrease, 33% increase
63 
64  // Evaluation framework, need to be able
65  // to tune the MP to achieve the best
66  // tradeoff in the performance measures.
67 
68 
69  // Floor
70  return tac;
71 }

Here is the call graph for this function:

Here is the caller graph for this function:

double HarvestControlRule::ThirtyTwenty ( const double &  bt,
const double &  bo,
const double &  fmsy 
)

30:20 harvest control rule

Author
Steve Martell
Remarks
Parameters
btpreseson available biomass forecast.

Definition at line 110 of file HarvestControlRule.cpp.

111 {
112  double dt = bt/bo;
113  double ft = fmsy;
114  if( dt <= 0.2 )
115  {
116  ft = 0;
117  }
118  else if( dt > 0.2 && dt <= 0.3 )
119  {
120  ft = fmsy * (dt-0.2)/(0.3-0.2);
121  }
122  else if( dt > 0.3 )
123  {
124  ft = fmsy;
125  }
126 
127  return bt*(1.-exp(-ft));
128 }

Here is the caller graph for this function:


The documentation for this class was generated from the following files: