(!******************************************
Mosel Examples
==============
File solarraypkg.mos
````````````````````
Example package providing the procedure
solarray(array of mpvar, array of real)
for getting solutions into an array.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, May 2005
*******************************************!)
package solarraypkg
! **** Integer indices (including ranges) ****
public procedure solarray(x:array(R:set of integer) of mpvar,
s:array(set of integer) of real)
forall(i in R) s(i):=getsol(x(i))
end-procedure
public procedure solarray(x:array(R1:set of integer,
R2:set of integer) of mpvar,
s:array(set of integer, set of integer) of real)
forall(i in R1, j in R2) s(i,j):=getsol(x(i,j))
end-procedure
public procedure solarray(x:array(R1:set of integer,
R2:set of integer,
R3:set of integer) of mpvar,
s:array(set of integer,
set of integer,
set of integer) of real)
forall(i in R1, j in R2, k in R3) s(i,j,k):=getsol(x(i,j,k))
end-procedure
public procedure solarray(x:array(R1:set of integer,
R2:set of integer,
R3:set of integer,
R4:set of integer) of mpvar,
s:array(set of integer, set of integer,
set of integer, set of integer) of real)
forall(i in R1, j in R2, k in R3, l in R4) s(i,j,k,l):=getsol(x(i,j,k,l))
end-procedure
! ****String indices ****
public procedure solarray(x:array(R:set of string) of mpvar,
s:array(set of string) of real)
forall(i in R) s(i):=getsol(x(i))
end-procedure
public procedure solarray(x:array(R1:set of string,
R2:set of string) of mpvar,
s:array(set of string, set of string) of real)
forall(i in R1, j in R2) s(i,j):=getsol(x(i,j))
end-procedure
public procedure solarray(x:array(R1:set of string,
R2:set of string,
R3:set of string) of mpvar,
s:array(set of string,
set of string,
set of string) of real)
forall(i in R1, j in R2, k in R3) s(i,j,k):=getsol(x(i,j,k))
end-procedure
public procedure solarray(x:array(R1:set of string,
R2:set of string,
R3:set of string,
R4:set of string) of mpvar,
s:array(set of string, set of string,
set of string, set of string) of real)
forall(i in R1, j in R2, k in R3, l in R4) s(i,j,k,l):=getsol(x(i,j,k,l))
end-procedure
end-package
|
(!******************************************************
Mosel NI Examples
=================
File solarr_test.mos
````````````````````
Using module solarray
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2002
*******************************************************!)
model "Test solarray module"
uses "solarraypkg", "mmxprs"
declarations
R1=1..2
R2={6,7,9}
R3={5,-1}
x: array(R1,R2,R3) of mpvar
sol: array(R1,R2,R3) of real
end-declarations
! Define and solve a small problem
sum(i in R1, j in R2, k in R3) (i+j+2*k) * x(i,j,k) <= 20
forall(i in R1, j in R2, k in R3) x(i,j,k)<=1
maximize(sum(i in R1, j in R2, k in R3) (i+2*j+k) * x(i,j,k))
! Get the solution array
solarray(x,sol)
! Print the solution
forall(i in R1, j in R2, k in R3)
writeln(" (", i, ",", j, ",", k, ") ", sol(i,j,k), " ", getsol(x(i,j,k)))
writeln(sol)
end-model
|
(!******************************************************
Mosel Example Problems
======================
file arc_test.mos
`````````````````
Using the package 'arcpkg'.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Jan. 2007, rev. June 2018
*******************************************************!)
model "Arcs"
uses "arcpkg"
declarations
NODES: set of string ! Set of nodes
ARC: array(ARCSET:range) of arc ! Arcs
end-declarations
initializations from 'arcs.dat'
ARC
end-initializations
! Calculate the set of nodes
NODES:=union(a in ARCSET) {ARC(a).Source, ARC(a).Sink}
writeln(NODES)
writeln("Average arc cost: ", sum(a in ARCSET) ARC(a).Cost / getsize(ARCSET) )
writeln("Neighbors A and F: ", is_neighbor("A","F",ARC))
writeln("Neighbors A and B: ", is_neighbor("A","B",ARC))
end-model
|