Skip to main content

Scop trial version.

Project description

SCOP Trial

SCOP (SOlver for Constraint Programming) trial

How to Install to Jupyter Notebook (Lab) and/or Google Colaboratory

pip install scop-solver-trial

How to use

See https://mikiokubo.github.io/scoptrial/ and https://www.logopt.com/scop2/

Here is an example.

from scop_trial import Alldiff, Linear, Model

"""
Example 1 (Assignment Problem):
Three jobs (0,1,2) must be assigned to three workers (A,B,C)
so that each job is assigned to exactly one worker.
The cost matrix is represented by the list of lists
Cost=[[15, 20, 30],
      [7, 15, 12],
      [25,10,13]],
where rows of the matrix are workers, and columns are jobs.
Find the minimum cost assignment of workers to jobs.
"""

workers = ["A", "B", "C"]
Jobs = [0, 1, 2]
Cost = {
    ("A", 0): 15,
    ("A", 1): 20,
    ("A", 2): 30,
    ("B", 0): 7,
    ("B", 1): 15,
    ("B", 2): 12,
    ("C", 0): 25,
    ("C", 1): 10,
    ("C", 2): 13,
}

m = Model()
x = {}
for i in workers:
    x[i] = m.addVariable(name=i, domain=Jobs)

x_list = []
for i in x:
    x_list.append(x[i])

con1 = Alldiff("AD", x_list, weight="inf")

con2 = Linear("linear_constraint", weight=1, rhs=0, direction="<=")
for i in workers:
    for j in Jobs:
        con2.addTerms(Cost[i, j], x[i], j)

m.addConstraint(con1)
m.addConstraint(con2)

print(m)

m.Params.TimeLimit = 1
sol, violated = m.optimize()

if m.Status == 0:
    print("solution")
    for x in sol:
        print(x, sol[x])
    print("violated constraint(s)")
    for v in violated:
        print(v, violated[v])
Model: 
number of variables = 3  
number of constraints= 2  
variable A:['0', '1', '2'] = None 
variable B:['0', '1', '2'] = None 
variable C:['0', '1', '2'] = None 
AD: weight= inf type=alldiff  A B C ;  :LHS =0  
linear_constraint: weight= 1 type=linear 15(A,0) 20(A,1) 30(A,2) 7(B,0) 15(B,1) 12(B,2) 25(C,0) 10(C,1) 13(C,2) <=0 :LHS =0 

 ================ Now solving the problem ================ 

solution
A 0
B 2
C 1
violated constraint(s)
linear_constraint 37

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scop_solver_trial-0.1.0-py3-none-any.whl (325.0 kB view details)

Uploaded Python 3

File details

Details for the file scop_solver_trial-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scop_solver_trial-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4058e55c29a94bc128d2eb8f9314be916eba20b56b7503931b739675bc894bd7
MD5 de8535f4ca61573423c9dd056d3b767a
BLAKE2b-256 fa80920f1a59ed0bea4da582c9439a2f4a3f842ce9b03220037a4851971424fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page