110 lines
8.4 KiB
Python
Executable File
110 lines
8.4 KiB
Python
Executable File
# %%
|
|
PROJECT_PATH = '/home/md/Work/ligalytics/leagues_stable/'
|
|
import os, sys
|
|
sys.path.insert(0, PROJECT_PATH)
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "leagues.settings")
|
|
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
|
|
|
|
from leagues import settings
|
|
# settings.DATABASES['default']['NAME'] = PROJECT_PATH+'/db.sqlite3'
|
|
settings.DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
|
|
settings.DATABASES['default']['HOST'] = '0.0.0.0'
|
|
settings.DATABASES['default']['PORT'] = '5432'
|
|
settings.DATABASES['default']['USER'] = 'postgres'
|
|
settings.DATABASES['default']['PASSWORD'] = 'secret123'
|
|
settings.DATABASES['default']['NAME'] = 'mypgsqldb'
|
|
settings.DATABASES['default']['ATOMIC_REQUESTS'] = False
|
|
settings.DATABASES['default']['AUTOCOMMIT'] = True
|
|
settings.DATABASES['default']['CONN_MAX_AGE'] = 0
|
|
settings.DATABASES['default']['CONN_HEALTH_CHECKS'] = False
|
|
settings.DATABASES['default']['OPTIONS'] = {}
|
|
|
|
os.environ["XPRESSDIR"] = "/opt/xpressmp"
|
|
os.environ["XPRESS"] = "/opt/xpressmp/bin"
|
|
os.environ["LD_LIBRARY_PATH"] = os.environ["XPRESSDIR"] + "/lib"
|
|
os.environ["DYLD_LIBRARY_PATH"] = os.environ["XPRESSDIR"] + "/lib"
|
|
os.environ["SHLIB_PATH"] = os.environ["XPRESSDIR"] + "/lib"
|
|
os.environ["LIBPATH"] = os.environ["XPRESSDIR"] + "/lib"
|
|
os.environ["PYTHONPATH"] = os.environ["XPRESSDIR"] + "/lib"
|
|
os.environ["CLASSPATH"] = os.environ["XPRESSDIR"] + "/lib/xprs.jar"
|
|
os.environ["CLASSPATH"] = os.environ["XPRESSDIR"] + "/lib/xprb.jar" + os.pathsep + os.environ["CLASSPATH"]
|
|
os.environ["CLASSPATH"] = os.environ["XPRESSDIR"] + "/lib/xprm.jar" + os.pathsep + os.environ["CLASSPATH"]
|
|
os.environ["PATH"] = os.environ["XPRESSDIR"] + "/bin" + os.pathsep + os.environ["PATH"]
|
|
|
|
|
|
import django
|
|
django.setup()
|
|
|
|
from scheduler.models import *
|
|
import pulp
|
|
from pulp import lpSum, value, XPRESS, GUROBI, PULP_CBC_CMD
|
|
from django.db.models import Q
|
|
from django.template.loader import render_to_string
|
|
|
|
from qualifiers.models import *
|
|
from common.models import GlobalTeam, GlobalCountry
|
|
from scheduler.models import Season, Scenario, Team, DayObj, CountryClash, Country, Day
|
|
|
|
from qualifiers.draws import groupTeams, optimize_inversions4
|
|
from scheduler.solver.tasks.optimize import optimize
|
|
from scheduler.solver.tasks.optimize_submodels import ueluecl24_basicmodell_v2
|
|
from scheduler.solver.optimizer import optimize_2phases
|
|
|
|
import random
|
|
import time
|
|
import json
|
|
import csv
|
|
import networkx as nx
|
|
import matplotlib.pyplot as plt
|
|
from datetime import timedelta
|
|
|
|
from django.contrib.sessions.models import Session
|
|
|
|
|
|
# scenario = Scenario.objects.get(id=9534)
|
|
# scenario = Scenario.objects.get(id=9379)
|
|
|
|
# scenario = Scenario.objects.get(id=9361)
|
|
scenario = Scenario.objects.get(id=9579)
|
|
season = scenario.season
|
|
s2 = scenario.id
|
|
user_name = 'md'
|
|
user_is_staff = True
|
|
runMode = 'Improve'
|
|
localsearch_time = 30
|
|
RUN_ENV = 'local'
|
|
SOLVER = 'xpress'
|
|
|
|
|
|
nRounds = season.nRounds
|
|
rounds=range(1,nRounds+1)
|
|
dayObjects = Day.objects.filter(season=season).values()
|
|
getDays = { r : [] for r in rounds}
|
|
for d in dayObjects:
|
|
if d['round']>0 :
|
|
getDays[d['round']].append(d['id'])
|
|
|
|
|
|
|
|
sol = optimize(task=None, s2=s2, user_name=user_name, user_is_staff=user_is_staff,
|
|
runMode=runMode, localsearch_time=localsearch_time, RUN_ENV=RUN_ENV, solver=SOLVER)
|
|
|
|
# sol = optimize_2phases(s2, user_name, user_is_staff, runMode=runMode, localsearch_time=localsearch_time, RUN_ENV=RUN_ENV, SOLVER=SOLVER)
|
|
# partial_solution = []
|
|
# res_objective, res_games = ueluecl24_basicmodell_v2(SOLVER, s2, partial_solution)
|
|
|
|
# print(res_games)
|
|
|
|
# res_games = [(42255, 42321, 1), (42251, 42252, 1), (42244, 42317, 1), (42291, 42288, 1), (42290, 42310, 1), (42289, 42327, 1), (42277, 42282, 1), (42326, 42312, 1), (42325, 42314, 1), (42324, 42280, 1), (42319, 42320, 1), (42316, 42322, 1), (42315, 42273, 1), (42311, 42296, 1), (42313, 42305, 1), (42318, 42299, 1), (42323, 42329, 1), (42328, 42304, 1), (42330, 42336, 2), (42333, 42343, 2), (42250, 42293, 2), (42273, 42290, 2), (42271, 42300, 2), (42253, 42266, 2), (42252, 42311, 2), (42305, 42326, 2), (42304, 42319, 2), (42299, 42289, 2), (42297, 42332, 2), (42296, 42323, 2), (42288, 42277, 2), (42282, 42313, 2), (42280, 42315, 2), (42279, 42348, 2), (42278, 42286, 2), (42346, 42345, 2), (42342, 42254, 2), (42340, 42261, 2), (42339, 42247, 2), (42338, 42331, 2), (42335, 42344, 2), (42329, 42324, 2), (42327, 42328, 2), (42322, 42318, 2), (42321, 42251, 2), (42320, 42316, 2), (42317, 42291, 2), (42314, 42255, 2), (42312, 42244, 2), (42310, 42325, 2), (42307, 42337, 2), (42347, 42349, 2), (42350, 42334, 2), (42267, 42341, 2), (42293, 42307, 3), (42273, 42304, 3), (42266, 42342, 3), (42261, 42267, 3), (42254, 42338, 3), (42247, 42350, 3), (42305, 42312, 3), (42300, 42297, 3), (42299, 42244, 3), (42296, 42315, 3), (42291, 42280, 3), (42290, 42325, 3), (42286, 42333, 3), (42282, 42318, 3), (42277, 42313, 3), (42349, 42339, 3), (42345, 42340, 3), (42344, 42278, 3), (42341, 42346, 3), (42336, 42335, 3), (42348, 42330, 3), (42334, 42253, 3), (42331, 42250, 3), (42329, 42252, 3), (42327, 42317, 3), (42324, 42326, 3), (42322, 42251, 3), (42321, 42314, 3), (42320, 42288, 3), (42316, 42255, 3), (42311, 42319, 3), (42310, 42289, 3), (42328, 42323, 3), (42332, 42271, 3), (42337, 42279, 3), (42343, 42347, 3), (42255, 42311, 4), (42250, 42350, 4), (42271, 42293, 4), (42266, 42333, 4), (42254, 42348, 4), (42253, 42339, 4), (42252, 42305, 4), (42251, 42310, 4), (42244, 42282, 4), (42304, 42290, 4), (42300, 42349, 4), (42289, 42321, 4), (42286, 42340, 4), (42280, 42329, 4), (42277, 42322, 4), (42346, 42336, 4), (42341, 42337, 4), (42342, 42344, 4), (42338, 42297, 4), (42335, 42261, 4), (42334, 42345, 4), (42331, 42330, 4), (42326, 42316, 4), (42325, 42291, 4), (42319, 42273, 4), (42317, 42328, 4), (42315, 42299, 4), (42314, 42327, 4), (42312, 42324, 4), (42313, 42320, 4), (42318, 42296, 4), (42323, 42288, 4), (42332, 42247, 4), (42343, 42279, 4), (42347, 42307, 4), (42267, 42278, 4), (42330, 42254, 5), (42333, 42334, 5), (42293, 42347, 5), (42273, 42312, 5), (42261, 42332, 5), (42247, 42300, 5), (42244, 42315, 5), (42304, 42316, 5), (42299, 42322, 5), (42297, 42250, 5), (42289, 42305, 5), (42288, 42325, 5), (42282, 42327, 5), (42280, 42251, 5), (42279, 42267, 5), (42278, 42335, 5), (42349, 42271, 5), (42345, 42338, 5), (42344, 42253, 5), (42340, 42341, 5), (42339, 42343, 5), (42336, 42342, 5), (42348, 42266, 5), (42326, 42290, 5), (42324, 42255, 5), (42321, 42252, 5), (42320, 42329, 5), (42319, 42310, 5), (42317, 42311, 5), (42307, 42331, 5), (42313, 42314, 5), (42318, 42291, 5), (42323, 42277, 5), (42328, 42296, 5), (42337, 42286, 5), (42350, 42346, 5), (42330, 42342, 6), (42255, 42289, 6), (42250, 42300, 6), (42261, 42346, 6), (42252, 42319, 6), (42251, 42323, 6), (42305, 42244, 6), (42297, 42271, 6), (42296, 42280, 6), (42291, 42324, 6), (42290, 42282, 6), (42288, 42304, 6), (42286, 42293, 6), (42279, 42334, 6), (42278, 42347, 6), (42349, 42332, 6), (42341, 42254, 6), (42340, 42348, 6), (42339, 42338, 6), (42336, 42333, 6), (42335, 42253, 6), (42331, 42266, 6), (42329, 42273, 6), (42327, 42321, 6), (42325, 42320, 6), (42322, 42313, 6), (42316, 42318, 6), (42315, 42328, 6), (42314, 42317, 6), (42312, 42277, 6), (42311, 42326, 6), (42310, 42299, 6), (42307, 42344, 6), (42343, 42247, 6), (42350, 42337, 6), (42267, 42345, 6), (42333, 42339, 7), (42293, 42336, 7), (42271, 42343, 7), (42266, 42297, 7), (42254, 42261, 7), (42253, 42330, 7), (42247, 42279, 7), (42300, 42307, 7), (42346, 42286, 7), (42345, 42331, 7), (42344, 42350, 7), (42342, 42250, 7), (42338, 42349, 7), (42348, 42267, 7), (42334, 42278, 7), (42332, 42341, 7), (42337, 42340, 7), (42347, 42335, 7), (42255, 42325, 7), (42273, 42318, 7), (42305, 42304, 7), (42296, 42288, 7), (42280, 42320, 7), (42277, 42310, 7), (42326, 42319, 7), (42324, 42244, 7), (42322, 42327, 7), (42321, 42290, 7), (42317, 42282, 7), (42315, 42291, 7), (42314, 42252, 7), (42312, 42316, 7), (42311, 42251, 7), (42313, 42329, 7), (42323, 42289, 7), (42328, 42299, 7), (42252, 42328, 8), (42251, 42273, 8), (42244, 42323, 8), (42304, 42313, 8), (42299, 42255, 8), (42291, 42314, 8), (42290, 42311, 8), (42289, 42277, 8), (42288, 42321, 8), (42282, 42280, 8), (42329, 42305, 8), (42327, 42315, 8), (42325, 42322, 8), (42320, 42312, 8), (42319, 42324, 8), (42316, 42317, 8), (42310, 42296, 8), (42318, 42326, 8)]
|
|
|
|
|
|
# partial_solution = []
|
|
# for (t1,t2,r) in res_games:
|
|
# partial_solution.append({"home": [t1], "away": [t2], "days": getDays[r], "time": None , "changeable": False })
|
|
|
|
|
|
|
|
# res_objective, res_games = ueluecl24_basicmodell_v2(SOLVER, s2, partial_solution)
|
|
|
|
|