Comments (4)
I'll get on that. I've been considering a massive overhaul and I'll create a punch list of things to fix.
from flips.
Hi @matthewcrews, I am loving the FLIPS library. I would like to extend the FLIPS library to use a quadratic programming solver for portfolio optimization within the investment management realm, similar to choosing "GRG nonlinear" for the solver in the Solver add-in for Excel. I would incorporate this by effectively wrapping the open source Accord .NET library and we would specify the solver... Any thoughts about this idea (like or dislike)?
from flips.
I would love to help out refactoring any way I can! I hope you also think about using the refactoring process as a set of videos with the Fast F# YouTube channel! Please let me and others know where we can contribute!
from flips.
I do like this idea. As I mentioned above, Flips needs a massive overhaul. I wrote it before I had much experience with creating libraries and supporting them. There are several mistakes in it that cause far more allocation than should be required, and this becomes burdensome with large models. Flips also went 1.0 well before it should have. It should really be ~0.8 based on how people are versioning their libraries these days.
I have re-written Flips for an internal project at my company, and I have been letting it bake to ensure it's production worthy. I will then migrate these changes into the main
branch.
I want to extend Flips to be able to model Quadratic Programs. I would like also to be able to differentiate between LP Models, MIP models, and Quadratic Models. Right now, both LP and MIP models become just a Model
type, and only the solver you choose cares about the types of decision variables: Continuous vs. Binary vs. Integer. This can cause confusion on the output for the user because some solvers will take an Integer or Binary decision variable and just treat it as continuous. Google's GLOP solver is an example. This has caused problems with debugging solver output.
I would like the API to cleanly "promote" models from LP or Binary to a MIP and for the Solvers to output an LP Result, Binary Result, or MIP Result. This then provides extra guard rails for non-Mathematical Programming Experts to use the API correctly.
Adding Quadratic Expressions to the solver would open Flips up to being used in more scenarios, and I would like that. It does make the name a bit of a misnomer because Flips stand for F# LInear Programming System. The truth is that the Flips name has always been a misnomer since it supported MIPS models from the beginning.
Perhaps I'm overcomplicating it, though. I could just raise a warning when you are using an LP solver with a non-LP Model.
My dream is for Flips to be an easy-to-use library for mathematical modeling of optimization problems. I do think Quadratic Programming would be a worthwhile addition.
from flips.
Related Issues (20)
- LinearExpression.Evaluate is incorrect HOT 2
- Update Examples to current API HOT 3
- Flips 3.0 design: explore gener(ic)alization space
- Add tests that ensure recursion uses tail calls HOT 4
- Would you be interesting in some background / related links ? HOT 2
- why is #r "nuget: Flips,2.4.4" saying .net framework and not netstandard? HOT 8
- Units of Measure missing overload HOT 1
- Sample code snippet and introduction for the fslab website
- Out of memory only for CBC and GLOP HOT 7
- question - validate decisions dynamically based on values of other decisions HOT 4
- Question - Using objective expression in a constraint HOT 6
- Version 2.4.7 locked to FSharp.Core 5.0.0 HOT 2
- Question - Division or multiplication between decisions in linear expression HOT 6
- Incorrect UoM for float multiplied with LinearExpression
- [docs] Missing `WriteMPSFile` field in settings type of introduction
- It throws me an System.BadImageFormatException exception HOT 3
- [DOC] Add license information in readme HOT 1
- LIght/Dark Toggle button
- Is it possible to match LinearExpressions conditionally? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flips.