feat: conversion de tous les .opb en .lp pour glpk
This commit is contained in:
parent
a5fdac8a7a
commit
0c68cbcfaa
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
*.lp
|
||||
*.stdout
|
||||
*.sol
|
12
distrib.py
12
distrib.py
|
@ -15,3 +15,15 @@ while len(result) > 0:
|
|||
cmd = f"""ssh lfainsin@{victime} -o "ConnectTimeout 3" -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" "cd 2A/RO/tp2/ && tmux new-session -d 'julia test.jl {knap}.opb > {knap}.stdout'" """
|
||||
print(cmd)
|
||||
os.system(cmd)
|
||||
|
||||
i = 0
|
||||
while len(result) > 0:
|
||||
knap = result.pop()[:-4]
|
||||
victime = machines[i % len(machines)]
|
||||
i+=1
|
||||
cmd = f"""ssh lfainsin@{victime} -o "ConnectTimeout 3" -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" "cd 2A/RO/tp2/ && tmux new-session -d 'glpsol --lp {knap}.lp -o {knap}.sol'" """
|
||||
print(cmd)
|
||||
os.system(cmd)
|
||||
|
||||
# for machine in machines:
|
||||
# os.system(f"""ssh lfainsin@{machine} -o "ConnectTimeout 3" -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" "tmux kill-server" """)
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -106,15 +106,38 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# on teste de lire tous les fichiers .opb\n",
|
||||
"# on convert tous les .opb en .lp pour les utiliser dans glpk\n",
|
||||
"for (root, dirs, files) in walkdir(\"data\")\n",
|
||||
" for file in files\n",
|
||||
" if endswith(file, \".opb\")\n",
|
||||
" readKnapInstance(root * \"/\" * file)\n",
|
||||
" price, weight, capacity = readKnapInstance(root * \"/\" * file)\n",
|
||||
" filename = splitext(file)[1]\n",
|
||||
" f = open(root * \"/\" * filename * \".lp\", \"w\");\n",
|
||||
" write(f, \"Maximize\\n\")\n",
|
||||
" write(f, \" Knap: \")\n",
|
||||
" for (i, p) in enumerate(price)\n",
|
||||
" write(f, \"+ \" * string(p) * \" obj\" * string(i) * \" \")\n",
|
||||
" end\n",
|
||||
" write(f, \"\\n\")\n",
|
||||
"\n",
|
||||
" write(f, \"\\nSubject To\\n\")\n",
|
||||
" write(f, \" MaxKnap: \")\n",
|
||||
" for (i, w) in enumerate(weight)\n",
|
||||
" write(f, \"+ \" * string(w) * \" obj\" * string(i) * \" \")\n",
|
||||
" end\n",
|
||||
" write(f, \"\\n\")\n",
|
||||
"\n",
|
||||
" write(f, \"\\nBinary\\n\")\n",
|
||||
" for (i, p) in enumerate(price)\n",
|
||||
" write(f, \" obj\" * string(i) * \"\\n\")\n",
|
||||
" end\n",
|
||||
"\n",
|
||||
" write(f, \"\\nEnd\\n\")\n",
|
||||
" close(f)\n",
|
||||
" end\n",
|
||||
" end\n",
|
||||
"end"
|
||||
|
@ -2047,7 +2070,6 @@
|
|||
"Notre vecteur de décision $x$ est tel que $x\\in\\{-1,0,1\\}^n$ avec $n$ le nombre d'objets disponibles. $1$ et $0$ représente, respectivement, un objet non-pris ou non-pris. La valeur $-1$ représente un objet ou la décision n'a pas encore été faite.\n",
|
||||
"Dans la fonction `Objetive`, si la valeur est a $-1$, on fait comme-ci elle était à $1$ pourcalculer une borne supérieur. Dans la fonction `Constraints` les $-1$ sont concidéré comme des $0$ pour avoir une borne inférieur de notre problème.\n",
|
||||
"\n",
|
||||
"<br>\n",
|
||||
"Pour l'exploration et la création de noeud, nous faisons une exploration des noeuds avec le plus de $1$ en premier.\n",
|
||||
"\n",
|
||||
"Lorsque nous arrivons sur un noeud, nous l'enlevons de la pile des noeuds. Nous calculons ensuite si il est \"trivial\" ou si il dépasse déjà l'une des bornes ou si il est divisible. Dans le cas ou il est \"trivial\", nous calculons sa valeur et remplaçons la meilleure valeur si nécessaire. Dans le cas ou il dépasse une borne, nous l'abandonnons. Et enfin, si il est séparable, nous le séparons en deux en ajoutant la pile des noeuds les deux sous noeuds.\n",
|
||||
|
|
Loading…
Reference in a new issue