Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - tommyb1992

Pagine: [1] 2 3 ... 6
1
Base / Problema ipyparallel
« il: Aprile 24, 2019, 18:13 »
Errore:
/home/tomas/.local/lib/python3.5/site-packages/ipyparallel/client/client.py:459: RuntimeWarning:
            Controller appears to be listening on localhost, but not on this machine.
            If this is true, you should specify Client(...,sshserver='you@tomas-desktop')
            or instruct your controller to listen on an external IP.

Come risolvo? Grazie

2
Base / Stampare tutte le combinazioni con 6 carte
« il: Aprile 24, 2019, 09:58 »
Ipotizzando di avere 6 carte nel mazzo: A♠ K♠ Q♠ A♣ K♣ Q♣

E tenendo conto che:
A♠ K♠ Q♠ equivale a A♣ K♣ Q♣
o
A♠ K♠ Q♣ equivale a A♣ K♣ Q♠
perchè la probabilità che escano sono uguali.

Conseguentemente, ora proviamo ad eliminare i semi e invetarcene 2 nuovi, "z" e "y": il primo seme è delle parima carta che viene estratta è la "z", il secondo seme è della seconda carta che viene estratta, se la carta è uguale alla precedente è la "y", se la carta è differente può essere sia la "z" che la "y".

EDIT: mi sono scordato di dire che le carte le dovrei ordinare dalla più alta alla più bassa. E i semi dovrebbero essere ordinati secondo "z" > "y", quindi esempi validi sono:
1) Az Ay Kz
2) Az Kz Qz
Esempi non validi sono:
1) Ay Az Kz
2) Az Ay Ky
3) Ay Ky Qy

Le combo che possiamo formare con questa interpretazione sono (estraendo 3 carte dal mazzo):
1) Az Ay Kz (che potrebbe equivalere a Az Ay Ky)
2) Az Ay Qz (che potrebbe equivalere a Az Ay Qy)
3) Az Kz Ky
4) Kz Ky Qy
5) Az Qz Qy
6) Kz Qz Qy
7) Az Kz Qz
8 ) Az Kz Qy
9) Az Ky Qz
10) Az Ky Qy


Ovviamente anche consigli teorici sono ben accetti. Attualmente cerco di controllare che semi estrarre controllando quali carte sono state inserite.

Ma forse creare prima un deck ordinato e rimuovere dal deck potrebbe essere una soluzione migliore.

EDIT 2: pensando potrei anche farle letteralmente tutte e poi creare una funzione che effettua il pruning... cosa ne pensate?

================================

Update 25/04: attualmente sto risolvendo generando tutte le combo, e poi scrivendo vari algoritmi di pruning che eliminano le combo con probabilità di uscire statisticamente uguali.
Però sono sempre ben disposto ad ascoltare consigli.

3
Base / [Win/py3] File aperti da diversi programmi
« il: Febbraio 07, 2019, 10:17 »
Ho un software di terze parti che mi crea e aggiorna files, io dovrei copiarli e aggiornare le copie evitando problemi di concorrenza.

Mi date una mano e mi elencate quali funzioni utilizzare?

Grazie

4
Base / Cosa succede in questo caso con imp.load_source?
« il: Gennaio 14, 2019, 13:42 »

while 1:
  # cerca files .py in una cartella
  for fileName in allFilesFromFolder:
    # se il file non esiste lo carica dinamicamente in un dizionario
    if fileName not in loadedFiles:
      loadedFiles[name] = imp.load_source(name, fileName )


Ipotizzando di aggiungere un nuovo file .py alla cartella, potrebbe esiste il caso nel quale non essendo ancora stato tutto copiato/scaricato/trasferito load_source provi ad agire su un file incompleto e quindi terminarmi il programma con un raise?

Grazie

5
Altri linguaggi / Integrare pesantemente Python e C++
« il: Gennaio 01, 2019, 15:37 »
Dovrei poter agire a 360° integrando Python e C++ e vorrei evitare di utilizzare ctypes perchè voglio avere "assoluta libertà di movimento".
Voi che siete più esperti mi potete consigliare la via più profittevole?

Grazie

6
Altri linguaggi / Convertire Lua code in Python
« il: Dicembre 22, 2018, 12:56 »
Ho questa riga in Lua:
-- matrix 3x2x6
matrix[{{}, 1, {}}] = other_matrix:clone():repeatTensor(4, 1)


Come la converto in python usando PyTorch?

Grazie

7
Base / [Risolto]Come faccio questa cosa con le classi?
« il: Dicembre 12, 2018, 20:15 »
class Node(object):
    # [...]
    def expand(self, state):
        key = hash(state)
        if self[key] is None:
            self[key] = Node(state, self, self.depth+1)

        self.childs.append(self[key])

class MiniMaxNode(BaseNode):
    def __init__(self, state, parent=None, depth=0):
        super().__init__(state, parent, depth)

    def expand(self, state):
        super().expand(state)
        # [...]


E nel momento nel quale la estendo, invece di richiamare la riga:
"self[key] = Node(state, self, self.depth+1)"
vorrei invece richiamare:
"self[key] = MiniMaxNode(state, self, self.depth+1)"
senza dover sovrascrivere tutta il metodo, perchè sono certo che funzionerà sempre allo stesso modo, al massimo ci aggiungo codice ma di certo non tolgo da quel metodo

8
Base / [risolto][Windows] .bat con anaconda
« il: Ottobre 30, 2018, 18:21 »
vorrei avere un bat che mi carica uno script con un environment di anaconda... come faccio?

grazie

9
Base / Algoritmo TDbackpropr per tic tac toe
« il: Ottobre 19, 2018, 18:08 »
Ho implementato un algoritmo di Q-learning per la risoluzione del semplice gioco TicTacToe, essendo a stati finiti ho utilizzato una tabella per rappresentare tutti gli stati,   e convergeva verso l'equilibrio di nash in circa (se non sbaglio) 10K giochi giocando contro se stesso e imparando a giocare perfetto.

Ora ho provato a usare una rete neurale come approssimatore d'errore seguendo questi articoli (che sono per il gioco del backgammon, ma siccome mi interessa più di tanto il backgammon quanto l'applicazione dell'algoritmo io l'ho reimplementato sul TicTacToe)
 - https://www.cs.cornell.edu/boom/2001sp/Tsinteris/gammon.htm
 - http://modelai.gettysburg.edu/2013/tdgammon/pa4.pdf
 - https://web.stanford.edu/group/pdplab/pdphandbook/handbookch10.html
 - http://www.incompleteideas.net/td-backprop-pseudo-code.text

La seconda formula del secondo link l'ho modificata togliendo la sommatoria.

E non riesco a capire neanche come applicare questa:


Oltre al fatto che non riesco a capire anche come sia possibile che applichi il discount rate visto che somma sempre k.

Ma vabbe... dopo molte prove l'algoritmo non funziona:
 - NeuralNetwork.py
 - TicTacToe.py
 - train.py

Grazie

10
Base / requests non riesco a uploadare 2 file contemporaneamnte
« il: Settembre 19, 2018, 09:47 »
                url = 'http://192.168.1.4:888/upload.php'
                path = r'C:\Users\Tomas\Pictures\Test\\'
                f1 = path + 'cane.jpg'
                f2 = path + 'gatto.jpg'
                files = [
                    ('f', ('1.png', open(f1, 'rb'), 'image/jpg')),
                    ('f', ('2.png', open(f2, 'rb'), 'image/jpg'))
                ]
                r = requests.post(url, files=files)
                print(r.text)


Form:
<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="file" name="f" multiple="true">
    <input type="submit">
  </form>


Risposta del server:
(
    [f] => Array
        (
            [name] => 2.png
            [type] => image/jpg
            [tmp_name] => C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\binaries\tmp\php38A2.tmp
            [error] => 0
            [size] => 110173
        )
)


Ergo mi carica solo 1 file

11
Base / __getitem__ per l'indice
« il: Settembre 18, 2018, 14:02 »
import random

class Chromosome(object):
    dna = "ATCG"

    def __getitem__(self, index):
        return self.dna[index]

    def __len__(self):
        return len(self.dna)

c = Chromosome()

print(random.choice(c))


examples:

>python test2.py
C

>python test2.py
A

>python test2.py
C

>python test2.py
A

>python test2.py
G


Mi servirebbe un metodo che mi restituisce l'indice invece del valore, e non posso sostituire __getitem__ facendo "return index" perchè ho bisogno anche del metodo che mi restituisce il valore.

Esiste qualcosa di nativo senza che mi invento nulla tipo: random.randint(0, len(c) - 1)?

12
Base / [risolto]Numpy più lento della nativa random?
« il: Settembre 17, 2018, 14:54 »
Come è possibile?

>>> cProfile.run('for _ in range(1000000): numpy.random.randint(1,3)')
         1000003 function calls in 2.935 seconds

>>> cProfile.run('for _ in range(1000000): numpy.random.choice([1,2])')
         1000003 function calls in 6.875 seconds

>>> cProfile.run('for _ in range(1000000): random.choice([1,2])')
         3000003 function calls in 1.470 seconds

>>> cProfile.run('for _ in range(1000000): random.randint(1, 2)')
         3000003 function calls in 2.171 seconds


E poi come è possibile che randint sia più veloce di choice nella libreria std?

Grazie

13
Base / [ri-aperto]Py .exe eseguire se stesso in background
« il: Settembre 01, 2018, 08:13 »
Come faccio questa cosa?

test.exe
import sys
import time
import subprocess


if len(sys.argv) == 1:
    subprocess.Popen(["./test.exe", "bckrnd"])
    sys.exit(0)

while True:
    # Nothing to do
    time.sleep(1)


Grazie

=================

Dopo non essermi arresto, alla fine ho trovato la soluzione:
DETACHED_PROCESS = 0x00000008
subprocess.Popen(["test.exe", "1"], creationflags=DETACHED_PROCESS)

14
Mobile / Multiple domande Kivy e SL4A
« il: Agosto 24, 2018, 10:31 »
Kivy:
1) Come faccio a sviluppare l'app in testing senza dovere sempre stare a compilarla e poi provarla sull'emulatore?
2) Come faccio a richiedere che l'app si avii in modalità root?
3) Come faccio ad aprire un processo in background?
4) Come faccio a leggere le cose stampante con "print"?
5) Per installare una libreria non std basta che la aggiungo al file di configurazione durante la compilazione o devo puttare qualche file da qualche parte?

SL4A:
Ho provato a inizializzare qualche script python, ma quando lo apro non trovo nessun script, quindi ho scaricato una shell android e ho fatto:
cd /sdcard/sl4a/scripts
echo "import sys; print sys.path" >> test.py

Ma continuo a non vedere nessun file.

p.s. l'apk non deve girare su mobile ma solo su emulatore

15
Database / [MariaDB] Problema con JSON field
« il: Agosto 16, 2018, 09:06 »
Ho un campo di tipo "JSON" in MariaDB, ma ho scoperto che in realtà non è JSON ma:
Citazione
JSON is an alias for LONGTEXT introduced for compatibility reasons with MySQL's JSON data type

Quindi è un longtext, come trasformo un testo in un Json? (p.s. mi ha anche cambiato gli apici, perciò json.loads non è applicabile)

Potrei fare un replace("'", '"'), ma boh, poi potrei dover lavorare con le eccezioni per correggere eventuali problemi con un parser...

Pagine: [1] 2 3 ... 6