Skip to the content.

RenaultNissan-v0

Category: Validated Case Study Agents: 2 (Nissan, Renault) Difficulty: Advanced Source: coopetition_gym/envs/case_study_envs.py


Overview

RenaultNissan-v0 models the Renault-Nissan Alliance across four distinct phases, as described in TR-2 (arXiv:2510.24909). This environment captures the 25+ year evolution of one of the most complex and enduring automotive alliances.

Unlike SLCD-v0 which models a single joint venture, RenaultNissan-v0 supports multi-phase simulation with different initial conditions for each era of the alliance.

Renault-Nissan Alliance Phases Trust evolution across four alliance phases: Formation (1999-2002), Mature Cooperation (2002-2018), Governance Crisis (2018-2020), and Strained Restructuring (2020-2025). Phase-specific initial conditions capture historical dynamics.


MARL Classification

Property Value
Game Type Markov Game (2-player, general-sum) with phase-dependent parameters
Cooperation Structure Mixed-Motive with evolving power dynamics across phases
Observability Full
Communication Implicit (through actions only)
Agent Symmetry Asymmetric (Renault: rescuer/0.52, Nissan: rescued/0.48)
Reward Structure Mixed with phase-specific interdependence
Action Space Continuous: A_Nissan = [0, 90], A_Renault = [0, 100]
State Dynamics Deterministic with phase-dependent initial conditions
Horizon Finite, T = 100 per phase
Canonical Comparison Multi-phase alliance dynamics; cf. Segrestin (2005) “Partnering to Explore”

Validation Status: Parameters derived from TR-2, calibrated to Renault-Nissan Alliance phases (1999-2025).


Formal Specification

This environment is formalized as a 2-player Markov Game with configurable phase-specific initial conditions.

Agents

N = {Nissan, Renault}

Agent Index Endowment Baseline Bargaining α Historical Role
Nissan 0 90.0 27.0 0.48 Rescued partner (1999)
Renault 1 100.0 30.0 0.52 Rescuer/controlling partner

Renault’s slight advantage reflects initial controlling stake.

State Space

S ⊆ ℝ¹⁷ (standard dyadic structure)

Action Space

Uniaxial Treatment: This environment uses the single-dimension action space characteristic of Coopetition-Gym v1.x. Renault-Nissan competition in vehicle markets is captured through phase-specific trust dynamics rather than explicit competitive actions.

Phase-Specific Initial Conditions

Phase Period τ₀ R₀ Θ₀ Interpretation
"formation" 1999-2002 0.45 0.05 0.95 Uncertain but hopeful
"mature" 2002-2018 0.70 0.02 0.98 Strong collaboration
"crisis" 2018-2020 0.30 0.45 0.55 Post-Ghosn governance crisis
"strained" 2020-2025 0.40 0.35 0.65 Restructured, ongoing tension

Validated Trust Parameters (TR-2)

Parameter Symbol Value Description
Trust Building Rate λ⁺ 0.08 Institutional trust (slow)
Trust Erosion Rate λ⁻ 0.25 Moderate erosion
Reputation Damage $\mu_R$ 0.55 Governance-related damage
Reputation Decay $\delta_R$ 0.02 Standard healing
Interdependence Amp. ξ 0.50 Cross-cultural amplification
Signal Sensitivity κ 1.0 Standard

Value Function

Parameter Value Interpretation
θ 22.0 Higher scale (automotive industry)
γ 0.58 Moderate platform synergies

Episode Structure

Phase Selection

env = coopetition_gym.make("RenaultNissan-v0", phase="crisis")

Phase determines initial τ₀ and R₀, modeling different eras of the alliance.


Historical Background

The Renault-Nissan Alliance (1999-Present)

Partners:

Key Events:

Why Multi-Phase?

The alliance demonstrates:

  1. Trust Recovery: Nissan’s trust in Renault rebuilt after rescue
  2. Trust Erosion: Growing tensions over governance
  3. Crisis and Recovery: Post-Ghosn restructuring
  4. Ongoing Dynamics: Current strained but continuing relationship

Environment Specification

Basic Usage

import coopetition_gym
import numpy as np

# Create environment with specific phase
env = coopetition_gym.make("RenaultNissan-v0", phase="formation")

obs, info = env.reset(seed=42)

print(f"Phase: {info['phase']}")
print(f"Period: {info['period']}")
print(f"Initial trust: {info['mean_trust']:.2f}")

Parameters

Parameter Default Description
phase “formation” Alliance phase to simulate
max_steps 100 Maximum timesteps per episode
render_mode None Rendering mode

Alliance Phases

Phase Configuration

Phase Period Initial Trust Initial Rep. Damage Interpretation
"formation" 1999-2002 0.45 0.05 Early uncertain partnership
"mature" 2002-2018 0.70 0.02 Successful collaboration
"crisis" 2018-2020 0.30 0.45 Post-Ghosn governance crisis
"strained" 2020-2025 0.40 0.35 Restructured but tense

Selecting a Phase

# Formation phase (early alliance)
env_formation = coopetition_gym.make("RenaultNissan-v0", phase="formation")

# Mature phase (successful collaboration)
env_mature = coopetition_gym.make("RenaultNissan-v0", phase="mature")

# Crisis phase (governance crisis)
env_crisis = coopetition_gym.make("RenaultNissan-v0", phase="crisis")

# Strained phase (current era)
env_strained = coopetition_gym.make("RenaultNissan-v0", phase="strained")

Agent Configuration

Endowments

Agent Role Endowment Interpretation
Nissan (0) Japanese Partner 90.0 Slightly smaller (historical)
Renault (1) French Partner 100.0 Larger (controlling stake)

Bargaining Shares

Agent Alpha Interpretation
Nissan 0.48 Slight disadvantage (rescued party)
Renault 0.52 Slight advantage (rescuer)

Baselines

Agent Baseline As % of Endowment
Nissan 27.0 30%
Renault 30.0 30%

Interdependence Structure

Phase-Dependent Dependencies

Created using create_renault_nissan_interdependence(phase): The interdependence matrix varies by phase:


Trust Dynamics

Parameters (All Phases)

Parameter Symbol Value Source
Trust Building Rate λ⁺ 0.08 TR-2 validated
Trust Erosion Rate λ⁻ 0.25 TR-2 validated
Reputation Damage $\mu_R$ 0.55 TR-2 validated
Reputation Decay $\delta_R$ 0.02 TR-2 validated
Interdependence Amp. ξ 0.50 TR-2 validated
Signal Sensitivity κ 1.0 Standard

Phase-Specific Initial Conditions

Formation (1999-2002):

Mature (2002-2018):

Crisis (2018-2020):

Strained (2020-2025):


Value Function

Parameters

Parameter Value Description
θ 22.0 Slightly higher scale (larger industry)
γ 0.58 Moderate complementarity

Metrics and Info

The info dictionary includes:

Key Type Description
step int Current timestep
phase str Current alliance phase
period str Historical period string
mean_trust float Average trust level
nissan_investment float Nissan’s action
renault_investment float Renault’s action
trust_matrix ndarray Full trust matrix

Phase-Specific Analysis

Formation Phase Strategy

Historical context: Renault rescues near-bankrupt Nissan. Trust must be built.

env = coopetition_gym.make("RenaultNissan-v0", phase="formation")
obs, info = env.reset()

# Renault should invest heavily (demonstrate commitment)
# Nissan should respond cautiously (rebuilding)
renault_action = 70.0  # High investment
nissan_action = 50.0   # Moderate response

Expected dynamics:

Mature Phase Strategy

Historical context: Successful partnership with shared platforms.

env = coopetition_gym.make("RenaultNissan-v0", phase="mature")
obs, info = env.reset()

# Both partners maintain high cooperation
renault_action = 65.0
nissan_action = 60.0

Expected dynamics:

Crisis Phase Strategy

Historical context: Post-Ghosn arrest, governance scandal.

env = coopetition_gym.make("RenaultNissan-v0", phase="crisis")
obs, info = env.reset()

# Both partners are cautious
# Must avoid further trust erosion
renault_action = 45.0  # Defensive
nissan_action = 40.0   # Defensive

Expected dynamics:

Strained Phase Strategy

Historical context: Restructured alliance, ongoing tensions.

env = coopetition_gym.make("RenaultNissan-v0", phase="strained")
obs, info = env.reset()

# Gradual trust rebuilding
renault_action = 55.0
nissan_action = 50.0

Expected dynamics:


Example: Multi-Phase Simulation

import coopetition_gym
import numpy as np

phases = ["formation", "mature", "crisis", "strained"]

for phase in phases: env = coopetition_gym.make("RenaultNissan-v0", phase=phase)
    obs, info = env.reset(seed=42)

    print(f"\n{phase.upper()} Phase ({info['period']})")
    print(f"  Initial trust: {info['mean_trust']:.2f}")

    # Run 50 steps with moderate cooperation
    for step in range(50): actions = np.array([50.0, 55.0])  # Nissan, Renault
        obs, rewards, terminated, truncated, info = env.step(actions)

    print(f"  Final trust: {info['mean_trust']:.2f}")
    print(f"  Trust change: {info['mean_trust'] - 0.5:.+.2f}")

Research Applications

RenaultNissan-v0 is suitable for studying:


Comparison with SLCD-v0

Feature RenaultNissan-v0 SLCD-v0
Phases 4 configurable 1 fixed
Duration 25+ years modeled 8 years modeled
Complexity Multi-phase dynamics Single trajectory
Best For Phase analysis Benchmark testing


References

  1. Pant, V. & Yu, E. (2025). Computational Foundations for Strategic Coopetition: Formalizing Trust and Reputation Dynamics. arXiv:2510.24909
  2. Segrestin, B. (2005). Partnering to Explore: The Renault–Nissan Alliance. Research Policy.
  3. Freyssenet, M. (2009). The Second Automobile Revolution. Palgrave Macmillan.