Евклідова проєкція на симплекс
Спроєктуйте 1–256 скінченних чисел у межах ±10^6 на невід’ємний одиничний симплекс.
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]
Проєкт
Перевірте рівності й розв’язки у вершинах, відхиліть логічні значення та порівняйте з числовим допуском, не вважаючи ваги каліброваними ймовірностями.
Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
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]
Зберігайте числові обмеження видимими протягом усієї перевірки
SimplexDune — робоче середовище з ШІ для програмування у Windows для розробників, які перевіряють числові перетворення в програмі. Почніть із папки проєкту й властивостей, яким має відповідати вихід. Підключена модель може допомогти дослідити відображення цих вимог у коді й обговорити обмежену зміну, а ви перевірите пропозицію в контексті споживача, що залежить від результату.
Одне із завдань, підказаних simplex_projection.py, стосується перетворення вектора на невід’ємні ваги із сумою одиниця. Попросіть помічника перевірити допустимі входи, порядок результату й перевірки для чисел із рухомою комою. Надайте характерні вектори та опишіть подальше використання. Це пов’язує приклад із реальним програмним контрактом, не представляючи середовище як вбудований оптимізатор або службу навчання моделей.
Виберіть модель ШІ без обмежень, якщо вона доступна через підтримувану кінцеву точку, сумісну з OpenAI, або Anthropic. Налаштуйте її адресу й потрібні облікові дані, враховуючи підтримку контексту та інструментів сервера. Перевірте запропоновані зміни й запустіть як перевірки очікуваного результату, так і перевірки властивостей виходу у своєму числовому середовищі. Застосовуйте визначений допуск там, де точна рівність чисел із рухомою комою недоречна. Обговорення має виявити припущення виправлення, щоб ви могли вирішити, чи зберігає воно потрібну програмі поведінку.
Перевірка числового результату з обмеженнями
Які властивості виходу слід явно запитати?
Назвіть потрібну довжину, порядок, допустимі знаки й очікувану суму разом із допуском, якщо він є. Додайте вимоги споживача. Результат може відповідати одному обмеженню й порушувати інше, тому перевірка не має завершуватися на одному сукупному значенні.
Чи надійна точна рівність одиниці для тесту чисел із рухомою комою?
Не в кожному обчисленні. Виберіть допуск відповідно до числового контракту й тестового середовища та поясніть його в перевірці. Попросіть модель відрізняти ефекти подання від справжнього порушення обмеження, а не мовчки послаблювати твердження тесту.
Чи має виправлення перевпорядковувати початковий вектор?
Лише якщо контракт виходу це дозволяє. Внутрішнє сортування може бути потрібним обчисленню, тоді як кінцеві значення все ще мають відповідати початковим позиціям. Перевірте споживача й протестуйте вхід, різні елементи якого роблять помилку порядку помітною.
Чи може перевірка властивостей замінити приклади очікуваного результату?
Використовуйте обидва підходи, якщо вони перевіряють різні твердження. Вектор може бути невід’ємним і мати суму одиниця, не будучи потрібною проєкцією. Малі незалежно встановлені результати допомагають перевірити перетворення, а властивості охоплюють ширші аспекти контракту виходу.
SimplexDune · Оновлено 2026-10-25