Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.5 kB · 62 lines
at develop
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263% RUNS ON mzn20_fd% RUNS ON mzn-fzn_fd% RUNS ON mzn20_fd_linear% RUNS ON mzn20_mip%------------------------------------------------------------------------------%% cutstock.mzn% Jakob Puchinger <jakobp@cs.mu.oz.au>% December 2007% vim: ft=zinc ts=4 sw=4 et tw=0%% The cutting stock problem: Kantorovitch formulation for colgen.%%------------------------------------------------------------------------------%int: L; % stock lengthint: K; % upper bound on number of stock piecesint: N; % number of stock piecesarray[1..N] of int: i_length;array[1..N] of int: i_demand;array[1..K] of var 0..1: pieces;array[1..K, 1..N] of var int: items;constraint forall(k in 1..K, i in 1..N)( items[k,i] >=0 );solve ::int_search(array1d(1..K*N,items)++pieces,input_order,indomain_min,complete) minimize sum([ pieces[k] | k in 1..K]);constraint forall(i in 1..N) ( sum( [ items[k, i] | k in 1..K] ) >= i_demand[i] );constraint forall( k in 1..K ) ( sum(i in 1..N)( items[k,i] * i_length[i] ) <= pieces[k] * L ); % required for showing the objective functionvar int: obj;constraint obj = sum([ pieces[k] | k in 1..K]);output [ "Cost = ", show( obj ), "\n" ] ++ [ "Pieces = \n\t" ] ++ [show(pieces)] ++ [ "\n" ] ++ [ "Items = \n\t" ] ++[ show(items[k, i]) ++ if k = K then "\n\t" else " " endif | i in 1..N, k in 1..K ] ++[ "\n" ];% data:N = 3;K = sum(i_demand);L = 10;i_length = [7, 5, 3];i_demand = [2, 2, 4];