+<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Maintenance problem with resource constraint · DecisionFocusedLearningBenchmarks.jl</title><meta name="title" content="Maintenance problem with resource constraint · DecisionFocusedLearningBenchmarks.jl"/><meta property="og:title" content="Maintenance problem with resource constraint · DecisionFocusedLearningBenchmarks.jl"/><meta property="twitter:title" content="Maintenance problem with resource constraint · DecisionFocusedLearningBenchmarks.jl"/><meta name="description" content="Documentation for DecisionFocusedLearningBenchmarks.jl."/><meta property="og:description" content="Documentation for DecisionFocusedLearningBenchmarks.jl."/><meta property="twitter:description" content="Documentation for DecisionFocusedLearningBenchmarks.jl."/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit"><a href="../../">DecisionFocusedLearningBenchmarks.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><span class="tocitem">Home</span><ul><li><a class="tocitem" href="../../">Getting started</a></li><li><a class="tocitem" href="../../benchmark_interfaces/">Understanding Benchmark Interfaces</a></li></ul></li><li><span class="tocitem">Tutorials</span><ul><li><a class="tocitem" href="../../warcraft_tutorial/">Path-finding on image maps</a></li></ul></li><li><span class="tocitem">Benchmark problems list</span><ul><li><a class="tocitem" href="../argmax/">Argmax</a></li><li><a class="tocitem" href="../dvsp/">Dynamic Vehicle Scheduling</a></li><li><a class="tocitem" href="../dynamic_assortment/">Dynamic Assortment</a></li><li><a class="tocitem" href="../fixed_size_shortest_path/">Shortest paths</a></li><li class="is-active"><a class="tocitem" href>Maintenance problem with resource constraint</a><ul class="internal"><li><a class="tocitem" href="#Problem-Description"><span>Problem Description</span></a></li><li><a class="tocitem" href="#Key-Components"><span>Key Components</span></a></li><li><a class="tocitem" href="#Benchmark-Policies"><span>Benchmark Policies</span></a></li></ul></li><li><a class="tocitem" href="../portfolio_optimization/">Portfolio Optimization</a></li><li><a class="tocitem" href="../ranking/">Ranking</a></li><li><a class="tocitem" href="../subset_selection/">Subset Selection</a></li><li><a class="tocitem" href="../vsp/">Stochastic Vehicle Scheduling</a></li><li><a class="tocitem" href="../warcraft/">Warcraft</a></li></ul></li><li><a class="tocitem" href="../../api/">API reference</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Benchmark problems list</a></li><li class="is-active"><a href>Maintenance problem with resource constraint</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Maintenance problem with resource constraint</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/JuliaDecisionFocusedLearning/DecisionFocusedLearningBenchmarks.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/JuliaDecisionFocusedLearning/DecisionFocusedLearningBenchmarks.jl/blob/main/docs/src/benchmarks/maintenance.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Maintenance-problem-with-resource-constraint"><a class="docs-heading-anchor" href="#Maintenance-problem-with-resource-constraint">Maintenance problem with resource constraint</a><a id="Maintenance-problem-with-resource-constraint-1"></a><a class="docs-heading-anchor-permalink" href="#Maintenance-problem-with-resource-constraint" title="Permalink"></a></h1><p>The Maintenance problem with resource constraint is a sequential decision-making benchmark where an agent must repeatedly decide which components to maintain over time. The goal is to minimize total expected cost while accounting for independent degradation of components and limited maintenance capacity.</p><h2 id="Problem-Description"><a class="docs-heading-anchor" href="#Problem-Description">Problem Description</a><a id="Problem-Description-1"></a><a class="docs-heading-anchor-permalink" href="#Problem-Description" title="Permalink"></a></h2><h3 id="Overview"><a class="docs-heading-anchor" href="#Overview">Overview</a><a id="Overview-1"></a><a class="docs-heading-anchor-permalink" href="#Overview" title="Permalink"></a></h3><p>In this benchmark, a system consists of <span>$N$</span> identical components, each of which can degrade over <span>$n$</span> discrete states. State <span>$1$</span> means that the component is new, state <span>$n$</span> means that the component is failed. At each time step, the agent can maintain up to <span>$K$</span> components. </p><p>This forms an endogenous multistage stochastic optimization problem, where the agent must plan maintenance actions over the horizon.</p><h3 id="Mathematical-Formulation"><a class="docs-heading-anchor" href="#Mathematical-Formulation">Mathematical Formulation</a><a id="Mathematical-Formulation-1"></a><a class="docs-heading-anchor-permalink" href="#Mathematical-Formulation" title="Permalink"></a></h3><p>The maintenance problem can be formulated as a finite-horizon Markov Decision Process (MDP) with the following components:</p><p><strong>State Space</strong> <span>$\mathcal{S}$</span>: At time step <span>$t$</span>, the state <span>$s_t \in [1:n]^N$</span> is the degradation state for each component.</p><p><strong>Action Space</strong> <span>$\mathcal{A}$</span>: The action at time <span>$t$</span> is the set of components that are maintained at time <span>$t$</span>:</p><p class="math-container">\[a_t \subseteq \{1, 2, \ldots, N\} \text{ such that } |a_t| \leq K\]</p><h3 id="Transition-Dynamics"><a class="docs-heading-anchor" href="#Transition-Dynamics">Transition Dynamics</a><a id="Transition-Dynamics-1"></a><a class="docs-heading-anchor-permalink" href="#Transition-Dynamics" title="Permalink"></a></h3><p>The state transitions depend on whether a component is maintained or not:</p><p>For each component (i) at time (t):</p><ul><li><strong>Maintained component</strong> ((i \in a_t)):</li></ul><p>[ s_{t+1}^i = 1 \quad \text{(perfect maintenance)} ]</p><ul><li><strong>Unmaintained component</strong> ((i \notin a_t)):</li></ul><p>[ s<em>{t+1}^i = \begin{cases} \min(s</em>t^i + 1, n) & \text{with probability } p,\
0 commit comments