$data_array[$i], 'y' => ($i + 1) / $count]; } return $ecdf; } if ($_SERVER["REQUEST_METHOD"] == "POST") { // --- GET INPUTS --- $valor_veiculo = (float)($_POST['valor_veiculo'] ?? 500000); $rota = (float)($_POST['rota'] ?? 100); $n_dias = (int)($_POST['n_dias'] ?? 22); $diesel = (float)($_POST['diesel'] ?? 5.50); $oleo = (float)($_POST['oleo'] ?? 500); $pecas = (float)($_POST['pecas'] ?? 0.5); $pneu_novo = (float)($_POST['pneu_novo'] ?? 2000); $pneu_recap = (float)($_POST['pneu_recap'] ?? 800); $motorista = (float)($_POST['motorista'] ?? 3000); $n_motorista = (int)($_POST['n_motorista'] ?? 2); $escritorio = (float)($_POST['escritorio'] ?? 5000); $taxas = (float)($_POST['taxas'] ?? 1000); $impostos = (float)($_POST['impostos'] ?? 2000); $pedagio = (float)($_POST['pedagio'] ?? 50); $duracao_contrato = (int)($_POST['duracao_contrato'] ?? 12); // --- SIMULATION INPUTS --- $valor_contrato_manual = (float)($_POST['valor_contrato_manual'] ?? 0); $n_simulacoes = (int)($_POST['n_simulacoes'] ?? 0); $variabilidade = (float)($_POST['variabilidade'] ?? 0); // --- CALCULATION FUNCTIONS --- function custo_onibus($diesel, $oleo, $pneu_novo, $pneu_recap, $pecas) { return ($diesel * 0.33) + ($oleo / 15000) + ($pneu_novo / 50000 * 2) + ($pneu_recap / 50000 * 4) + $pecas; } function custo_fixo($motorista, $escritorio, $taxas, $impostos, $pedagio, $valor_veiculo, $n_motorista, $n_dias) { return ($motorista * $n_motorista) + $escritorio + $taxas + $impostos + ($pedagio * $n_dias) + ($valor_veiculo * 0.031); } function custo_variavel($custo_onibus_val, $n_dias, $rota) { return $custo_onibus_val * $n_dias * $rota; } // --- PROCESS BASE DATA --- $custo_onibus_B = custo_onibus($diesel, $oleo, $pneu_novo, $pneu_recap, $pecas); $custo_fixo_B = custo_fixo($motorista, $escritorio, $taxas, $impostos, $pedagio, $valor_veiculo, $n_motorista, $n_dias); $custo_variavel_B = custo_variavel($custo_onibus_B, $n_dias, $rota); $custo_total_B = $custo_fixo_B + $custo_variavel_B; $valor_contrato_sugerido = $custo_total_B * 1.06; $results = [ 'custo_por_km' => $custo_onibus_B, 'custo_fixo_mensal' => $custo_fixo_B, 'custo_variavel_mensal' => $custo_variavel_B, 'custo_total_mensal' => $custo_total_B, 'valor_contrato_sugerido' => $valor_contrato_sugerido, ]; // --- RUN SIMULATION --- if ($n_simulacoes > 0 && $valor_contrato_manual > 0) { $custos_simulados = []; $lucros_simulados = []; for ($i = 0; $i < $n_simulacoes; $i++) { // Get random values for variables $diesel_sim = get_random_value($diesel, $variabilidade); $pecas_sim = get_random_value($pecas, $variabilidade); $rota_sim = get_random_value($rota, $variabilidade); // Recalculate costs with simulated values $custo_onibus_sim = custo_onibus($diesel_sim, $oleo, $pneu_novo, $pneu_recap, $pecas_sim); $custo_variavel_sim = custo_variavel($custo_onibus_sim, $n_dias, $rota_sim); $custo_total_sim = $custo_fixo_B + $custo_variavel_sim; // Assuming fixed costs don't vary $lucro_sim = $valor_contrato_manual - $custo_total_sim; $custos_simulados[] = $custo_total_sim; $lucros_simulados[] = $lucro_sim; } $simulation_results = [ 'ecdf_custo' => generate_ecdf_data($custos_simulados), 'ecdf_lucro' => generate_ecdf_data($lucros_simulados), ]; } } function format_currency($value) { return 'R$ ' . number_format($value, 2, ',', '.'); } ?>