DEMAND_SEGMENTS_GUIDE.mdβ’6.21 kB
# π Gestione Demand Segments - Sistema MCP Visum
## π― Come Funziona la Gestione dei Segmenti di Domanda
### **β
DETECTION AUTOMATICO**
Il sistema **rileva automaticamente** i segmenti di domanda disponibili nel progetto Visum e li configura per l'assegnazione.
### **π Processo di Rilevamento**
#### **1. Scansione Segmenti**
```python
# Il sistema scandisce tutti i demand segments disponibili
all_segments = list(visum.Net.DemandSegments)
prt_segments = [seg for seg in all_segments if seg.GetAttValue('Code').startswith('P') or 'PrT' in seg.GetAttValue('Code')]
```
#### **2. Classificazione Automatica**
- **PrT Segments**: Segmenti per trasporto privato
- **PuT Segments**: Segmenti per trasporto pubblico
- **Other Segments**: Altri segmenti definiti dall'utente
#### **3. Selezione Intelligente**
- **PrioritΓ PrT**: Per assegnazioni trasporto privato
- **Limite di 5 segmenti**: Per evitare sovraccarico computazionale
- **Fallback robusto**: Usa tutti i segmenti se non trova PrT specifici
## π Comandi Disponibili
### **π Analisi Demand Segments**
```bash
# Analizza la configurazione dei segmenti
"analizza i segmenti di domanda"
"demand segments analysis"
"segments configuration"
"segmenti matrice"
```
### **π Assegnazione con Segmenti**
```bash
# L'assegnazione rileva automaticamente i segmenti
"esegui un'assegnazione equilibrio"
"prt assignment con segmenti configurati"
"assignment trasporto privato"
```
## π Output Esempio - Demand Segments Analysis
```json
{
"analysis_type": "demand_segments",
"status": "completed",
"segment_configuration": {
"total_segments": 4,
"prt_segments": [
{
"code": "P",
"name": "Private Transport",
"mode": "PrT",
"demand_matrices": [100, 101, 102]
},
{
"code": "P_CAR",
"name": "Car Segment",
"mode": "PrT",
"demand_matrices": [110]
}
],
"put_segments": [
{
"code": "PuT",
"name": "Public Transport",
"mode": "PuT",
"demand_matrices": [200, 201]
}
],
"segments_by_mode": {
"private_transport": 2,
"public_transport": 1,
"other": 1
}
},
"recommendations": {
"assignment_ready": true,
"suggested_segments": ["P", "P_CAR"],
"configuration_notes": [
"PrT segments found",
"Multiple segments available",
"Matrix configuration seems valid"
]
}
}
```
## π Output Esempio - Assignment con Demand Segments
```json
{
"assignment_type": "PrTAssignmentBPR",
"method_description": "BPR (Bureau of Public Roads)",
"status": "completed",
"demand_segments": {
"segments_found": 2,
"segments_selected": [
{
"code": "P",
"name": "Private Transport",
"mode": "PrT"
},
{
"code": "P_CAR",
"name": "Car Segment",
"mode": "PrT"
}
],
"auto_detected": true
},
"network_performance": {
"total_volume": 125000,
"total_vmt": 850000.50,
"average_speed": 45.2
},
"convergence_info": {
"segments_processed": 2,
"method_used": "BPR (Bureau of Public Roads)"
}
}
```
## π§ Configurazione Flessibile
### **π― Comportamento Intelligente**
#### **Se Trova Segmenti PrT**
- β
Usa automaticamente i segmenti PrT rilevati
- β
Mostra informazioni sui segmenti selezionati
- β
Limita a 5 segmenti per performance ottimale
#### **Se Non Trova Segmenti PrT**
- π Usa i primi 3 segmenti disponibili
- π Informa l'utente della selezione automatica
- π Procede con configurazione di fallback
#### **Se Non Trova Nessun Segmento**
- β οΈ Usa configurazione default di Visum
- β οΈ Informa l'utente della situazione
- β οΈ Procede comunque con l'assegnazione
### **π Note di Configurazione**
#### **β
Automatic Detection**
```python
print(f"Found {len(demand_segments)} demand segments for assignment:")
for seg in demand_segments:
print(f" - {seg['code']}: {seg['name']} ({seg['mode']})")
```
#### **βοΈ Fallback Strategy**
```python
if not prt_segments:
# If no PrT segments found, use all segments
prt_segments = all_segments[:3] # Limit to first 3
```
#### **π§ User Override**
Il sistema **rispetta sempre** la configurazione esistente del progetto Visum. Se l'utente ha giΓ configurato manualmente i segmenti di domanda nelle impostazioni di Visum, il sistema li userΓ .
## π― Vantaggi del Sistema
### **β
Automazione Intelligente**
- **Zero configurazione manuale** richiesta dall'utente
- **Detection automatico** dei segmenti appropriati
- **Selezione intelligente** basata sul tipo di assegnazione
### **β
FlessibilitΓ **
- **Supporta qualsiasi configurazione** di segmenti Visum
- **Fallback robusto** per progetti atipici
- **CompatibilitΓ completa** con setup esistenti
### **β
Trasparenza**
- **Report dettagliato** dei segmenti utilizzati
- **Informazioni complete** su selezione automatica
- **Raccomandazioni** per configurazione ottimale
### **β
Performance**
- **Limite intelligente** a 5 segmenti max
- **Evita sovraccarico** computazionale
- **Ottimizzazione automatica** per reti grandi
## π¨ Situazioni Speciali
### **β οΈ Progetti Senza Segmenti PrT**
Se il progetto non ha segmenti PrT specifici, il sistema:
- Usa i primi segmenti disponibili
- Informa l'utente della situazione
- Procede con l'assegnazione usando configurazione Visum default
### **β οΈ Progetti con Molti Segmenti**
Se il progetto ha >5 segmenti PrT, il sistema:
- Seleziona i primi 5 segmenti PrT
- Informa l'utente della limitazione
- Fornisce raccomandazioni per configurazione manuale
### **β οΈ Configurazioni Atipiche**
Per configurazioni speciali, l'utente puΓ²:
- Pre-configurare i segmenti in Visum GUI
- Il sistema rispetterΓ la configurazione esistente
- Usare il comando di analisi per verificare la configurazione
## π Conclusione
Il sistema **gestisce automaticamente** i segmenti di domanda senza richiedere input manuale dall'utente, ma fornisce **trasparenza completa** su quali segmenti vengono utilizzati e perchΓ©, permettendo all'utente di verificare e modificare la configurazione se necessario.