Packages
|
|
|
| Type: | Programming |
| Rating: | 3 (intermediate) |
| Description: | Packages are libraries written in the Mosel language that extend the language with
|
| File(s): | myconstants.mos, myconst_test.mos, solarraypkg.mos, solarr_test.mos, arcpkg.mos, arc_test.mos |
| Data file(s): | arcs.dat |
|
|
|
| myconstants.mos |
(!******************************************
Mosel Examples
==============
File myconstants.mos
````````````````````
Example package defining
constants
of different types.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2005
*******************************************!)
package myconstants
public declarations
MYCST_BIGM = 10000 ! A large integer value
MYCST_TOL = 0.00001 ! A tolerance value
MYCST_LINE = ! String constant
"----------------------------------------------------------------"
MYCST_FLAG = true ! Constant with value true
MYCST_NOFLAG = false ! Constant with value false
end-declarations
end-package
|
| myconst_test.mos |
(!******************************************************
Mosel NI Examples
=================
File myconst_test.mos
`````````````````````
Using module myconstants
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2002
*******************************************************!)
model "Test myconstants module"
uses "myconstants"
writeln(MYCST_LINE)
writeln("BigM value: ", MYCST_BIGM, ", tolerance value: ", MYCST_TOL)
writeln("Boolean flags: ", MYCST_FLAG, " ", MYCST_NOFLAG)
writeln(MYCST_LINE)
end-model
|
| solarraypkg.mos |
(!******************************************
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
|
| solarr_test.mos |
(!******************************************************
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
|
| arcpkg.mos |
(!******************************************************
Mosel User Guide Example Problems
=================================
file arc.mos
````````````
Definition of the type 'arc'.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Jan. 2007, rev. June 2018
*******************************************************!)
package arcpkg
public declarations
arc = public record ! Arcs:
Source,Sink: string ! Source and sink of arc
Cost: real ! Cost coefficient
end-record
end-declarations
(! Alternatively:
declarations
public arc = record ! Arcs:
public Source,Sink: string ! Source and sink of arc
public Cost: real ! Cost coefficient
end-record
end-declarations
!)
public function is_neighbor(n1,n2: string, A: array(Arcs:set of integer) of arc): boolean
returned:=or(a in Arcs ) (( A(a).Source=n1 and A(a).Sink=n2) or
( A(a).Source=n2 and A(a).Sink=n1))
end-function
end-package
|
| arc_test.mos |
(!******************************************************
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
|
© 2001-2019 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.
