Stuur elk optimalisatieprobleem. Krijg één antwoord terug.
Routering, scheduling, roosters, packing, toewijzing, en elk ander probleem met beslissingen, beperkingen en een kost. Beschrijf het probleem één keer, noem een solver of een meta-solver, en betaal per solveseconde met een hard kostenplafond op elke run.
{
"api_version": "1",
"problem": {
"variables": [
{"name": "chairs", "lower": 0},
{"name": "tables", "lower": 0}
],
"constraints": [
{"expr": "4*chairs + 8*tables <= 160", "name": "machine_hours"},
{"expr": "2*chairs + 3*tables <= 75", "name": "material"}
],
"objective": {"sense": "max", "expr": "45*chairs + 80*tables"}
},
"solver": "highs",
"options": {"compute_preset": "cpu-standard", "time_limit_seconds": 5, "tags": ["quickstart"]}
}
"solver": "highs","compute_preset": "cpu-standard","time_limit_seconds": 5
Toon de hele envelope
{
"api_version": "1",
"problem": {
"variables": [
{"name": "chairs", "lower": 0},
{"name": "tables", "lower": 0}
],
"constraints": [
{"expr": "4*chairs + 8*tables <= 160", "name": "machine_hours"},
{"expr": "2*chairs + 3*tables <= 75", "name": "material"}
],
"objective": {"sense": "max", "expr": "45*chairs + 80*tables"}
},
"solver": "highs",
"options": {"compute_preset": "cpu-standard", "time_limit_seconds": 5, "tags": ["quickstart"]}
}
- objective
- 1750
- hold
- afgerekend
- wall_seconds
- 0.4
- solver_used
- highs
- outcome
- solved
- termination_status
- OPTIMAL
- chairs
- 30
- tables
- 5
Optimalisatie is moeilijk te kopen
De wiskunde heeft tachtig jaar achter zich. Ze in productie gebruiken is waar teams stilvallen, want het solverlandschap is versnipperd.
Elke solver is anders
Eigen API, modelformaat en licenties. Kennis van de ene draagt slecht over naar de volgende.
API, formaat, licentie
Constraints worden herschreven
Native voor de ene solver, herbouwd voor de andere. Resultaten komen terug in evenveel vormen als er solvers zijn.
n solvers, n formaten
Niet elke beperking wordt ondersteund
Een vereiste kan buiten vallen wat uw engine aankan. U verhuist dan het hele model, of u benadert ze weg, en het model past niet meer op het echte probleem.
één beperking, een nieuwe engine
Engines vragen andere hardware
Sommige draaien op een CPU, andere willen een GPU. Een engine kiezen betekent nu de machine voorzien waarop hij draait, nog voor u weet of hij wint.
CPU of GPU, per engine
Kiezen is de expertise
Welke engine bij uw beperkingen past, is zelf een onderzoeksvraag. Ze goed beantwoorden vraagt een specialist in een vakgebied dat niet het uwe is.
de keuze is het werk
De beste engine blijft verschuiven
Solvers brengen releases uit, en wie vorig jaar won op uw instanties, wint nu misschien niet meer. Niemand in uw team wordt betaald om die benchmark opnieuw te draaien.
elke release herschikt het
Datamodellen groeien vast aan leveranciers
Kiest u voor één solver, dan kiest uw schema stilzwijgend mee. Eruit groeien betekent de lasnaad onder druk lospeuteren.
één envelope in de plaats
Schrijf het model. Wij draaien alles wat eronder zit.
Niets op die lijst gaat over uw zaak. Het is allemaal machinerie, en de machinerie is van ons.
- Het model schrijven: de beslissingen, de beperkingen, de doelstelling.
- Een deadline en een kostenplafond voor de run instellen.
- Het antwoord lezen, elke keer in dezelfde vorm.
- Een nieuwe API, een nieuw modelformaat en een nieuwe licentie leren voor elke engine.
- Dezelfde beperkingen herformuleren voor de volgende engine.
- Een vereiste laten vallen omdat de engine ze niet aankan.
- Een GPU-machine voorzien voor een run van één minuut.
- Beslissen welke engine bij het probleem voor u past.
- De benchmarks opnieuw draaien telkens een solver een release uitbrengt.
- Het schema van een leverancier in uw database laten.
Voeg volgend kwartaal een beperking toe: uw model verandert, verder niets.
Eén envelope, geversioneerd
Vier delen. De wrapper is van ons en wij valideren die. Het probleem erin is van u.
{
"api_version": "1",
"problem": {
"variables": [
{"name": "chairs", "lower": 0},
{"name": "tables", "lower": 0}
],
"constraints": [
{"expr": "4*chairs + 8*tables <= 160",
"name": "machine_hours"},
{"expr": "2*chairs + 3*tables <= 75",
"name": "material"}
],
"objective": {
"sense": "max",
"expr": "45*chairs + 80*tables"
}
},
"solver": "highs",
"options": {
"compute_preset": "cpu-standard",
"time_limit_seconds": 5,
"tags": ["quickstart"]
}
}
- api_version
- De wireversie. Vandaag altijd "1".
- problem
- Uw model: variabelen, beperkingen, een doelfunctie. Opaak voor ons, gevalideerd door de solver.
- solver
- Een concrete solvernaam, of de naam van een meta-solver: een benoemde set solvers waarvan om het even welke de opdracht kan opnemen.
- options
- time_limit_seconds, compute_preset, webhook, idempotency_key, tags. Allemaal optioneel.
Wij behandelen de body van uw probleem als opaak. De manager valideert de envelope en meet het rekenverbruik, maar leest uw model nooit.
Indienen, volgen, ophalen
Een inzending geeft meteen een id en de status queued terug. Registreer een ondertekende webhook en het antwoord komt naar u toe, of houd één aanvraag open op de wait-call tot het probleem klaar is. Haal de oplossing op met één call.
- solved
- een optimale oplossing of een oplossing binnen de tolerantie
- no_solution
- bewezen onhaalbaar of onbegrensd, en gefactureerd, want het bewijs is het product
- limit
- een budget stopte de solve; de incumbent wordt teruggegeven als die bestaat
- error
- de solver brak op dit model; wordt niet opnieuw geprobeerd, kies een andere solver of herformuleer
Gebouwd voor solvers die crashen en netwerken die wegvallen
Een gecrashte of vastgelopen solve wordt gedetecteerd, opnieuw in de wachtrij gezet en opnieuw opgenomen. U wordt één keer gefactureerd, voor de poging die slaagde. Terminale webhooks worden met backoff opnieuw geprobeerd en belanden daarna in een dead-letterlogboek dat u kunt inspecteren en opnieuw versturen.
Eén envelope, twee pogingen, één factuur
- Grootte van de envelope
- tot 20 MB
- Tijdslimiet
- 300 s standaard, 6 u maximaal
- Batch indienen
- tot 100 envelopes in één call
- Webhook-retries
- 1 min, 5 min, 25 min, 2 u, dan dead-letter
- Handtekening
- X-Solve-Signature, HMAC SHA-256 over de ruwe body
- Facturatie na een crash
- één keer, alleen de geslaagde poging
- Geannuleerd in de wachtrij
- gratis, reservering vrijgegeven
- Frequentiebegrenzing
- 429 met Retry-After
Elke solver die wij draaien, en of hij nu antwoordt
Er staan nog geen solvers op deze site.
Open solvers draaien bij ons. Commerciële solvers draaien met uw eigen licentie. Een meta-solver is een benoemde set solvers, geen black box, en de gebruikte solver en zijn prijs staan op elk resultaat.
Gemeten als rekenkracht, geprijsd vóór de run
cost = base_fee + ceil(seconds × effective_rate)
Elke solver heeft een gepubliceerd basistarief en een tarief per seconde van de rekenkracht die hij reserveert, en elk rekenprofiel vermenigvuldigt dat tarief. De maximale kost volgt uit de solver, het profiel en de looptijd die u instelt, en wordt vóór de start van de solve op uw saldo gereserveerd. U betaalt de gebruikte seconden. Annuleer wanneer u wil en betaal die seconden, nooit meer. Gratis credits bij registratie, zonder kaart.
Een REST-API die u in één zit doorleest
Geversioneerde endpoints, gestructureerde fouten die het foute veld benoemen, ondertekende webhooks met een zichtbaar leveringslogboek, en een event stream voor wanneer u ze niet kunt ontvangen. Elke integratie kent dezelfde drie bewegingen: indienen, volgen, ophalen.
Schrijf het model in Python en lees de oplossing terug als objecten. Versturen, wait, webhookcontroles en idempotente retries zitten er al in. De Studio draait ze in de browser, zonder iets te installeren.
Afgebakende sleutels, gehashte geheimen, bewaakt uitgaand verkeer
Sleutels
Benoemde sleutels werken alleen op de optimalisatie-API en kunnen één voor één ingetrokken worden, zodat u er één roteert zonder de rest aan te raken.
Geheimen
Alleen als hashes bewaard. Het ruwe geheim wordt één keer getoond en daarna nooit meer.
Uitgaand webhookverkeer
Doeladressen worden getoetst aan private en metadata-reeksen voordat wij verbinden, zodat een gekaapte URL geen interne diensten kan bereiken.
Bewaartermijn
Payloads worden gewist volgens een gepubliceerd schema, standaard na 90 dagen. Metadata blijft voor uw audittrail.
Vragen die engineers echt stellen
Kan ik een specifieke solver forceren?
Ja. Noem een concrete solver in de envelope en die wordt exact gerespecteerd. Een meta-solver is voor wanneer u liever niet kiest.
Welke probleemklassen worden ondersteund?
Alles wat de aangesloten solvers oplossen: LP, MIP, NLP, CP, scheduling en routering. De envelope is met opzet klasse-agnostisch.
Wat gebeurt er als een solve halverwege crasht?
Ze wordt automatisch gedetecteerd, opnieuw in de wachtrij gezet en opnieuw opgenomen. U ziet het in de geschiedenis van de pogingen, en u wordt één keer gefactureerd, voor de poging die slaagde.
Hoe lang bewaren jullie mijn probleemdata?
Payloads worden gewist volgens een gepubliceerd schema, standaard na 90 dagen. Metadata blijft voor uw audittrail. Na het wissen geeft een fetch 410 purged terug.
Uw eerste solve is vijf minuten ver
Draai een echt model op een echte solver, in de browser. Geen account, geen kredietkaart.