Proiezione euclidea sul simplesso
Proietta 1–256 numeri finiti entro ±10^6 sul simplesso unitario non negativo.
import math
def simplex_projection(values):
if type(values) is not list or not 1 <= len(values) <= 256:
raise ValueError("simplex.input")
if any(type(x) not in (int, float) or not -10**6 <= x <= 10**6 or not math.isfinite(x) for x in values):
raise ValueError("simplex.value")
ranked = sorted(values, reverse=True)
total, theta = 0.0, 0.0
for count, value in enumerate(ranked, 1):
total += value
candidate = (total-1)/count
if value > candidate:
theta = candidate
return [max(0.0, value-theta) for value in values]
Progetto
Prova parità e soluzioni ai vertici, rifiuta booleani e confronta con tolleranza numerica senza trattare i pesi come probabilità calibrate.
Controlla prima di applicare
Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
Modelli
Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
import math
def simplex_projection(values):
if type(values) is not list or not 1 <= len(values) <= 256:
raise ValueError("simplex.input")
if any(type(x) not in (int, float) or not -10**6 <= x <= 10**6 or not math.isfinite(x) for x in values):
raise ValueError("simplex.value")
ranked = sorted(values, reverse=True)
total, theta = 0.0, 0.0
for count, value in enumerate(ranked, 1):
total += value
candidate = (total-1)/count
if value > candidate:
theta = candidate
return [max(0.0, value-theta) for value in values]
Mantieni visibili i vincoli numerici durante tutta la revisione
SimplexDune è un ambiente di programmazione con IA per Windows per sviluppatori che rivedono trasformazioni numeriche in un'applicazione. Parti da una cartella di progetto e dalle proprietà che l'output deve soddisfare. Il modello collegato può aiutare a esaminare come questi requisiti compaiono nel codice e a discutere una modifica circoscritta, mentre tu rivedi la proposta rispetto al codice utilizzatore che dipende dal risultato.
Un'attività suggerita da simplex_projection.py riguarda la trasformazione di un vettore in pesi non negativi con somma unitaria. Chiedi all'assistente di esaminare input accettati, ordinamento dell'output e controlli usati per i risultati in virgola mobile. Fornisci vettori rappresentativi e descrivi l'uso successivo. Questo mantiene l'esempio fondato su un contratto software reale, senza trattare l'ambiente come un ottimizzatore integrato o un servizio di addestramento dei modelli.
Seleziona un modello di IA senza restrizioni quando disponibile tramite un endpoint supportato compatibile con OpenAI o Anthropic. Configura indirizzo e credenziali richieste, considerando il supporto di contesto e strumenti del server. Esamina le modifiche proposte ed esegui sia controlli dei risultati attesi sia delle proprietà dell'output nel tuo ambiente numerico. Usa una tolleranza dichiarata quando l'uguaglianza esatta in virgola mobile è inappropriata. La conversazione deve esplicitare le ipotesi alla base della modifica affinché tu possa decidere se preserva il comportamento necessario all'applicazione.
Rivedere output numerici vincolati
Quali proprietà dell'output devo richiedere esplicitamente?
Indica lunghezza richiesta, ordinamento, segni consentiti e totale atteso, insieme alle eventuali tolleranze. Includi i requisiti del codice utilizzatore. Un risultato può soddisfare un vincolo violandone un altro, quindi la revisione non deve fermarsi a un unico valore aggregato.
L'uguaglianza esatta a uno è un test affidabile in virgola mobile?
Non in ogni calcolo. Scegli una tolleranza adatta al contratto numerico e all'ambiente di test e spiegala nel controllo. Chiedi al modello di distinguere gli effetti della rappresentazione da una vera violazione del vincolo, anziché indebolire silenziosamente le asserzioni.
La modifica deve riordinare il vettore originale?
Solo se il contratto dell'output lo consente. Un ordinamento interno può servire al calcolo mentre i valori finali devono ancora corrispondere alle posizioni originali. Rivedi il codice utilizzatore e testa un input i cui elementi distinti rendano visibile un errore di ordinamento.
Un controllo di proprietà può sostituire gli esempi con risultati attesi?
Usali entrambi quando verificano affermazioni diverse. Un vettore può essere non negativo e avere somma uno senza essere la proiezione prevista. Piccoli risultati stabiliti indipendentemente aiutano a verificare la trasformazione, mentre le proprietà coprono aspetti più ampi del contratto dell'output.
SimplexDune · Aggiornato 2026-10-25