# Getting Fluent in OPTANO.Modeling

Let's leave the `"Hello World"`

examples behind and *get started*!

## Typical Issues

When trying to build your own (more complex) models, you might find yourself struggling with some common issues:

- Bad Image Exception: Set your project to the right image (x86 / x64)
- Argument Exception: Choosing the right name for your constraints
- Out of Memory Exception: Allow
*"large"*objects on the heap - MIPCL throws System.TypeInitializationException: Install/provide DLLs from Visual C++ Redistributable Packages
- Gurobi.GRBException: 'Name too long': Limit the length of your variable, constraint and objective names

## Advanced Models

Various (extensive) examples for creating advanced MIPs and IPs can be found here.

## Modeling

- Read data from files or databases
- Learn how to work with Expressions:
- Operator or Expression?! Fundamentals on how to build Expressions, e.g. for Constraints.
- Expression.Sum: Add variables the right way.
- Non-Linear Constructs: Use advanced operators, such as Min, Floor, ... whilst using
-Solvers*LP*

- Formulate Constraints: Restrict your solution space.
- Logical Relations: Add constraint groups, and more.

- Multi-Objective Optimization: Use more than one objective for an optimization problem.

## Improving Models

- Branching: Use Branching Priorities and Directions to support branch and bound.

## Running the Model

- Configuration: How to change default settings for your Models.
- Variable Collections: Using Variable Collections.
- Get solution values manually: Some statistics that help model tuning.
- Understanding Model- and Solution-Status: Make sense of the different combinations of Status and ModelStatus.
- Creating a deep clone of a Model

## Analyzing the Model

- Conflicting Sets: Find conflicts in your model.
- Remove reduced Variables: Find obsolete variables.
- Short Names: Details about short names, and why to use them.
- Variable Statistics: Some statistics that help model tuning.
- Visualize Data: Visualize results in plots.

## Dirty Tricks

- (Ab-)using the ModelScope: Using the ModelScope in non-standard ways.