| |||||||||||||||||||

Basic LP tasks: problem statement and solving; solution analysis Description The first model (file chess.mos) is a small, introductory
problem to modeling with Mosel that shows the basic
features of the Mosel language:
- formulation of a simple LP/IP problem
- solving an optimization problem
- solution printout
- formulating and solving a simple LP problem
- defining a set of variables and an array of descriptions for the variables (to be used in the output printing)
- Solve the MIP problem.
- Fix all discrete variables to their solution values.
- Re-solve the remaining LP problem.
- Retrieve the solution information.
Further explanation of this example:
'Mosel User Guide',
Chapter 1 Getting started with Mosel and Section 8.1 Initializing sets, or the book 'Applications of optimization with Xpress-MP', Section 1.3 Solving the chess set problem.
Source Files
chessfixg.mos (!****************************************************** Mosel Example Problems ====================== file chessfixg.mos `````````````````` Display solution information for a MIP problem. * Solve the MIP problem * Fix all discrete variables to their solution values * Re-solve the remaining LP problem * Display solution information (including dual and reduced cost values) (c) 2008 Fair Isaac Corporation author: S. Heipcke, 2007, rev. May 2019 *******************************************************!) model "Chess (fixglobal)" uses "mmxprs" public declarations R = 1..2 ! Index range DUR, WOOD, PROFIT: array(R) of real ! Coefficients x: array(R) of mpvar ! Array of variables ifusesoft: mpvar ! Whether soft wood is used MTime, Wood: linctr ! Constraints end-declarations DUR :: [3, 2] ! Initialize data arrays WOOD :: [1, 3] PROFIT:: [5, 20] Wood:= sum(i in R) WOOD(i)*x(i) <= 200 ! Limit on raw material ! Add. capacity if using soft wood MTime:= sum(i in R) DUR(i)*x(i) <= 160 + 40*ifusesoft ifusesoft is_binary Profit:= sum(i in R) PROFIT(i)*x(i) maximize(Profit) ! Solve the full MIP problem writeln("Solution: ", getobjval) fixglobal ! Fix discrete variables maximize(XPRS_LIN, Profit) ! Solve reduced problem as LP setparam("realfmt","%.4g") ! Set real number display format writeln("Ctr: \tDual \t Slack + Activity = RHS") CtrSet:= {MTime, Wood} forall(c in CtrSet) writeln(" ", getname(c), ":\t", getdual(c), "\t ", getslack(c), "\t", getact(c), "\t", -1*getcoeff(c)) writeln("Var: Solution\t RCost") forall(i in R) writeln(" x(", i, "): ", getsol(x(i)), "\t ", getrcost(x(i))) end-model | |||||||||||||||||||

Copyright 2017 Fair Isaac Corporation. |