| |||||||||||||||||||||||||
Column generation for a cutting stock problem Description
Further explanation of this example: paper.mos, papers.mos, papersn.mos: 'Mosel User Guide', Section 11.2 Column generation, and the Xpress Whitepaper 'Embedding Optimization Algorithms', Section 'Column generation for cutting-stock' (also discusses a generalization to bin-packing problems); for the multiple model versions paperp.mos, paperms.mos see the Xpress Whitepaper 'Multiple models and parallel solving with Mosel', Section 'Column generation: solving different models in sequence'.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
knapsackr.mos (!******************************************************* Mosel User Guide Examples ========================= file knapsackr.mos `````````````````` Knapsack (sub)model of the for a paper cutting example, reading data from shared memory. Communication of data from/to parent model using 'shmem' IO driver with 'raw'. *** Not intended to be run standalone - run from paperpr.mos *** Solve the integer knapsack problem z = max{Cx : Ax<=B, x<=D, x in Z^N} (c) 2008 Fair Isaac Corporation author: S. Heipcke, 2004, rev. July 2010 *******************************************************!) model "Knapsack" uses "mmxprs" parameters NWIDTHS=5 ! Number of different widths end-parameters declarations WIDTHS = 1..NWIDTHS ! Range of widths A,C: array(WIDTHS) of real ! Constraint + obj. coefficients B: real ! RHS value of knapsack constraint D: array(WIDTHS) of integer ! Variables bounds (demand quantities) KnapCtr, KnapObj: linctr ! Knapsack constraint+objective x: array(WIDTHS) of mpvar ! Knapsack variables xbest: array(WIDTHS) of integer ! Solution values end-declarations initializations from "raw:noindex" A as "shmem:A" B as "shmem:B" C as "shmem:C" D as "shmem:D" end-initializations ! Define the knapsack problem KnapCtr:= sum(j in WIDTHS) A(j)*x(j) <= B KnapObj:= sum(j in WIDTHS) C(j)*x(j) ! Integrality condition and bounds forall(j in WIDTHS) x(j) is_integer forall(j in WIDTHS) x(j) <= D(j) ! These bounds can be omitted maximize(KnapObj) z:=getobjval forall(j in WIDTHS) xbest(j):=round(getsol(x(j))) initializations to "raw:" xbest as "shmem:xbest" z as "shmem:zbest" end-initializations end-model | |||||||||||||||||||||||||
© Copyright 2024 Fair Isaac Corporation. |