Hacker News new | ask | show | jobs
by DannyBee 21 days ago
NEOS will let you run this stuff on cplex/gurobi/etc (IE much faster than the backends behind quicopt), for free, is integrated with pyomo/etc, and has like an 8 hour time limit.

Often, the difference on "harder" problems is 10x or more.

I have problems that gurobi solves in 30 seconds that take 15 minutes or more for ~every non-commercial solver (or-tools, HIGHS, ipopt, etc).

But right now, this wouldn't even be interesting to me to use even if they actually were fronting commercial solvers, because they can't actually run it any faster and having this ".solve" API does nothing - pyomo already does that for me in practice.

4 comments

I worked at a place that basically never bought software, and they used gurobi for scheduling. It is apparently best in class for lots of problems.
> But right now, this wouldn't even be interesting to me to use even if they actually were fronting commercial solvers, because they can't actually run it any faster

So you use NEOS, but another service offering the same thing as NEOS would not be useful?

Not if i have to pay for it and use a different API?

Remember, NEOS is both free, and pyomo already supports it natively without me changing anything - i can use both neos and local without any issue.

Why would i move to something with a different API that i have to pay for?

> Not if i have to pay for it and use a different API?

TFA says Quicopt supports Pyomo. The example uses the "free tier", so you're not paying for anything (yet -- though I'm confused by the phrase "one-time entry point").

NEOS has generous limits, but the fact that Gurobi are still in business tells me that NEOS by itself can't satisfy everyone. Were Quicopt to offer access to Gurobi, etc., per your hypothetical, I think this would clearly be valuable.

More strongly I don't think it's crazy to offer "just" publicly available solvers, despite how much weaker they are than commercial ones. If I had to solve a stream of optimisation problems that were individually pretty easy but the rate of arrival was unpredictable, using such an "Optimisation as a Service" would make sense in much the same way that it makes more sense to serve spiky web traffic by spinning up cloud VMs on demand than by buying a bunch of on-prem boxes, even though those cloud VMs might be very weak.

Sure. If it supported commercial solvers for me it would definitely be more valuable. I do think it’s fairly crazy to pay for remote solving using public solvers - the case you give is uncommon enough that whoever has it would probably want their own infrastructure to deal with it. Beyond that the current setup of trying to sell a single call solver as your advantage when the customers who might buy it for real need flexibility of various sorts doesn’t make sense to me.

FWIW-By supports pyomo they mean I can install their python package and hand a pyomo model to their solver API. I don’t want that. I want to use pyomo’s solver API which is how I interact with all other solvers

In the end I just don’t see who they are selling to. If their advantage is a single call solver for different model kinds, which is what they spend the most time talking about, that could be done with a small python package, and would already exist if it was a big issue

Gurobi probably has good heuristics and gives you a good enough answer instead of gnawing at a bone like every other MIP solver
Just curious, what kind of problems are you solving?
In this particular case they are power usage and rate optimization problems to do peak shaving/demand shifting with a combination of batteries and optionally, solar. It tells you the max you can save, the amount of battery/solar you should have (including the pareto front because sometimes it's like 2x the battery for $5 more in savings), and how to program the inverters.

For free, mind you, this is not part of a paid offering on my part.

These are easy for the case of non-demand rates (IE the rate just changes at x hour to x price), and can be solved by HIGHS/et al in a second or two. You can actually prove there is at least one optimal solution that only changes inverter programming at a rate change point.

They are actually quite complex when the rate has a demand charge (IE you are charged not just for x price per kwh, but also some amount * max demand usage of any single hour in a month).

The max demand charge is usually 80% of the bill.

The complexity is because recharging the batteries (particularly without solar) is the same as any other load from a demand perspective. So they have to be trickled (or charged from solar), etc. On top of that, lots of inverters have a limited amount of TOU slots you can use (for example, sol-ark inverters only support 6 periods). Which constrains it painfully. Gurobi can solve it in about 30 seconds. HIGHS takes around 15 minutes to solve it for 2 years of hourly history data.