Skip to main content

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_solver_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

Metadata

Release files for scop-solver-trial 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for scop-solver-trial 0.1.1
File Interpreter ABI Platform
scop_solver_trial-0.1.1-py3-none-any.whl Python 3 none any Details

Release files / scop_solver_trial-0.1.1-py3-none-any.whl

Download URL scop_solver_trial-0.1.1-py3-none-any.whl
Size 325.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2bb93c748afff19e5ce365f64910bd20f60afdbfb1b0926e7679b8109af815f
BLAKE2b-256 checksum
How to use checksums
1d3b34f4f76f18f268248699d1c5ddc00ed5dda8c0495a37cd7f559f53a4f0b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page