Control Center for Mac. Instantly access the controls you use most — like Wi-Fi and Bluetooth — and new controls to play music and enable Dark Mode for your display. Designed just for Mac, the new Control Center lets you add controls and drag favorites to the menu bar to customize it just for you. Download LINGO on Windows 64 x64 or Mac OSX 64-bit and LINDO 6.1 on Windows 32x86. This software may be upgraded to a standard license at any time by ordering from our order page or contacting LINDO Systems. Please confirm your status below to continue. LINGO can be installed on 32-bit and 64-bit versions of Windows XP/Vista/7/8/10. Lingo11.exe, Lingo13.exe, Lingo6414.exe, Lingo.exe or Lingo6418.exe are the default file names to indicate the LINGO installer. This tool was originally created by LINDO Systems. Our built-in antivirus scanned this download and rated it as 100% safe.
Bringing snow to the web since 2003. This version: 1.44.20131208
Change Wind | Stop Snowing | Bonus widget: Smash Christmas Lights
(Note: Christmas Lights are incompatible with IE 6 because of PNG images.)
Let It Snow.
So, you want JavaScript snow on your web site, eh?
Snowstorm is a JavaScript-driven snow effect that can be easily added to web pages. It is free for use, and easy to set up. A single JavaScript file provides the functionality required. No images are used for the snow effect.
I'd like to use this on my site.
This is all you need to get started:
See this basic example for reference.
What kind of things can I customize?
You can adjust the snow speed, the amount of snow, the 'wind', if and where it should stick (and if it should 'melt'), and finally, whether the snow can react to the mouse moving (ie., 'wind changes.') See Customizing Snowstorm for more.
And the Christmas Lights?
The christmas lights are a separate experimental script which also has an example. It is undocumented, but the script can be modified to taste if you're the adventurous type.
Download
ZIP file, includes this demo page and source code.
Also on Github: github.com/scottschiller/snowstorm/
License
Snowstorm is provided under a BSD license.
Technical Notes
Snowstorm works under modern browsers, and as far back as IE 6 - possibly even 5.5, if you can find a copy!
If you are seeing snow as you read this, then the script is working as expected.
CPU Use
Snowstorm can eat up a lot of CPU, even on modern computers, because of the number of elements being moved around the screen at once. The basic example may have notably lower CPU use as it doesn't include the christmas lights, and the page layout is much simpler. Consider raising the animation interval, and lowering the amount of snowflakes (active and max) to help reduce CPU use.
Where supported, Snowstorm will attempt to use GPU-based hardware acceleration to draw and animate the snow. Having GPU acceleration can help in reducing CPU load.
Mobile Support
By default, mobile devices are excluded from the snow effect to be nice to their CPUs (and batteries.) If your local marketing department insists, 'This must work on mobile!' despite being warned of the downsides, you can set snowStorm.excludeMobile = false;
(or edit the snowstorm.js file directly) to enable Snowstorm on devices like the iPhone, iPad and Android phones etc. This demo page has the effect enabled for mobile devices.
Implementation
One JavaScript reference is required. Aside from customization, that's it!
Once you have snowstorm configured, you can use the optimized, minified version of the code (~40% smaller):
Customizing Snowstorm
Once you have Snowstorm running in your page, you can customize its properties either by editing the snowstorm.js file directly, or assigning new values to the snowStorm object after snowstorm.js has loaded.
For example:
See this customized example in action.
Configurable Properties
Snowstorm can be fairly easily customized; some of the major properties are listed below.
snowStorm.autoStart = true;
- Whether the snow should start automatically or not.
snowStorm.animationInterval = 33;
- Theoretical 'milliseconds per frame' measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
snowStorm.flakeBottom = null;
- Limits the 'floor' (pixels) of the snow. If unspecified, snow will 'stick' to the bottom of the browser window and persists through browser resize/scrolling.
snowStorm.flakesMax = 128;
- Sets the maximum number of snowflakes that can exist on the screen at any given time.
snowStorm.flakesMaxActive = 64;
- Sets the limit of 'falling' snowflakes (ie. moving on the screen, thus considered to be active.)
snowStorm.followMouse = true;
- Allows snow to move dynamically with the 'wind', relative to the mouse's X (left/right) coordinates.
snowStorm.freezeOnBlur = true;
- Stops the snow effect when the browser window goes out of focus, eg., user is in another tab. Saves CPU, nicer to user.
snowStorm.snowColor = '#fff';
- Don't eat (or use?) yellow snow.
snowStorm.snowCharacter = '•';
- • (•) = bullet. · entity (·) is not used as it's square on some systems etc. Changing this may result in cropping of the character and may require flakeWidth/flakeHeight changes, so be careful.
snowStorm.snowStick = true;
- Allows the snow to 'stick' to the bottom of the window. When off, snow will never sit at the bottom.
snowStorm.targetElement = null;
- An HTML element which snow will be appended to (default: document body.) Can be an element ID string eg. 'myDiv', or a DOM node reference. See relative and absolute-positioned examples.
snowStorm.useMeltEffect = true;
- When recycling fallen snow (or rarely, when falling), have it 'melt' and fade out if browser supports it
snowStorm.useTwinkleEffect = true;
- Allow snow to randomly 'flicker' in and out of view while falling
snowStorm.usePositionFixed = false;
- true = snow not affected by window scroll. may increase CPU load, disabled by default - if enabled, used only where supported.
snowStorm.vMaxX = 8;
snowStorm.vMaxY = 5;- Defines maximum X and Y velocities for the storm; a random value in this range is selected for each snowflake.
Methods
Snowstorm has a few basic methods for controlling the snow effect.
snowStorm.randomizeWind()
- Sets the wind speed with a random value relative to vMaxX and vMaxY properties.
snowStorm.freeze()
- Stops the snow effect in place.
snowStorm.resume()
- Continues snowing from a 'frozen' state.
snowStorm.toggleSnow()
- Enables or disables the snow effect depending on state, same as calling freeze() or resume().
snowStorm.stop()
- Freezes and kills the snowstorm effect, and removes related event handlers. Snowstorm will not work properly if other methods are called after stop().
Version History
Older versions
1.44.20131208
- Added
usePixelPosition
to allow forcing of pixels for left/top positioning vs. percentage-based values. - Detect and force pixel-based positioning if
targetElement
is specified, orbody
is relatively-positioned. - Adjust positioning logic for
targetElement
case.
1.44.20131125
- Fixed regression where
flakeBottom
would result in snow not properly sticking. - Percent based left/right positioning is now applied in all browsers, making resizing better.
1.44.20131111
- GPU (hardware)-accelerated snow, where supported. Faster drawing, less load on CPU.
- Percent-based bottom/right positioning of snow, rather than top/left-based pixel-based positioning (where supported.)
- JSLint cleanup.
- Fixed the color of christmas light fragments to match the lights, finally.
- Design/layout tweaks, slightly more modern.
1.43.20111201
- ImageOptim-optimized image files (byte savings)
- Added snowStorm.autoStart, for those who want to start snow at their own leisure
- Additional Mobile check: Opera Mobile
- cursor:default over snow (instead of text I-beam cursor)
- meltFrame animation counter correction (possible JS error fix)
1.42.20111120
- Tweaked right margin for IE 9 under Windows 7, fixing horizontal scrollbar issue
- Re-appeased the jslint gods
1.41.20101113
- Added formal BSD license (project was previously 'free for any use.')
- Modernized event add/remove handlers, wait for window.onload() before starting
- New excludeMobile option, ignore iPhone etc. by default (high CPU use on mobile is evil for both CPU, and batteries.)
- New freezeOnBlur option, allow control of previously-hardcoded behaviour
- Focus-based freezeOnBlur now works under IE 6, too
- Code cleanup, now passes updated (more-strict) jslint validation
1.4.20091115
- Text-based snow (and color options) using 'bullet' HTML entity • .. no more images!
- New snowMelt effect, resize + fade where supported
- New twinkle effect (like stars)
- New animationInterval, usePositionFixed, snowColor attributes, common attributes now public on snowStorm object eg. snowStorm.stick = true;
- Code passes jslint validation (2009-10-04 edition, default settings)
- Removed 'collect' feature, somewhat-buggy and nobody used it
- Fixed sticky/recycle behaviour
1.3.20081215
Download Lindo For The Mac Os
- IE doctype rendering tweak: position:absolute used for 'BackCompat' (HTML 4 transitional) DOCTYPE in IE.
- Fixed an annoying horizontal scrollbar positioning-related bug with wind affecting snow near the right edge.
1.3.20081208
Download Lindo For The Macbook Pro
- New snowStick (snow stickiness) and followMouse (dynamic wind) options.
- Four years later, we still have IE 6 and can't use position:fixed globally for 'sticky' snow, but we're really close.
- Position:fixed used for all more modern browsers.
- Improved distribution of initial snow dump, new recycling.
- Focus/blur events (minus IE) for graceful pausing of snow, sparing user's CPU when window not in focus.
- Bonus smashable christmas lights demo, using SoundManager 2 and YUI DOM/Event libraries
- Cleaner, simplified event code, removal of old PNG wrapper stuff.
1.2.20041121a
- Script moved into one file (snowstorm.js) for simplicity
- addEventHandler and PNG support functions updated
1.2.20031218a
- Opera 7 ('O7') support added.. I think.
- Improved initialization speed (less snowflake objects on startup)
- Err.. That's about it.
1.2.20031213a
- Netscape 6.x 'sticky' snow behavior fixed (now works)
- IE:mac bug event handler bug fixed (script should now work)
- Snow collection feature added
- Snowflake speed is relative to size (Cheap pseudo-3D effect)
1.1.20031206c
- Initial release
Feedback
Comments, suggestions, questions, criticism?
A few contact options are available. Get in touch via email or IM.
Elsewhere On The Internets
This is a side project by Scott Schiller. Wacky DHTML/JavaScript experiments and other nonsense can be found at schillmania.com.
A large number of solvers for mathematical programming models have been hooked up to GAMS. The tables below provide a brief description of each solver, the model types each solver is cabable of solving, and the platforms supported by each solver. For general information on using GAMS solvers, see Solver Usage.
Solver | Vendor | Description |
---|---|---|
ALPHAECP 2.10 | Abo University | MINLP solver based on the extended cutting plane (ECP) method |
ANTIGONE 1.1 | Princeton University | Deterministic global optimization for MINLP |
BARON | The Optimization Firm, LLC | Branch-And-Reduce Optimization Navigator for proven global solutions |
BONMIN 1.8 | COIN-OR Foundation | COIN-OR MINLP solver implementing various branch-and-bound and outer approximation algorithms |
CBC 2.10 | COIN-OR Foundation | High-performance LP/MIP solver |
CONOPT 3 | ARKI Consulting and Development | Large scale NLP solver |
CONOPT 4 | ARKI Consulting and Development | Large scale NLP solver |
CONVERT | GAMS Development Corp | Framework for translating models into scalar models of other languages |
CPLEX 20.1 | IBM ILOG | High-performance LP/MIP solver |
DE | GAMS Development Corp | Generates and solves the deterministic equivalent of a stochastic program, included in EMP/SP |
DECIS | G. Infanger, Inc. | Large scale stochastic programming solver |
DICOPT 2 | EDRC, Carnegie Mellon University | Framework for solving MINLP models |
EXAMINER | GAMS Development Corp | A tool for examining solution points and assessing their merit |
GAMSCHK | Bruce McCarl | A System for Examining the Structure and Solution Properties of Linear Programming Problems Solved using GAMS |
GLOMIQO 2.3 | Princeton University | Branch-and-bound global optimization for mixed-integer quadratic models |
GUROBI 9.1 | Gurobi Optimization | High performance LP/MIP solver |
GUSS | GAMS Development Corp | A framework for solving many instances of related models efficiently (Gather-Update-Solver-Scatter) |
IPOPT 3.13 | COIN-OR Foundation | Interior Point Optimizer for large scale nonlinear programming |
JAMS | GAMS Development Corp | Solver to reformulate extended mathematical programs (incl. LogMIP) |
KESTREL | NEOS | Framework for using remote NEOS solvers with a local GAMS system |
KNITRO | Artelys | Large scale NLP solver |
LGO | Pinter Consulting Services | A global-local nonlinear optimization solver suite |
LINDO 12.0 | Lindo Systems Inc. | A stochastic solver from Lindo Systems, Inc. Includes an unrestricted version of LINDOGLOBAL |
LINDOGLOBAL 12.0 | Lindo Systems Inc. | MINLP solver for proven global solutions |
LOCALSOLVER 9.5 | LocalSolver | Hybrid neighborhood local search solver |
MILES | University of Colorado at Boulder | MCP solver |
MINOS | Stanford University | NLP solver |
MOSEK 9 | MOSEK ApS | Large scale mixed-integer conic programming solver |
MSNLP | OptTek Systems and Optimal Methods | Multi-start method for global optimization |
NLPEC | GAMS Development Corp | MPEC to NLP translator that uses other GAMS NLP solvers |
ODHCPLEX 5 | Optimization Direct Inc | ODHeuristic on top of Cplex |
OsiCplex | COIN-OR Foundation | Bare-Bone link to CPLEX |
OsiGurobi | COIN-OR Foundation | Bare-Bone link to Gurobi |
OsiMosek | COIN-OR Foundation | Bare-Bone link to Mosek |
OsiXpress | COIN-OR Foundation | Bare-Bone link to Xpress |
PATHNLP | University of Wisconsin - Madison | Large scale NLP solver for convex problems |
PATH | University of Wisconsin - Madison | Large scale MCP solver |
SBB | ARKI Consulting and Development | Branch-and-Bound algorithm for solving MINLP models |
SCIP 7.0 | Zuse Institute Berlin et.al. | High-performance Constraint Integer Programming solver |
SELKIE | University of Wisconsin - Madison | Decomposition and parallel solution for EMP |
SHOT 1.0 | Abo Akademi University | MINLP solver based on the extended supporting hyperplane (ESH) method |
SNOPT | Stanford University | Large scale SQP based NLP solver |
SOPLEX 5.0 | Zuse Institute Berlin | High-performance LP solver |
XA | Sunset Software | Large scale LP/MIP solver |
XPRESS 36.01 | FICO | High performance LP/MIP and SLP based MINLP solver |
GAMS is able to formulate models in many different types of problem classes or model types. Typically, a solver will be capable of solving (i.e. will accept as input) more than one model type. The solver/model type matrix shows which solver is capable of which model type:
LP | MIP | NLP | MCP | MPEC | CNS | DNLP | MINLP | QCP | MIQCP | Stoch. | Global |
---|---|---|---|---|---|---|---|---|---|---|---|
ALPHAECP | ✔ | ✔ | |||||||||
ANTIGONE | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ * | ||||
BARON | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ * | ||
BONMIN | ✔ | ✔ | |||||||||
CBC | ✔ | ✔ | |||||||||
CONOPT 3 | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
CONOPT 4 | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
CPLEX | ✔ | ✔ | ✔ | ✔ | |||||||
DECIS | ✔ | ✔ | |||||||||
DICOPT | ✔ | ✔ | |||||||||
GLOMIQO | ✔ | ✔ | ✔ * | ||||||||
GUROBI | ✔ | ✔ | ✔ | ✔ | |||||||
GUSS | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
IPOPT | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
KESTREL | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
KNITRO | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |||
LGO | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
LINDO | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ * | ||
LINDOGLOBAL | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ * | |||
LOCALSOLVER | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
MILES | ✔ | ||||||||||
MINOS | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
MOSEK | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
MSNLP | ✔ | ✔ | ✔ | ✔ | |||||||
NLPEC | ✔ | ✔ | |||||||||
ODHCPLEX | ✔ | ✔ | |||||||||
PATH | ✔ | ✔ | |||||||||
SBB | ✔ | ✔ | |||||||||
SCIP | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ * | |||
SHOT | ✔ | ✔ | |||||||||
SNOPT | ✔ | ✔ | ✔ | ✔ | ✔ | ||||||
SOPLEX | ✔ | ||||||||||
XA | ✔ | ✔ | |||||||||
XPRESS | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
- deterministic global solver
When choosing a solver, some judgement should be applied when considering the listed model type capabilities for the solver - the same capability 'check boxes' does not imply equality in capacity or suitability. For example, take a hypothetical solver WeOpt designed to solve MINLP models. Since the problem class MINLP includes NLP, MIP, and LP as subclasses, solver WeOpt could include these capabilities also. If WeOpt is also a good performer on NLP models, it would include that capability. But if it does not shine at all as a MIP or LP solver, we would choose not to include MIP and LP in the capability list for WeOpt. In such a case one can always solve using a more general model type (e.g. solve an LP model as NLP so WeOpt can be used), but WeOpt will not advertise itself as an LP solver. Since the WeOpt solver does not even recognize MCP or MPEC models, we don't include those capabilities.
There are two types of non-linear solvers: local and global. A local solver can find a local optimum but generally cannot comment on global optimality of the solution. A local optimum is a point where the objective value is better than its neighboring points but could be worse than a distant point. On the other hand, a global solver can find and prove that the obtained solution is a global optimum i.e., there is no feasible solution that would result in a better objective value. It is worth noting that a local solver can solve a model to global optimality in some special cases. In the table shown, the entries with * in the column Global indicate solvers that can solve a model to global optimality.
There are other differences in solvers that are difficult to quantify or cannot be captured by a capability table like the one shown. For example, for nonconvex NLP or QCP models, one solver could look only for first-order stationary points, another for local solutions, a third for local solutions using a scatter search or similar search heuristic, and a fourth could do a true global search for the global optimum. The relative merits (measured typically by speed alone) of solvers is the subject of considerable benchmarking activity and discussion.
The GAMS sales team can help answer questions you may have about solver capability. We also offer free evaluation licenses to help you decide what solvers are most suitable for your models.
Download Lindo For Mac
The solver/platform matrix shows which platforms each solver is supported on. In addition, where a vendor has discontinued solver support for a particular platform and we continue to ship the last available supported version, this version number is indicated as well.
Download Lindo For The Macbook
x86 64bit MS Windows | x86 64bit Linux | x86 64bit Mac OS X | |
---|---|---|---|
ALPHAECP 2.10 | ✔ | ✔ | ✔ |
ANTIGONE 1.1 | ✔ | ✔ | ✔ |
BARON | ✔ | ✔ | ✔ |
BONMIN 1.8 | ✔ | ✔ | ✔ |
CBC 2.10 | ✔ | ✔ | ✔ |
CONOPT 3 | ✔ | ✔ | ✔ |
CONOPT 4 | ✔ | ✔ | ✔ |
CPLEX 20.1 | ✔ | ✔ | ✔ |
DECIS | ✔ | ✔ | ✔ |
DICOPT 2 | ✔ | ✔ | ✔ |
GLOMIQO 2.3 | ✔ | ✔ | ✔ |
GUROBI 9.1 | ✔ | ✔ | ✔ |
GUSS | ✔ | ✔ | ✔ |
IPOPT 3.13 | ✔ | ✔ | ✔ |
KESTREL | ✔ | ✔ | ✔ |
KNITRO | ✔ | ✔ | ✔ |
LGO | ✔ | ✔ | ✔ |
LINDO 12.0 | ✔ | ✔ | ✔ |
LINDOGLOBAL 12.0 | ✔ | ✔ | ✔ |
LOCALSOLVER 9.5 | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ |
MINOS | ✔ | ✔ | ✔ |
MOSEK 9 | ✔ | ✔ | ✔ |
MSNLP | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ |
ODHCPLEX 5 | ✔ | ✔ | |
PATH | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ |
SCIP 7.0 | ✔ | ✔ | ✔ |
SHOT 1.0 | ✔ | ✔ | ✔ |
SNOPT | ✔ | ✔ | ✔ |
SOPLEX 5.0 | ✔ | ✔ | ✔ |
XA | ✔ | ✔ | |
XPRESS 36.01 | ✔ | ✔ | ✔ |