Este projeto implementa uma simulação abrangente de um Sistema Multi-Agente para Armazenamento em Nuvem Descentralizado. A simulação serve como validação preliminar da arquitetura do sistema, analisando comportamento sob diferentes condições, especialmente na presença de falhas.
- Validação de Arquitetura: Testar viabilidade de sistema descentralizado
- Análise de Robustez: Avaliar comportamento com falhas e latência
- Estudo Econômico: Analisar dinâmicas de mercado e preços
- Pesquisa Acadêmica: Fornecer base para estudos em sistemas distribuídos
-
Três Tipos de Agentes:
- Buyer Agents: Solicitam armazenamento periodicamente
- Storage Provider Agents: Oferecem espaço com preços dinâmicos
- Intermediary Network Agent: Medeia comunicação e seleção
-
Funcionalidades Avançadas:
- Capacidade Real: Provedores têm espaço finito alocado dinamicamente
- Contratos Temporários: Duração determinada com liberação automática
- Latência Simulada: Delays realísticos de rede (50ms-500ms)
- Sistema de Reputação: Avaliação dinâmica de provedores
- Preços Dinâmicos: Ajuste automático baseado em utilização
- Análise Monte Carlo: Validação estatística multi-iteração
-
Robustez e Falhas:
- Falhas aleatórias de provedores (configurável)
- Corrupção de contratos na rede
- Timeouts e indisponibilidade
- Recuperação automática de falhas
-
Métricas Abrangentes:
- Taxa de sucesso/falha de requisições
- Tempos de resposta com análise estatística
- Utilização e reputação de provedores
- Eficiência econômica do sistema
- Estatísticas de rede e corrupção
- Python 3.8+
- Make (GNU Make)
- Git
- Opcionalmente: pdflatex para compilação de PDF
# Executa tudo: testes, coleta resultados, gera gráficos e relatório
make all
# Execução rápida (apenas essencial)
make quick
# Ver todas as opções disponíveis
make help# 1. Configurar ambiente
make setup
# 2. Instalar dependências
make install
# 3. Executar todas as simulações
make run-all
# 4. Coletar e processar resultados
make collect-results
# 5. Gerar gráficos
make generate-graphs
# 6. Criar relatório LaTeX
make create-report
# 7. Compilar PDF (se disponível)
make compile-pdf# Simulação principal (recomendado)
make run-enhanced
# Teste balanceado
make run-balanced
# Demonstração completa
make run-demo
# Versão SPADE (requer XMPP)
make run-spadeApós a execução, os seguintes arquivos são gerados:
results/aggregated_results.json- Dados consolidadosresults/*_output.log- Logs detalhados de cada simulação
results/performance_comparison.png- Comparação entre simulaçõesresults/statistical_analysis.png- Análise estatísticaresults/economic_analysis.png- Análise econômica
results/simulation_report.tex- Relatório LaTeX completoresults/report_[timestamp]/- Pasta com relatório timestampedCODE_ANALYSIS.md- Análise detalhada do código
- Taxa de Sucesso: Porcentagem de requisições atendidas com sucesso
- Tempo de Resposta: Latência média para processamento de requisições
- Utilização de Provedores: Eficiência no uso dos recursos disponíveis
- Valor Econômico: Total de transações financeiras processadas
- Robustez: Capacidade de operação com falhas simuladas
- Médias e Desvios: Consistência entre execuções
- Distribuições: Padrões de comportamento do sistema
- Correlações: Relações entre métricas diferentes
- Outliers: Identificação de comportamentos atípicos
# No arquivo enhanced_cloud_storage.py
SIMULATION_CONFIG = {
'iterations': 3, # Número de iterações Monte Carlo
'duration_per_iteration': 30, # Duração de cada simulação (segundos)
'num_buyers': 2, # Número de compradores
'num_providers': 3, # Número de provedores
'corruption_probability': 0.02, # Taxa de corrupção da rede
'failure_probability': 0.05 # Taxa de falha dos provedores
}# Configuração de compradores
buyer_config = {
'request_interval': (3.0, 6.0), # Intervalo entre requisições
'budget_per_hour': 25.0, # Orçamento por hora
'space_range': (10, 100) # Faixa de espaço solicitado (GB)
}
# Configuração de provedores
provider_config = {
'total_space_gb': 150, # Capacidade total
'base_price_per_gb_hour': 0.4, # Preço base
'failure_probability': 0.05 # Probabilidade de falha
}-
Teste Balanceado (
balanced_test.py):- Parâmetros equilibrados oferta/demanda
- Validação de funcionamento básico
- Duração curta para testes rápidos
-
Demo Completo (
demo.py):- Demonstração de todas as funcionalidades
- Explicações educacionais
- Cenários variados de teste
-
Simulação Enhanced (
enhanced_cloud_storage.py):- Análise Monte Carlo completa
- Métricas abrangentes
- Configuração avançada
-
Versão SPADE (
cloud_storage_spade.py):- Implementação com framework SPADE
- Comunicação real via XMPP
- Validação de arquitetura alternativa
- Carga Normal: Operação em condições ideais
- Alta Demanda: Teste com muitas requisições simultâneas
- Falhas de Rede: Simulação de problemas de conectividade
- Falhas de Provedores: Teste de robustez com indisponibilidades
- Preços Dinâmicos: Validação de ajustes automáticos de preço
SMA_Simulation/
├── enhanced_cloud_storage.py # Simulação principal
├── balanced_test.py # Teste balanceado
├── demo.py # Demonstração completa
├── cloud_storage_spade.py # Versão SPADE
├── Makefile # Automação completa
├── requirements.txt # Dependências Python
└── scripts/ # Scripts de suporte
├── collect_results.py # Coleta de resultados
├── generate_graphs.py # Geração de gráficos
├── create_latex_report.py # Relatório LaTeX
└── analyze_code.py # Análise de código
BuyerAgent: Agente comprador de armazenamentoStorageProviderAgent: Agente provedor de armazenamentoIntermediaryNetworkAgent: Agente mediador de redeSimulationMetrics: Coleta de métricas estatísticasMessageBus: Sistema de comunicação entre agentes
Este sistema pode ser usado para estudar:
- Sistemas Distribuídos: Consenso, tolerância a falhas, escalabilidade
- Economia Digital: Mercados dinâmicos, formação de preços
- Sistemas Multi-Agente: Cooperação, negociação, emergência
- Redes P2P: Topologias, roteamento, incentivos
- Blockchain: Aplicações descentralizadas, smart contracts
CODE_ANALYSIS.md: Análise detalhada da arquitetura- Comentários inline no código fonte
- Docstrings em todas as funções principais
- Relatório LaTeX gerado automaticamente
- Dados em formato JSON para análise externa
- Gráficos em alta resolução para publicações
- Este README com instruções completas
- Logs detalhados de execução
- Exemplos de configuração source .venv/bin/activate python cloud_storage_spade.py
# Run interactive demo
python demo.py
# Run quick test
python balanced_test.py
## 📊 Simulation Results
The simulation generates several output files:
- **`monte_carlo_results_TIMESTAMP.json`**: Detailed raw results data
- **`simulation_report_TIMESTAMP.txt`**: Human-readable summary report
- **Console logs**: Real-time simulation progress and events
### Key Metrics Tracked
1. **Performance Metrics:**
- Request success rate (%)
- Average response time (seconds)
- Standard deviation of response times
2. **System Utilization:**
- Provider space utilization
- Contract completion rates
- Economic efficiency
3. **Robustness Metrics:**
- Network corruption incidents
- Provider failure frequency
- System resilience under stress
4. **Economic Metrics:**
- Total economic value generated
- Provider earnings distribution
- Buyer spending patterns
## 🔧 Configuration
### Simulation Parameters
You can modify the simulation by adjusting parameters in the main function:
```python
asyncio.run(run_monte_carlo_simulation(
iterations=5, # Number of Monte Carlo runs
duration_per_iteration=60, # Seconds per simulation
num_buyers=3, # Number of buyer agents
num_providers=4 # Number of provider agents
))
- Request interval: Time between storage requests (2-8 seconds)
- Budget: Maximum spending per hour ($15-40)
- Storage needs: 5-50 GB per request
- Contract duration: 0.5-6 hours
- Total capacity: 100-300 GB per provider
- Base pricing: $0.3-0.9 per GB/hour
- Failure probability: 2-12% random failure rate
- Dynamic pricing: Adjusts based on utilization (50-200% of base price)
- Corruption probability: 3-5% contract corruption rate
- Provider selection: Reputation-weighted algorithm
- Timeout handling: 30-60 second timeouts
🎯 SUCCESS RATE:
Mean: 87.3% ± 4.2%
Range: 82.1% - 92.5%
⏱️ RESPONSE TIME:
Mean: 1.45s ± 0.23s
Range: 1.18s - 1.78s
💾 PROVIDER UTILIZATION:
Mean: 0.68 ± 0.12
Range: 0.52 - 0.84
💰 ECONOMIC EFFICIENCY:
Mean: 94.2% ± 2.1%
Range: 91.8% - 96.7%
- Success Rate > 85%: Good system reliability
- Response Time < 2s: Acceptable performance
- Utilization 0.6-0.8: Efficient resource usage
- Economic Efficiency > 90%: Minimal value loss in transactions
- Buyer → Network: Storage request with requirements
- Network → Provider: Allocation request (after provider selection)
- Provider → Network: Accept/reject response
- Network → Buyer: Final contract confirmation
- Reputation weight (40%): Historical success rate
- Price weight (30%): Competitive pricing
- Availability weight (20%): Current space availability
- Success rate weight (10%): Recent performance
- Initial reputation: 5.0 (neutral)
- Success: +2% reputation (max 10.0)
- Failure: -2% reputation (min 0.1)
- Minimum threshold: 1.0 for consideration