| |||||||||||||||||||
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:
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
chessfixgcb.mos (!****************************************************** Mosel Example Problems ====================== file chessfixgcb.mos ```````````````````` Display solution information for a MIP problem. (c) 2008 Fair Isaac Corporation author: S. Heipcke, Dec. 2007, rev. Sep. 2022 *******************************************************!) model "Chess (fixmipentities)" uses "mmxprs" forward procedure printsol 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 CtrSet: set of linctr ! Set of constraints 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 CtrSet:= {MTime, Wood} Profit:= sum(i in R) PROFIT(i)*x(i) ! Set the integer solution callback setcallback(XPRS_CB_INTSOL, ->printsol) ! setparam("XPRS_verbose", true) setparam("realfmt","%.4g") ! Set real number display format maximize(Profit) writeln("\nAfter MIP: Solution: ", getobjval) fixmipentities ! Fix discrete variables maximize(XPRS_LIN, Profit) ! Solve reduced problems as LP writeln("\nAfter fixmipentities: Solution: ", getobjval) writeln("Ctr: \tDual \t Slack + Activity = RHS") 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))) !****************************************************************** ! Definition of the integer solution callback procedure printsol writeln("CB: Solution: ", getsol(Profit)) writeln("Ctr: \tDual \t Slack + Activity = RHS") 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-procedure end-model | |||||||||||||||||||
© Copyright 2024 Fair Isaac Corporation. |