{
  "modelName": "AgriNudgex Logistic Adoption ABM",
  "modelVersion": "1.0.0",
  "modelStatus": "archived",
  "dataOrigin": "SYNTHETIC",
  "dataOriginStatement": "All farmer data are SYNTHETIC agents generated by the AgriNudgex simulation model. They do not represent real farmers, observed behaviour, or empirical measurements. Results are model outputs conditional on stated assumptions and are not evidence of real-world effectiveness.",
  "monetaryUnit": "MU (abstract monetary unit)",
  "equations": [
    "P(i,t) = 1 / (1 \u002B exp(\u2212U(i,t)))",
    "U(i,t) = \u03B1_i \u002B \u03B2_B\u00B7B(i,t) \u2212 \u03B2_C\u00B7C\u0303_i \u002B \u03B2_R\u00B7s_i\u00B7R\u0303exp(i,t)",
    "C\u0303_i = C_i / M ;  R\u0303exp(i,t) = Rexp(i,t) / M",
    "B(i,t) = clamp[0,1](B_i \u002B \u03C1\u00B7D(i,t\u22121))",
    "Rexp(i,t) = \u03C0(t\u22121) \u00B7 E_m(D=1, q\u0303(i,t), q0_i),  q\u0303(i,t) = q(i,t\u22121) \u002B \u03B3\u00B7(qmax_i \u2212 q(i,t\u22121)),  \u03C0(0) = 1",
    "D(i,t) = 1[u(i,t) \u003C P(i,t)],  u(i,t) ~ U(0,1) common across mechanisms",
    "q(i,t) = q(i,t\u22121) \u002B \u03B3\u00B7(qmax_i \u2212 q(i,t\u22121)) if D(i,t)=1 ;  q(i,t\u22121) \u2212 \u03B4\u00B7(q(i,t\u22121) \u2212 q0_i) otherwise",
    "q\u0302(i,t) = clamp[0,1](q(i,t) \u002B \u03B5),  \u03B5 ~ N(0, \u03C3_v\u00B2)",
    "Cap(t) = Remaining(t) / (T \u2212 t \u002B 1)   [per-period rule with carry-over]",
    "Paid(i,t) = E_m(i,t) \u00B7 min(1, Cap(t) / \u03A3_j E_m(j,t)) ;  \u03C0(t) = \u03A3 Paid / \u03A3 E_m"
  ],
  "parameters": [
    {
      "symbol": "\u03B1_i",
      "name": "Baseline adoption propensity",
      "unit": "logit (dimensionless)",
      "defaultValue": "TN(\u22122.0, 1.0; [\u22126, 2])",
      "role": "Agent attribute",
      "description": "Intrinsic tendency to adopt, capturing unobserved preferences. Drawn per farmer from a truncated normal."
    },
    {
      "symbol": "B_i",
      "name": "Perceived practice benefit",
      "unit": "index [0, 1]",
      "defaultValue": "TN(0.5, 0.15; [0, 1])",
      "role": "Agent attribute",
      "description": "Normalised perceived agronomic/environmental benefit of the sustainable practice."
    },
    {
      "symbol": "C_i",
      "name": "Additional adoption cost",
      "unit": "MU per period",
      "defaultValue": "TN(80, 25; [10, 200])",
      "role": "Agent attribute",
      "description": "Extra cost of applying the practice in a period. Enters utility normalised by M."
    },
    {
      "symbol": "s_i",
      "name": "Individual incentive sensitivity",
      "unit": "multiplier (dimensionless)",
      "defaultValue": "TN(1.0, 0.25; [0.1, 2.0])",
      "role": "Agent attribute",
      "description": "Scales the population reward coefficient \u03B2_R for farmer i (heterogeneous responsiveness to money)."
    },
    {
      "symbol": "q0_i",
      "name": "Baseline sustainability performance",
      "unit": "index [0, 1]",
      "defaultValue": "TN(0.35, 0.10; [0.05, 0.80])",
      "role": "Agent attribute",
      "description": "Performance index before the programme; reference for S2 improvement."
    },
    {
      "symbol": "qmax_i",
      "name": "Potential sustainability performance",
      "unit": "index [0, 1]",
      "defaultValue": "min(1, q0_i \u002B TN(0.30, 0.10; [0.05, 0.60]))",
      "role": "Agent attribute",
      "description": "Performance level approached under sustained adoption."
    },
    {
      "symbol": "D(i,0)",
      "name": "Initial adoption status",
      "unit": "binary",
      "defaultValue": "Bernoulli(0.10)",
      "role": "Agent attribute",
      "description": "Adoption status before period 1."
    },
    {
      "symbol": "\u03B2_B",
      "name": "Benefit coefficient",
      "unit": "utility per index unit",
      "defaultValue": "2.0",
      "role": "Behavioural",
      "description": "Weight of perceived benefit in utility."
    },
    {
      "symbol": "\u03B2_C",
      "name": "Cost coefficient",
      "unit": "utility per M",
      "defaultValue": "1.5",
      "role": "Behavioural",
      "description": "Weight of normalised cost in utility."
    },
    {
      "symbol": "\u03B2_R",
      "name": "Reward coefficient (incentive sensitivity level)",
      "unit": "utility per M",
      "defaultValue": "Low 0.75 \u00B7 Medium 1.5 \u00B7 High 3.0",
      "role": "Experimental factor",
      "description": "Weight of normalised expected reward. Medium equals \u03B2_C (one MU of expected reward offsets one MU of cost); Low/High are \u00D70.5/\u00D72."
    },
    {
      "symbol": "\u03C1",
      "name": "Experience effect",
      "unit": "index units",
      "defaultValue": "0.10",
      "role": "Behavioural",
      "description": "Increase in perceived benefit after adopting in the previous period."
    },
    {
      "symbol": "M",
      "name": "Monetary reference",
      "unit": "MU",
      "defaultValue": "100",
      "role": "Normalisation",
      "description": "Scale used to normalise costs and rewards in the utility function."
    },
    {
      "symbol": "\u03B3",
      "name": "Improvement rate",
      "unit": "fraction per period",
      "defaultValue": "0.35",
      "role": "Dynamics",
      "description": "Share of the gap to potential closed in an adopting period."
    },
    {
      "symbol": "\u03B4",
      "name": "Decay rate",
      "unit": "fraction per period",
      "defaultValue": "0.25",
      "role": "Dynamics",
      "description": "Share of the gain above baseline lost in a non-adopting period."
    },
    {
      "symbol": "\u03C3_v",
      "name": "Verification noise",
      "unit": "index units (SD)",
      "defaultValue": "0.02",
      "role": "Dynamics",
      "description": "Measurement error of performance verification."
    },
    {
      "symbol": "F",
      "name": "S1 fixed reward",
      "unit": "MU per period",
      "defaultValue": "100 (= M)",
      "role": "Mechanism",
      "description": "Flat payment to each qualifying adopter."
    },
    {
      "symbol": "q_min",
      "name": "S1 minimum performance",
      "unit": "index [0, 1]",
      "defaultValue": "0 (adoption suffices)",
      "role": "Mechanism",
      "description": "Optional performance requirement for S1."
    },
    {
      "symbol": "k",
      "name": "S2 performance rate",
      "unit": "MU per index unit",
      "defaultValue": "333.33",
      "role": "Mechanism",
      "description": "Nominal parity calibration: k = M / E[qmax \u2212 q0] = 100 / 0.30, so a farmer reaching the mean potential gain is entitled to M per period."
    },
    {
      "symbol": "cap",
      "name": "S2 reward cap",
      "unit": "MU per period",
      "defaultValue": "200",
      "role": "Mechanism",
      "description": "Upper bound on the S2 reward per farmer and period."
    },
    {
      "symbol": "\u03B8_k, R_k",
      "name": "S3 tiers",
      "unit": "index \u2192 MU per period",
      "defaultValue": "0.45\u219250 \u00B7 0.55\u2192100 \u00B7 0.65\u2192150",
      "role": "Mechanism",
      "description": "Thresholds on verified performance and associated rewards; the middle tier pays M."
    },
    {
      "symbol": "T",
      "name": "Horizon",
      "unit": "periods",
      "defaultValue": "12",
      "role": "Design",
      "description": "Number of decision periods (abstract cycles, e.g. seasons)."
    },
    {
      "symbol": "N",
      "name": "Population size",
      "unit": "farmers",
      "defaultValue": "100 \u00B7 250 \u00B7 500",
      "role": "Experimental factor",
      "description": "Number of synthetic farmers."
    },
    {
      "symbol": "Budget",
      "name": "Programme budget",
      "unit": "MU per farmer over horizon",
      "defaultValue": "Low 200 \u00B7 Medium 400 \u00B7 High 800",
      "role": "Experimental factor",
      "description": "Total budget = per-farmer budget \u00D7 N, i.e. 2, 4 or 8 reference rewards per farmer over the horizon."
    },
    {
      "symbol": "R",
      "name": "Repetitions",
      "unit": "independent runs",
      "defaultValue": "100",
      "role": "Design",
      "description": "Monte Carlo repetitions per configuration cell."
    },
    {
      "symbol": "seed",
      "name": "Master random seed",
      "unit": "integer",
      "defaultValue": "user-defined",
      "role": "Design",
      "description": "Root of all derived random streams."
    }
  ],
  "metrics": [
    {
      "key": "finalAdoptionRate",
      "label": "Final adoption rate",
      "unit": "share of farmers (0\u20131)",
      "definition": "Share of farmers adopting in the final period T.",
      "undefinedWhen": "Never."
    },
    {
      "key": "meanAdoptionRate",
      "label": "Mean adoption rate",
      "unit": "share of farmers (0\u20131)",
      "definition": "Average over periods 1..T of the per-period adoption share.",
      "undefinedWhen": "Never."
    },
    {
      "key": "finalAdoptionImprovement",
      "label": "Adoption improvement vs control (final)",
      "unit": "percentage points",
      "definition": "Final adoption rate minus that of S0 in the same configuration cell and repetition (paired, common random numbers).",
      "undefinedWhen": "For S0 itself (not applicable)."
    },
    {
      "key": "meanAdoptionImprovement",
      "label": "Adoption improvement vs control (mean)",
      "unit": "percentage points",
      "definition": "Mean adoption rate minus that of S0 in the same configuration cell and repetition.",
      "undefinedWhen": "For S0 itself (not applicable)."
    },
    {
      "key": "additionalAdopterPeriods",
      "label": "Additional adopter-periods",
      "unit": "farmer-periods",
      "definition": "\u03A3_t adopters(m,t) \u2212 \u03A3_t adopters(S0,t) in the same cell and repetition.",
      "undefinedWhen": "For S0 itself (not applicable)."
    },
    {
      "key": "totalExpenditure",
      "label": "Total incentive expenditure",
      "unit": "MU",
      "definition": "Sum of rewards actually paid over the horizon (after budget rationing).",
      "undefinedWhen": "Never."
    },
    {
      "key": "costPerAdditionalAdopter",
      "label": "Cost per additional adopter-period",
      "unit": "MU per farmer-period",
      "definition": "Total expenditure divided by additional adopter-periods versus control.",
      "undefinedWhen": "When additional adopter-periods \u2264 0 (no incremental adoption), and for S0."
    },
    {
      "key": "budgetUtilization",
      "label": "Budget utilisation",
      "unit": "share of budget (0\u20131)",
      "definition": "Total expenditure divided by the total programme budget.",
      "undefinedWhen": "When the budget is zero."
    },
    {
      "key": "rewardGini",
      "label": "Reward Gini (all farmers)",
      "unit": "index (0\u20131)",
      "definition": "Gini coefficient of cumulative rewards across all farmers, zeros included (0 = equal, \u21921 = concentrated).",
      "undefinedWhen": "When no rewards were paid (e.g. S0)."
    },
    {
      "key": "recipientRewardGini",
      "label": "Reward Gini (recipients only)",
      "unit": "index (0\u20131)",
      "definition": "Gini coefficient of cumulative rewards among farmers who received any reward.",
      "undefinedWhen": "When nobody received a reward."
    },
    {
      "key": "shareRewarded",
      "label": "Share of farmers rewarded",
      "unit": "share of farmers (0\u20131)",
      "definition": "Share of farmers who received a positive reward at least once during the horizon.",
      "undefinedWhen": "Never."
    },
    {
      "key": "meanPerformanceGain",
      "label": "Mean performance gain",
      "unit": "performance index units",
      "definition": "Mean over farmers of (final true performance \u2212 baseline performance).",
      "undefinedWhen": "Never."
    }
  ],
  "defaultConfiguration": {
    "name": "Untitled experiment",
    "description": null,
    "masterSeed": 20260101,
    "periods": 12,
    "repetitions": 100,
    "populationSizes": [
      100
    ],
    "budgetLevels": [
      {
        "label": "Medium",
        "budgetPerFarmer": 400
      }
    ],
    "sensitivityLevels": [
      {
        "label": "Medium",
        "betaR": 1.5
      }
    ],
    "mechanisms": [
      "S0",
      "S1",
      "S2",
      "S3"
    ],
    "budgetAllocation": "PerPeriodWithCarryOver",
    "behavior": {
      "betaB": 2,
      "betaC": 1.5,
      "experienceEffect": 0.1,
      "monetaryReference": 100
    },
    "population": {
      "initialAdoptionRate": 0.1,
      "baselinePropensity": {
        "mean": -2,
        "sd": 1,
        "min": -6,
        "max": 2
      },
      "perceivedBenefit": {
        "mean": 0.5,
        "sd": 0.15,
        "min": 0,
        "max": 1
      },
      "adoptionCost": {
        "mean": 80,
        "sd": 25,
        "min": 10,
        "max": 200
      },
      "incentiveSensitivity": {
        "mean": 1,
        "sd": 0.25,
        "min": 0.1,
        "max": 2
      },
      "baselinePerformance": {
        "mean": 0.35,
        "sd": 0.1,
        "min": 0.05,
        "max": 0.8
      },
      "performanceGainPotential": {
        "mean": 0.3,
        "sd": 0.1,
        "min": 0.05,
        "max": 0.6
      }
    },
    "performance": {
      "improvementRate": 0.35,
      "decayRate": 0.25,
      "verificationNoiseSd": 0.02
    },
    "mechanismSettings": {
      "fixedReward": 100,
      "fixedRewardMinimumPerformance": 0,
      "performanceRate": 333.3333333333333,
      "performanceRewardCap": 200,
      "tiers": [
        {
          "threshold": 0.45,
          "reward": 50
        },
        {
          "threshold": 0.55,
          "reward": 100
        },
        {
          "threshold": 0.65,
          "reward": 150
        }
      ]
    },
    "modelVersion": "1.0.0"
  }
}