You can simulate any price. Which one should you actually pick?
A simulation tells you what happens if you choose a number. It does not choose. So people scan by hand: try $29,000, run it, try $32,000, run it, try $36,000, then stop when they get bored and call the last one the answer. Optimization under uncertainty does the scan properly. You say which cells you are allowed to change and what you want to be best on, and the tool searches, running a full simulation for every candidate it tries.
Method guide for Google Sheets Optimization under uncertainty Pro engine
What optimization under uncertainty is
Three parts. The decision cells are what you control: a price, an order quantity, how much to hold back. The uncertain inputs stay uncertain and keep their distributions. The objective is a statistic of the output rather than the output itself, because under uncertainty there is no single value to be best at. Maximize the mean if you want the best average, or the 5th percentile if you care more about the bad case than the good one.
Every candidate is scored against the same set of random draws, which is called common random numbers. It means the difference between two candidates reflects the decision rather than luck in the sampling, and it is what lets a modest search find a real answer instead of chasing noise.
The questions it answers
- What price, quantity or split is best once the uncertainty is priced in?
- How much better is that than the number we default to?
- What is the safest choice, as opposed to the highest-average one?
When you do not need the search
Skip it when nothing is uncertain. A fixed problem with constraints belongs in Optimization, which is free, exact and far faster. Skip it when the decision has three options rather than a range: simulate the three and read the answers.
Skip it when the objective is flat near the top, which is common and worth discovering, because the useful conclusion is then “anything in this range is fine” rather than a number to the nearest dollar. And know what the search will hold to: it moves decision cells between the bounds you set, a cell check keeps a formula cell inside a bound, and a requirement holds a statistic of another simulated cell, like the chance of a shortfall kept at most 5 percent. When no candidate can obey every rule, the result says so instead of pretending.
A worked example
A fixed-price bid. Price low and you win thin work; price high and the job goes to someone else. Four rivals may or may not turn up, each with a price of their own, and you only win by beating all of them.
| Decision cell | my bid price, searched between $26,000 and $45,000 |
| Cost to deliver the job | $25,000 |
| Cost to prepare the bid | $1,000, spent either way |
| Rivals | 4, each submits a bid 60 percent of the time |
| Each rival's price | $28,000, likely $35,000, up to $48,000 |
| Objective | maximize the mean of the profit cell |
| Search | 1,000 trials per candidate, 40 generations, seed 12345 |
The answer
The search settles here:
- Best bid found
- $31,960
- Expected profit there
- $4,304 per job
- Chance you beat every rival
- 76%
- Lowball at $29,000
- $2,934 at a 98% win rate
The tool searched the whole price range and settled at about $31,960, worth roughly $4,300 a job. The shape around it is the useful part. Bidding $29,000 wins 98% of the time and earns $2,934, because plenty of work at a thin margin is still a thin margin. Bidding $36,000 keeps a fat margin and earns $2,221, because you almost never win. The top of the curve is also flat: anything from about $31,000 to $33,000 lands within a few percent of the best, which is worth knowing before anyone argues about $500.
Produced by running the shipped Competitive Bid Optimizer template through the same code the add-on runs. The search used 1,000 trials per candidate, 40 generations and seed 12345; the profit and win-rate figures are 10,000-trial simulations at each price with Latin hypercube sampling and the same seed. The panel ships with 200 trials per candidate, which is quicker; on this problem that setting moves the answer by up to about a thousand dollars between seeds, because each candidate is scored on a smaller simulation and, as above, the curve near the top is flat.
What you get back in the sheet
- Cells Sortia may change, each with a Lower and an Upper, continuous or integer.
- A choice of objective statistic: mean, median, standard deviation, the 5th or 95th percentile, or the minimum, maximized or minimized.
- Cell checks and requirements: a check holds a formula cell to a bound with the candidate decisions applied, and a requirement holds a statistic of another simulated cell, its mean, median, spread, minimum, maximum, a percentile or a chance, measured over the same trials that score the objective.
- An honest verdict on the rules: candidates that break one lose the search, and if no candidate can obey every rule the result says so instead of pretending.
- An efficient frontier when you want the trade-off rather than one answer: sweep one requirement's bound across 2 to 25 points, each a full optimization, and get the table and chart of what the objective can reach as the rule tightens.
- Common random numbers, so candidates are compared on identical draws.
- A seeded differential evolution search, so the same model with the same seed returns the same answer.
- The winning values written into your sheet when it finishes, with one-click restore of whatever was there before.
- A report giving the status, the objective, the best statistic value, the number of model evaluations and the trials per candidate, so the run can be judged rather than just believed.
- A written reading of the result. Every run ends with a card titled “What this means”: the probability that matters, the biggest driver, and what to tighten first. On the free tier the tool writes it from its own figures. On Pro you also get an AI reading of the same figures, written by a language model, and See what was sent shows the whole payload: “Ratios, shares, counts and cell references only. No cell values, no labels, no names, no formulas.”
Free or Pro
This is a Pro engine, one of five. Every free install includes five full-quality runs of any Pro engine: the same engine with nothing switched off, at any model size, on your own numbers. The five are one allowance shared across all five Pro engines, not five for each. A run counts only once it has produced a report, so a cancelled or failed run costs you nothing.
After that, this engine asks you to upgrade and nothing else does. Every statistics, forecasting and machine-learning tool stays free on every plan, and optimization and what-if stay free with limits set by the method rather than the plan: 2,000 decision cells on Simplex LP, 32 changing cells in a scenario. Nothing you have built stops working. Pro also removes the “Made with Sortia” footer from generated report tabs.
The other four Pro engines are Monte Carlo risk simulation, Decision trees, Schedule Risk (Monte Carlo CPM) and Critical Chain. Pro is $199/year, and a Day Pass covers seven days for $9 if you have a single decision to make.
Models to start from
Three of these open straight into Optimize mode with the decision cell, its bounds and the objective already set. The others build the model this tool needs, so you can load one and switch the Risk panel to Optimize.
- The order quantity that earns most across thousands of simulated seasonsHow Many Should I Order?
- How many people to roster when the day's volume is a rangeHow Many People Should Be on Shift?
- How far to oversell, and why the safe answer differs from the average oneWhat Is the Best Number to Oversell?
- The worked example above; the page walks the same model by handCompetitive Bid Optimizer
- A profit distribution at one order quantity, ready for Optimize mode to choose the quantityInventory Order Quantity (Newsvendor)
- Free, and the right tool when the returns are known: a fixed budget split across channelsSplit the Ad Budget for Maximum Orders
- Free, and exact: the cheapest way to hit a set of targets when nothing is uncertainCheapest Meal Plan (Optimization)
The other 3 models in the library that run optimization under uncertainty:
Try it in your own sheet
- Open Sortia in Google Sheets and choose Start from a template.
- Pick one of the models above, and it loads with the inputs filled in.
- Change the assumptions to fit your situation and press Run.
Never used Google Sheets? Start here goes the whole way, in seven steps, and assumes nothing.
Other methods: Monte Carlo Decision trees Schedule risk Critical chain Statistics Machine learning Forecasting Optimization What-if analysis