# optSolve

Welcome to the optSolv, an amateur tool for optimizing linear and linear integer programs. This tool supports the following:

*Solving LPs using the Simplex method via dual initialization.**Solving ILPs using the cutting plane method for relaxed ILP.*

The code has one important class Dictionary.

# Solver Procedure:

To solve a linear program, simply construct a new object of class Dictionary whose
constructor argument is the **file name for the dictionary** representing the linear program, then invoke the method

a. dict.solve() if its a real linear program.

b. dict.solveILP() if its an integer linear program.

The file format is shown below.

The solver would return **FEASIBLE**, **UNBOUNDED**, or **the optimal value obtained**.

For the format of the input dictionary file, please, refer to dict_format0.png and dict_format1.png, shown below:

# Pitfalls:

- Due to floating error, the integer solver is not stable for some problems, so it might not converge , be aware !
- For the integer solver, the input dictionary is assumed to be scaled, i.e all A,b,c are integers.

# Thanks

To **Prof. Siram and Prof. Runben**, and their awesome linear and integer programming class.

Have fun !

Abdullah Al-Dujaili