Mosel
FICO Xpress Mosel Open Source Repository
Install / Use
/learn @fico-xpress/MoselREADME
FICO Xpress Mosel Open Source Repository
FICO Xpress Mosel is an analytic orchestration, algebraic modeling, and programming language.
Mosel defines a public C interface (Mosel Native Interface) that allows developers to extend the core functionality of the Mosel language according to their needs, such as the definition of data connectors, solver interfaces, or access to system functionality on the Mosel language level.
A Mosel program (or model) is a text file that takes the extension .mos, it is compiled into a platform-independent .bim (BInary Model) file that is then loaded by Mosel to be run with some data instance(s).
Mosel source files can be edited with any text editor of your choice, or you can choose to work with the development environment FICO Xpress Workbench that forms part of the Xpress distribution.
Syntax highlighting definitions for Mosel have been created for various editors, including VI/gvim, JetBrains IntelliJ Platform, Notepad++, Pygment, UltraEdit, Rouge, VScode.
See the Mosel language cheatsheet (in A4 version or 2-page version) for an overview of basic language features and use of the Mosel command line.
This repository contains various extension libraries for the Mosel language, either in the form of Mosel packages (libraries implemented in the Mosel language distributed as platform independent BIM files) or Mosel modules (libraries implemented in C following the conventions of the Mosel Native Interface, also called DSO-dynamic shared objects).
Each subdirectory contains the source of one library, along with building instructions and some test(s).
Furthermore, the moseltest program provides a general testing framework for source Mosel files, C programs or Java programs.
Contents
Modules and packages
Component | Type | Description | Notes ----------|------|-------------|---------------------- hadoop | DSO | An I/O driver for accessing HDFS files | jobqueue | BIM | Managing the remote execution of submodels via mmjobs functionality | math | DSO | Additional Maths functions for the Mosel language | Compiled version is included in the Mosel distribution minisat | DSO | Example implementation of a simple interface to a SAT solver | Requires SAT solver libraries myqxprs | DSO | Example of using the library interface of the module mmnl that extends the Mosel NI matrix interface with handling of nonlinearities for connecting an NLP solver (quadratic solver of Xpress Optimizer) | Requires Xpress Optimizer libraries myxprs | DSO | Example of using the Mosel NI matrix handling interface for connecting an LP/MIP solver (Xpress Optimizer) | Requires Xpress Optimizer libraries random | DSO | Alternative random number generators | Compiled version is included in the Mosel distribution
Mosel testing system
moseltest General framework for testing Mosel using source Mosel files, C programs or Java programs
Mosel documentation system
moseldoc General framework for generating documentation of Mosel packages
Documentation
- Mosel documentation:
- Mosel model and program examples: Examples database
Installation
If you do not have any recent installation of FICO Xpress, download the free Xpress Community Edition from Xpress Community Edition download, located on FICO's website. Please note that this download is solely governed under FICO's Xpress Community License, Xpress Shrinkwrap License Agreement.
Requirements
Mosel modules are C programs, you need a C compiler to generate new DSO.
Contributing
Editing a component
- Clone the Mosel Open Source repository.
- Edit and test locally.
- Submit a pull request.
Adding a new component
- Clone the Mosel Open Source repository.
- Create a new subdirectory locally complete with makefiles, build instructions and tests.
- Submit a pull request.
Legal
See source code files for copyright notices.
License
The components in this repository are licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
