{"id":631,"date":"2026-04-26T14:35:53","date_gmt":"2026-04-26T14:35:53","guid":{"rendered":"https:\/\/intreelligent.net\/?page_id=631"},"modified":"2026-04-26T17:39:53","modified_gmt":"2026-04-26T17:39:53","slug":"vicare-roi-calculator","status":"publish","type":"page","link":"https:\/\/intreelligent.net\/de\/vicare-roi-calculator\/","title":{"rendered":"ViCaRe ROI-Rechner"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n<title>ViCaRe Time Savings Calculator<\/title>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/react\/18.2.0\/umd\/react.production.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/react-dom\/18.2.0\/umd\/react-dom.production.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/babel-standalone\/7.23.2\/babel.min.js\"><\/script>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Mono:wght@400;500&#038;family=Sora:wght@400;600;800&#038;display=swap\" rel=\"stylesheet\"\/>\n\n<style>\n  *{box-sizing:border-box;margin:0;padding:0;}\n\n  html,\n  body{\n    margin:0 !important;\n    padding:0 !important;\n    background:#0d1117 !important;\n    font-family:'Sora',sans-serif;\n    overflow-x:hidden;\n  }\n\n  body,\n  .site,\n  .site-content,\n  .content-area,\n  .ast-container,\n  .entry-content,\n  .elementor,\n  .elementor-section,\n  .elementor-container,\n  .elementor-widget-container{\n    background:#0d1117 !important;\n  }\n\n  .entry-header,\n  .page-header,\n  .ast-single-post .entry-header,\n  .ast-article-single .entry-header{\n    background:#0d1117 !important;\n    margin:0 !important;\n    padding:0 !important;\n    border:none !important;\n  }\n\n  .entry-title,\n  .page-title,\n  h1.entry-title{\n    color:#ffffff !important;\n    background:#0d1117 !important;\n    font-family:'Sora',sans-serif !important;\n    font-size:32px !important;\n    font-weight:800 !important;\n    margin:0 !important;\n    padding:28px 32px 10px 32px !important;\n  }\n\n  #vicare-root {\n    width: 100vw;\n    margin-left: calc(50% - 50vw);\n    margin-right: calc(50% - 50vw);\n    margin-bottom: 0 !important;\n    padding-bottom: 0 !important;\n    background: #0d1117;\n  }\n\n  .vicare-full-app {\n    width: 100vw;\n    min-height: 100vh;\n    background:#0d1117;\n    padding-bottom: 32px;\n  }\n\n  input[type=range]{\n    -webkit-appearance:none;\n    width:100%;\n    height:5px;\n    border-radius:3px;\n    background:#21262d;\n    cursor:pointer;\n  }\n\n  input[type=range]::-webkit-slider-thumb{\n    -webkit-appearance:none;\n    width:18px;\n    height:18px;\n    border-radius:50%;\n    background:#00c896;\n    cursor:pointer;\n    border:2px solid #0d1117;\n    box-shadow:0 0 8px rgba(0,200,150,0.4);\n  }\n\n  .vicare-select,\n  .vicare-number-input{\n    width:100%;\n    padding:12px 14px;\n    border-radius:8px;\n    border:1px solid #30363d;\n    background:#0d1117;\n    color:#e6edf3;\n    font-family:'DM Mono',monospace;\n    font-size:13px;\n    outline:none;\n  }\n\n  .vicare-select:focus,\n  .vicare-number-input:focus{\n    border-color:#00c896;\n    box-shadow:0 0 0 2px rgba(0,200,150,0.15);\n  }\n\n  .tab-btn{\n    padding:10px 18px;\n    background:transparent;\n    border:1px solid #21262d;\n    border-radius:8px;\n    color:#8b949e;\n    font-size:14px;\n    cursor:pointer;\n    font-family:'Sora',sans-serif;\n    font-weight:600;\n    transition:all 0.2s;\n    position:relative;\n  }\n\n  .tab-btn:hover{\n    background:rgba(0,200,150,0.08);\n  }\n\n  .tab-btn.active{\n    background:rgba(0,200,150,0.12);\n    border-color:#00c896;\n    color:#00c896;\n  }\n\n  .tab-btn.highlight-tab{\n    border-color:rgba(240,165,0,0.4);\n  }\n\n  .tab-btn.highlight-tab.active{\n    background:rgba(240,165,0,0.1);\n    border-color:#f0a500;\n    color:#f0a500;\n  }\n\n  .bar-fill{\n    transition:width 0.6s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  @media (max-width: 850px) {\n    .vicare-grid {\n      grid-template-columns: 1fr !important;\n    }\n\n    .vicare-main-card {\n      padding: 22px !important;\n    }\n\n    .vicare-metric-grid {\n      grid-template-columns: 1fr !important;\n    }\n  }\n<\/style>\n<\/head>\n\n<body>\n<div id=\"vicare-root\"><\/div>\n\n<script type=\"text\/babel\">\nconst { useState } = React;\n\nconst TABS = [\n  { id: \"nodes\",       label: \"Node Results\" },\n  { id: \"links\",       label: \"Link Results\" },\n  { id: \"traveltime\",  label: \"Travel Time\" },\n  { id: \"throughput\",  label: \"Throughput\" },\n  { id: \"network\",     label: \"Network Results\" },\n  { id: \"calibration\", label: \"Calibration\", highlight: true },\n];\n\nconst GREEN=\"#00c896\",DARK=\"#0d1117\",CARD=\"#161b22\",BORDER=\"#21262d\",MUTED=\"#8b949e\",TEXT=\"#e6edf3\",ACCENT2=\"#f0a500\";\n\nfunction Slider({label,min,max,value,step=1,unit=\"\",onChange,hint}){\n  return(\n    <div style={{marginBottom:22}}>\n      <div style={{display:\"flex\",justifyContent:\"space-between\",marginBottom:7}}>\n        <span style={{color:TEXT,fontSize:14,fontFamily:\"'DM Mono',monospace\",fontWeight:600}}>{label}<\/span>\n        <span style={{color:GREEN,fontSize:15,fontWeight:800,fontFamily:\"'DM Mono',monospace\"}}>{value}{unit}<\/span>\n      <\/div>\n      <input type=\"range\" min={min} max={max} step={step} value={value} onChange={e=>onChange(Number(e.target.value))}\/>\n      <div style={{display:\"flex\",justifyContent:\"space-between\",marginTop:5}}>\n        <span style={{color:MUTED,fontSize:12}}>{min}{unit}<\/span>\n        {hint&&<span style={{color:MUTED,fontSize:12,fontStyle:\"italic\"}}>{hint}<\/span>}\n        <span style={{color:MUTED,fontSize:12}}>{max}{unit}<\/span>\n      <\/div>\n    <\/div>\n  );\n}\n\nfunction SelectField({label,value,onChange,options,hint}){\n  return(\n    <div style={{marginBottom:22}}>\n      <div style={{display:\"flex\",justifyContent:\"space-between\",marginBottom:7}}>\n        <span style={{color:TEXT,fontSize:14,fontFamily:\"'DM Mono',monospace\",fontWeight:600}}>{label}<\/span>\n      <\/div>\n      <select className=\"vicare-select\" value={value} onChange={e=>onChange(e.target.value)}>\n        {options.map(option=>(\n          <option key={option.value} value={option.value}>{option.label}<\/option>\n        ))}\n      <\/select>\n      {hint&&(\n        <div style={{color:MUTED,fontSize:12,fontStyle:\"italic\",marginTop:5}}>\n          {hint}\n        <\/div>\n      )}\n    <\/div>\n  );\n}\n\nfunction BillingRateField({billingRate,setBillingRate}){\n  return(\n    <div style={{background:\"rgba(96,165,250,0.08)\",border:\"1px solid rgba(96,165,250,0.2)\",borderRadius:12,padding:18,marginBottom:18}}>\n      <div style={{display:\"flex\",justifyContent:\"space-between\",gap:12,alignItems:\"center\",marginBottom:8}}>\n        <span style={{color:TEXT,fontSize:14,fontFamily:\"'DM Mono',monospace\",fontWeight:700}}>\n          Billing Rate\n        <\/span>\n        <span style={{color:\"#60a5fa\",fontSize:14,fontFamily:\"'DM Mono',monospace\",fontWeight:800}}>\n          ${billingRate}\/hr\n        <\/span>\n      <\/div>\n      <input\n        className=\"vicare-number-input\"\n        type=\"number\"\n        min=\"25\"\n        max=\"500\"\n        step=\"5\"\n        value={billingRate}\n        onChange={e=>setBillingRate(Math.max(1, Number(e.target.value) || 1))}\n      \/>\n      <div style={{color:MUTED,fontSize:12,fontStyle:\"italic\",marginTop:7}}>\n        Default is $100\/hr. Adjust this to match your internal labor cost or consulting billing rate.\n      <\/div>\n    <\/div>\n  );\n}\n\nfunction ResultBar({label,hours,color,maxHours}){\n  const pct=Math.min((hours\/maxHours)*100,100);\n  const display=hours<1?`${Math.round(hours*60)} min`:`${hours.toFixed(1)} hrs`;\n\n  return(\n    <div style={{marginBottom:16}}>\n      <div style={{display:\"flex\",justifyContent:\"space-between\",marginBottom:6}}>\n        <span style={{color:MUTED,fontSize:13,fontFamily:\"'DM Mono',monospace\"}}>{label}<\/span>\n        <span style={{color:color,fontSize:14,fontWeight:800,fontFamily:\"'DM Mono',monospace\"}}>{display}<\/span>\n      <\/div>\n      <div style={{height:9,background:\"#21262d\",borderRadius:5,overflow:\"hidden\"}}>\n        <div className=\"bar-fill\" style={{height:\"100%\",width:`${pct}%`,background:color,borderRadius:5}}\/>\n      <\/div>\n    <\/div>\n  );\n}\n\nfunction SavingsCard({manualHours,vicareHours,billingRate,manualLabel=\"Manual Process\",vicareLabel=\"With ViCaRe\"}){\n  const saved=Math.max(manualHours-vicareHours,0);\n  const rawPctSaved=manualHours>0?Math.round((saved\/manualHours)*100):0;\n  const pctSaved=Math.min(rawPctSaved,99);\n  const moneySaved=Math.round(saved*billingRate);\n  const maxHours=manualHours*1.1||1;\n\n  return(\n    <div style={{background:CARD,border:`1px solid ${BORDER}`,borderRadius:12,padding:28}}>\n      <p style={{color:MUTED,fontSize:12,letterSpacing:2,textTransform:\"uppercase\",margin:\"0 0 20px 0\",fontFamily:\"'DM Mono',monospace\"}}>\n        Time Comparison\n      <\/p>\n\n      <ResultBar label={manualLabel} hours={manualHours} color=\"#e05252\" maxHours={maxHours}\/>\n      <ResultBar label={vicareLabel} hours={vicareHours} color={GREEN} maxHours={maxHours}\/>\n\n      <div className=\"vicare-metric-grid\" style={{marginTop:26,padding:18,background:\"rgba(0,200,150,0.07)\",border:\"1px solid rgba(0,200,150,0.2)\",borderRadius:8,display:\"grid\",gridTemplateColumns:\"1fr 1fr 1fr\",gap:14,textAlign:\"center\"}}>\n        <div>\n          <div style={{color:GREEN,fontSize:25,fontWeight:800,fontFamily:\"'DM Mono',monospace\"}}>\n            {saved<1?`${Math.round(saved*60)}m`:`${saved.toFixed(1)}h`}\n          <\/div>\n          <div style={{color:MUTED,fontSize:12,marginTop:4}}>Hours Saved<\/div>\n        <\/div>\n\n        <div>\n          <div style={{color:ACCENT2,fontSize:25,fontWeight:800,fontFamily:\"'DM Mono',monospace\"}}>\n            {pctSaved}%\n          <\/div>\n          <div style={{color:MUTED,fontSize:12,marginTop:4}}>Time Reduction<\/div>\n        <\/div>\n\n        <div>\n          <div style={{color:\"#60a5fa\",fontSize:25,fontWeight:800,fontFamily:\"'DM Mono',monospace\"}}>\n            ${moneySaved.toLocaleString()}\n          <\/div>\n          <div style={{color:MUTED,fontSize:12,marginTop:4}}>Cost Saved*<\/div>\n        <\/div>\n      <\/div>\n\n      <p style={{color:MUTED,fontSize:11,marginTop:10,fontStyle:\"italic\"}}>\n        * Based on ${billingRate}\/hr billing rate\n      <\/p>\n    <\/div>\n  );\n}\n\nfunction ResultsColumn({manualHours,vicareHours,billingRate,setBillingRate,manualLabel, vicareLabel}){\n  return(\n    <div>\n      <BillingRateField billingRate={billingRate} setBillingRate={setBillingRate}\/>\n      <SavingsCard\n        manualHours={manualHours}\n        vicareHours={vicareHours}\n        billingRate={billingRate}\n        manualLabel={manualLabel}\n        vicareLabel={vicareLabel}\n      \/>\n    <\/div>\n  );\n}\n\nfunction NodesTab({billingRate,setBillingRate}){\n  const [nodes,setNodes]=useState(20);\n  const [scenarios,setScenarios]=useState(2);\n\n  const vicareBaseSetupMinutes=3;\n  const vicareInputSeconds=nodes*10;\n  const vicareHours=(vicareBaseSetupMinutes+(vicareInputSeconds\/60))\/60;\n\n  const savedMinutes=nodes*scenarios*15;\n  const manualHours=vicareHours+(savedMinutes\/60);\n\n  return(\n    <div className=\"vicare-grid\" style={{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:28}}>\n      <div>\n        <p style={{color:MUTED,fontSize:14,marginBottom:22,lineHeight:1.7}}>\n          Node results are estimated at about 15 minutes saved per node per scenario after subtracting the one-time ViCaRe input\/setup effort. ViCaRe setup includes about 10 seconds to add each node. This calculation is based on approximately 4 approaches per intersection. Intersections with more approaches or more complex movements usually create more reporting work, which means ViCaRe can save even more time.\n        <\/p>\n        <Slider label=\"Number of Nodes\" min={1} max={100} value={nodes} onChange={setNodes} hint=\"intersection nodes\"\/>\n        <Slider label=\"Number of Scenarios\" min={1} max={5} value={scenarios} onChange={setScenarios}\/>\n      <\/div>\n      <ResultsColumn manualHours={manualHours} vicareHours={vicareHours} billingRate={billingRate} setBillingRate={setBillingRate}\/>\n    <\/div>\n  );\n}\n\nfunction LinksTab({billingRate,setBillingRate}){\n  const [links,setLinks]=useState(50);\n  const [scenarios,setScenarios]=useState(2);\n  const [reportingLevel,setReportingLevel]=useState(\"lane\");\n  const [segmentAggregation,setSegmentAggregation]=useState(\"no\");\n\n  const isPerLane=reportingLevel===\"lane\";\n  const usesSegments=segmentAggregation===\"yes\";\n\n  const savedMinutesPerLinkScenario=usesSegments\n    ? (isPerLane ? 10 : 7)\n    : (isPerLane ? 5 : 3);\n\n  const vicareBaseSetupMinutes=3;\n  const vicareInputSeconds=links*10;\n  const vicareHours=(vicareBaseSetupMinutes+(vicareInputSeconds\/60))\/60;\n\n  const savedMinutes=links*scenarios*savedMinutesPerLinkScenario;\n  const manualHours=vicareHours+(savedMinutes\/60);\n\n  return(\n    <div className=\"vicare-grid\" style={{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:28}}>\n      <div>\n        <p style={{color:MUTED,fontSize:14,marginBottom:22,lineHeight:1.7}}>\n          Link reporting savings depend on whether the user reports results per lane or per link. Per-lane reporting takes more manual effort. If the user aggregates links into custom segments, ViCaRe saves even more time because manual grouping, aggregation and formatting become more time-consuming. ViCaRe setup includes about 10 seconds to add each link.\n        <\/p>\n\n        <Slider label=\"Number of Links\" min={1} max={300} value={links} onChange={setLinks} step={5} hint=\"road links\"\/>\n        <Slider label=\"Number of Scenarios\" min={1} max={5} value={scenarios} onChange={setScenarios}\/>\n\n        <SelectField\n          label=\"Reporting Level\"\n          value={reportingLevel}\n          onChange={setReportingLevel}\n          options={[\n            {value:\"lane\", label:\"Per Lane\"},\n            {value:\"link\", label:\"Per Link\"}\n          ]}\n          hint=\"per-lane reporting saves more time with ViCaRe\"\n        \/>\n\n        <SelectField\n          label=\"Use Segment Aggregation?\"\n          value={segmentAggregation}\n          onChange={setSegmentAggregation}\n          options={[\n            {value:\"no\", label:\"No, individual links only\"},\n            {value:\"yes\", label:\"Yes, aggregate links into segments\"}\n          ]}\n          hint=\"segments increase manual aggregation effort\"\n        \/>\n\n        <div style={{marginTop:10,padding:\"12px 16px\",background:\"rgba(0,200,150,0.08)\",border:\"1px solid rgba(0,200,150,0.2)\",borderRadius:8}}>\n          <span style={{color:GREEN,fontSize:13,fontFamily:\"'DM Mono',monospace\"}}>\n            Estimated savings: {savedMinutesPerLinkScenario} minutes per link per scenario\n          <\/span>\n        <\/div>\n      <\/div>\n      <ResultsColumn manualHours={manualHours} vicareHours={vicareHours} billingRate={billingRate} setBillingRate={setBillingRate}\/>\n    <\/div>\n  );\n}\n\nfunction TravelTimeTab({billingRate,setBillingRate}){\n  const [sections,setSections]=useState(8);\n  const [scenarios,setScenarios]=useState(2);\n\n  const vicareBaseSetupMinutes=2;\n  const vicareInputSeconds=sections*10;\n  const vicareHours=(vicareBaseSetupMinutes+(vicareInputSeconds\/60))\/60;\n\n  const savedMinutes=sections*scenarios*3;\n  const manualHours=vicareHours+(savedMinutes\/60);\n\n  return(\n    <div className=\"vicare-grid\" style={{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:28}}>\n      <div>\n        <p style={{color:MUTED,fontSize:14,marginBottom:22,lineHeight:1.7}}>\n          Travel time reporting is estimated at about 3 minutes saved per travel time section per scenario. ViCaRe setup includes about 10 seconds to add each travel time section. ViCaRe reduces the repeated effort of collecting, organizing and formatting travel time results.\n        <\/p>\n        <Slider label=\"Number of Travel Time Sections\" min={1} max={50} value={sections} onChange={setSections}\/>\n        <Slider label=\"Number of Scenarios\" min={1} max={5} value={scenarios} onChange={setScenarios}\/>\n      <\/div>\n      <ResultsColumn manualHours={manualHours} vicareHours={vicareHours} billingRate={billingRate} setBillingRate={setBillingRate}\/>\n    <\/div>\n  );\n}\n\nfunction ThroughputTab({billingRate,setBillingRate}){\n  const [nodes,setNodes]=useState(15);\n  const [scenarios,setScenarios]=useState(2);\n\n  const vicareBaseSetupMinutes=2;\n  const vicareInputSeconds=nodes*10;\n  const vicareHours=(vicareBaseSetupMinutes+(vicareInputSeconds\/60))\/60;\n\n  const savedMinutes=nodes*scenarios*3;\n  const manualHours=vicareHours+(savedMinutes\/60);\n\n  return(\n    <div className=\"vicare-grid\" style={{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:28}}>\n      <div>\n        <p style={{color:MUTED,fontSize:14,marginBottom:22,lineHeight:1.7}}>\n          Throughput reporting is estimated at about 3 minutes saved per node per scenario. ViCaRe setup includes about 10 seconds to add each node. ViCaRe helps automate simulated throughput collection, comparison and reporting.\n        <\/p>\n        <Slider label=\"Number of Nodes\" min={1} max={100} value={nodes} onChange={setNodes} step={5}\/>\n        <Slider label=\"Number of Scenarios\" min={1} max={5} value={scenarios} onChange={setScenarios}\/>\n      <\/div>\n      <ResultsColumn manualHours={manualHours} vicareHours={vicareHours} billingRate={billingRate} setBillingRate={setBillingRate}\/>\n    <\/div>\n  );\n}\n\nfunction NetworkTab({billingRate,setBillingRate}){\n  const [variables,setVariables]=useState(10);\n  const [scenarios,setScenarios]=useState(2);\n\n  const vicareBaseSetupMinutes=2;\n  const vicareInputSeconds=variables*5;\n  const vicareHours=(vicareBaseSetupMinutes+(vicareInputSeconds\/60))\/60;\n\n  const savedMinutes=variables*scenarios*2;\n  const manualHours=vicareHours+(savedMinutes\/60);\n\n  return(\n    <div className=\"vicare-grid\" style={{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:28}}>\n      <div>\n        <p style={{color:MUTED,fontSize:14,marginBottom:22,lineHeight:1.7}}>\n          Network results are estimated using the number of network-level variables and scenarios. ViCaRe saves about 2 minutes per variable per scenario by automating collection, organization and reporting. ViCaRe setup includes about 5 seconds to add each network variable.\n        <\/p>\n        <Slider label=\"Number of Network Variables\" min={1} max={30} value={variables} onChange={setVariables} hint=\"delay, speed, vehicles, emissions, etc.\"\/>\n        <Slider label=\"Number of Scenarios\" min={1} max={5} value={scenarios} onChange={setScenarios}\/>\n      <\/div>\n      <ResultsColumn manualHours={manualHours} vicareHours={vicareHours} billingRate={billingRate} setBillingRate={setBillingRate}\/>\n    <\/div>\n  );\n}\n\nfunction CalibrationTab({billingRate,setBillingRate}){\n  const [params,setParams]=useState(6);\n  const [behaviorTypes,setBehaviorTypes]=useState(2);\n  const [scenarios,setScenarios]=useState(2);\n  const [speedClasses,setSpeedClasses]=useState(3);\n  const [laneDistValues,setLaneDistValues]=useState(4);\n  const [errorTolerance,setErrorTolerance]=useState(5);\n  const [validationMoes,setValidationMoes]=useState(3);\n\n  const effectiveParams=(params*behaviorTypes)+speedClasses+laneDistValues;\n\n  const toleranceFactorMap={\n    0: 3.25,\n    5: 2.25,\n    10: 1.55,\n    15: 1.15,\n    20: 0.9,\n    25: 0.75\n  };\n\n  const toleranceFactor=toleranceFactorMap[errorTolerance];\n  const moeFactor=0.75+(validationMoes*0.18);\n  const scenarioEffortFactor=1+(Math.sqrt(scenarios)-1)*0.75;\n  const behaviorTypeFactor=1+((behaviorTypes-1)*0.35);\n\n  const complexityScore=\n    Math.log1p(effectiveParams)*18+\n    params*1.8+\n    speedClasses*2.0+\n    laneDistValues*2.0;\n\n  const iterations=Math.round(\n    25+\n    complexityScore*\n    scenarioEffortFactor*\n    behaviorTypeFactor*\n    moeFactor*\n    toleranceFactor\n  );\n\n  const minutesPerManualIteration=\n    errorTolerance===0 ? 38 :\n    errorTolerance===5 ? 32 :\n    errorTolerance===10 ? 26 :\n    errorTolerance===15 ? 22 :\n    errorTolerance===20 ? 19 :\n    17;\n\n  const manualHours=(iterations*minutesPerManualIteration)\/60;\n\n  const vicareHours=\n    2.0+\n    (behaviorTypes*0.45)+\n    (Math.sqrt(scenarios)*0.75)+\n    (validationMoes*0.22)+\n    (params*0.05)+\n    (speedClasses*0.08)+\n    (laneDistValues*0.08)+\n    (\n      errorTolerance===0 ? 2.0 :\n      errorTolerance===5 ? 1.2 :\n      errorTolerance===10 ? 0.8 :\n      errorTolerance===15 ? 0.5 :\n      errorTolerance===20 ? 0.3 :\n      0.2\n    );\n\n  return(\n    <div className=\"vicare-grid\" style={{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:28}}>\n      <div>\n        <p style={{color:MUTED,fontSize:14,marginBottom:22,lineHeight:1.7}}>\n          Calibration effort depends on the number of parameters, driving behavior types, scenarios, validation MOEs and the required error tolerance. A 0% tolerance represents a very strict target and is expected to be difficult for both manual calibration and ViCaRe. However, this is also where ViCaRe can save the most engineering time because the manual trial-and-error process becomes much harder. The larger the network is, the more time ViCaRe saves you. More importantly, human error is eliminated from the process. The simulation time is not included in these calculations.\n        <\/p>\n\n        <Slider label=\"Calibration Parameters\" min={2} max={20} value={params} onChange={setParams} hint=\"per driving behavior type\"\/>\n        <Slider label=\"Driving Behavior Types\" min={1} max={5} value={behaviorTypes} onChange={setBehaviorTypes} hint=\"urban, rural, freeway, etc.\"\/>\n        <Slider label=\"Number of Scenarios\" min={1} max={5} value={scenarios} onChange={setScenarios} hint=\"diminishing added effort\"\/>\n        <Slider label=\"Validation MOEs\" min={1} max={4} value={validationMoes} onChange={setValidationMoes} hint=\"volume, travel time, speed, queues\"\/>\n        <Slider label=\"Error Tolerance\" min={0} max={25} step={5} value={errorTolerance} unit=\"%\" onChange={setErrorTolerance} hint=\"0% is the strictest target\"\/>\n        <Slider label=\"Desired Speed Decision Classes\" min={1} max={8} value={speedClasses} onChange={setSpeedClasses} hint=\"speed distribution bands\"\/>\n        <Slider label=\"Lane Change Distance Values\" min={1} max={10} value={laneDistValues} onChange={setLaneDistValues} hint=\"range of values to test\"\/>\n\n        <div style={{marginTop:10,padding:\"12px 16px\",background:\"rgba(240,165,0,0.08)\",border:\"1px solid rgba(240,165,0,0.2)\",borderRadius:8}}>\n          <span style={{color:ACCENT2,fontSize:13,fontFamily:\"'DM Mono',monospace\"}}>\n            ~{iterations.toLocaleString()} manual calibration checks required\n          <\/span>\n        <\/div>\n\n        <div style={{marginTop:12,padding:\"12px 16px\",background:\"rgba(96,165,250,0.08)\",border:\"1px solid rgba(96,165,250,0.2)\",borderRadius:8}}>\n          <span style={{color:\"#60a5fa\",fontSize:12,lineHeight:1.6,display:\"block\"}}>\n            Simulation runtime is not eliminated. ViCaRe reduces manual calibration effort by automating parameter search, scenario execution and result evaluation.\n          <\/span>\n        <\/div>\n      <\/div>\n\n      <ResultsColumn\n        manualHours={manualHours}\n        vicareHours={vicareHours}\n        billingRate={billingRate}\n        setBillingRate={setBillingRate}\n        manualLabel=\"Manual Engineering Effort\"\n        vicareLabel=\"ViCaRe Setup &#038; Review Effort\"\n      \/>\n    <\/div>\n  );\n}\n\nfunction App(){\n  const [activeTab,setActiveTab]=useState(\"calibration\");\n  const [billingRate,setBillingRate]=useState(100);\n\n  const content={\n    nodes:<NodesTab billingRate={billingRate} setBillingRate={setBillingRate}\/>,\n    links:<LinksTab billingRate={billingRate} setBillingRate={setBillingRate}\/>,\n    traveltime:<TravelTimeTab billingRate={billingRate} setBillingRate={setBillingRate}\/>,\n    throughput:<ThroughputTab billingRate={billingRate} setBillingRate={setBillingRate}\/>,\n    network:<NetworkTab billingRate={billingRate} setBillingRate={setBillingRate}\/>,\n    calibration:<CalibrationTab billingRate={billingRate} setBillingRate={setBillingRate}\/>\n  };\n\n  return(\n    <div className=\"vicare-full-app\" style={{background:DARK,minHeight:\"100vh\",padding:\"44px 32px 0 32px\",fontFamily:\"'Sora',sans-serif\"}}>\n      <div style={{textAlign:\"center\",marginBottom:38}}>\n        <div style={{display:\"inline-block\",padding:\"5px 16px\",background:\"rgba(0,200,150,0.1)\",border:\"1px solid rgba(0,200,150,0.3)\",borderRadius:20,marginBottom:14}}>\n          <span style={{color:GREEN,fontSize:12,letterSpacing:2,textTransform:\"uppercase\",fontFamily:\"'DM Mono',monospace\"}}>\n            ROI Calculator\n          <\/span>\n        <\/div>\n\n        <h1 style={{color:TEXT,fontSize:36,fontWeight:800,marginBottom:10}}>\n          How Much Time Does <span style={{color:GREEN}}>ViCaRe<\/span> Save?\n        <\/h1>\n\n        <p style={{color:MUTED,fontSize:16,maxWidth:760,margin:\"0 auto\",lineHeight:1.7}}>\n          Adjust the sliders to match your project. This ROI, Return on Investment, calculator estimates how much engineering time and consulting cost ViCaRe can save. The ROI does not tell you one important factor, which is human error. Human error is eliminated from the entire process by ViCaRe!\n        <\/p>\n      <\/div>\n\n      <div style={{display:\"flex\",gap:10,marginBottom:26,flexWrap:\"wrap\",justifyContent:\"center\"}}>\n        {TABS.map(tab=>(\n          <button\n            key={tab.id}\n            className={`tab-btn${activeTab===tab.id?\" active\":\"\"}${tab.highlight?\" highlight-tab\":\"\"}`}\n            onClick={()=>setActiveTab(tab.id)}\n          >\n            {tab.label}\n\n            {tab.highlight&&(\n              <span style={{position:\"absolute\",top:-9,right:-42,background:ACCENT2,color:DARK,fontSize:9,fontWeight:800,padding:\"2px 6px\",borderRadius:8,fontFamily:\"'DM Mono',monospace\",letterSpacing:0.5}}>\n                BIGGEST SAVINGS\n              <\/span>\n            )}\n          <\/button>\n        ))}\n      <\/div>\n\n      <div className=\"vicare-main-card\" style={{width:\"100%\",maxWidth:1360,margin:\"0 auto\",background:CARD,border:`1px solid ${BORDER}`,borderRadius:16,padding:36}}>\n        {content[activeTab]}\n      <\/div>\n\n      <p style={{textAlign:\"center\",color:MUTED,fontSize:14,marginTop:22,marginBottom:0,paddingBottom:0,fontStyle:\"italic\",maxWidth:1360,marginLeft:\"auto\",marginRight:\"auto\",lineHeight:1.7}}>\n        Estimates represent approximate engineering labor savings for setup, extraction, formatting, comparison and review. Actual savings depend on network size, simulation runtime, reporting requirements, calibration tolerance, validation MOEs and project workflow. The estimates above are based on the experience of the traffic modeler used ViCaRe and manual process to calibrate and report results for multiple projects. The manual time estimated above is subjective to different people and experience.\n      <\/p>\n    <\/div>\n  );\n}\n\nReactDOM.createRoot(document.getElementById(\"vicare-root\")).render(<App\/>);\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ViCaRe Time Savings Calculator<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-631","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/pages\/631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/comments?post=631"}],"version-history":[{"count":17,"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/pages\/631\/revisions"}],"predecessor-version":[{"id":658,"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/pages\/631\/revisions\/658"}],"wp:attachment":[{"href":"https:\/\/intreelligent.net\/de\/wp-json\/wp\/v2\/media?parent=631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}