Esempio n. 1
0
def stopJob():
	pManager = processManager()
		
	jobId = request.args.get("job",'')
	
	job = getJob(jobId)
	
	if(job):
		warning = False	
		if job[0]['status'] == 1: 
			pManager.stopProcess(job[0]['id'], False)
			g.db.execute('UPDATE jobs SET status=2 WHERE id=? and status=1',[job[0]['id']])
			g.db.commit()
			job = getJob(jobId)
			if job[0]['status'] == 2: 
				#TODO handle db errors
				return '[{"result":"Success", "message":"Job '+str(job[0]['id'])+' for '+job[0]['map_name']+' was stopped.", "jobid":"'+str(job[0]['id'])+'"}]'
			
			else: #in the event the job finished already
				warning = True
		else:
			warning = True

		if warning:
			return '[{"result": "Warning","message":"Job was already finished or stopped","job":'+simplejson.dumps(job)+'}]'
	else:
		return "Job missing. Was it cleared already?"
Esempio n. 2
0
def startJob():
	from init import get_map_id # Cannot be imported at beginning of file because of circular import
	pManager = processManager()
		
	workspaceName = request.args.get("ws",'')
	mapName = request.args.get("map",'')
	jobTitle = request.args.get("title",'')
	zoomLevels = request.args.get("zoomlevels",'')
	metatile = request.args.get("metatile",'')
	extent = request.args.get("extent",'')
	mapEntry = get_map_id(mapName, workspaceName)
	if mapEntry is not None:
		cur = g.db.execute('INSERT INTO jobs(map, status, title) VALUES(?,?, ?)',[mapEntry, 1, jobTitle])
		g.db.commit()
		jobid = cur.lastrowid;
		job = getJob(jobid)
		
		#finding the project's path
		curdir = os.path.realpath(__file__)
		last = curdir.find("application")
		projectdir = curdir[:last] + "application/workspaces/"+workspaceName+"/"+mapName
		pManager.addProcess(job[0], projectdir, zoomLevels, metatile, extent)
		return simplejson.dumps(job)
	else:
		return "ERROR: "+mapName+" map is unavailable or does not exist"
Esempio n. 3
0
    module_env['LSB_MCPU_HOSTS'] = LSB_MCPU_HOSTS
    module_env['MPI_REMSH'] = 'ssh -x -q -o StrictHostKeyChecking=no'

    if debug:
        print("==== BEGIN ENVIRONMENT DUMP ====")
        for param in os.environ.keys():
            print(f'{param}: {os.environ[param]}')
        print("==== END ENVIRONMENT DUMP ====")

    # Launch application
    print(*abaqus_cmd, sep=" ", flush=True)

    try:
        with open(os.path.join(WORKDIR, f"{JOB_NAME}.err"), "w") as errorfile:
            abaqus_process = subprocess.Popen(abaqus_cmd, cwd=WORKDIR, env=module_env, stdout=subprocess.PIPE, stderr=errorfile)
            abaqus_result = processManager(abaqus_process, time_out=10800, check_timestamp=WORKDIR)
            outs, errs = abaqus_process.communicate(timeout=10)
            print(f"Abaqus output: {outs.decode()}", flush=True)
    except Exception as why:
        print("Abaqus block failed: " + str(why).split("\
")[-1], flush=True)
        try:  # Write Abaqus' error if available
            print(f"    - Abaqus error message: {errs.decode()}")
        except (NameError, AttributeError):
            pass

    try:
        if abaqus_result == 0:
            print("Abaqus was run successfully", flush=True)
            exit_status = "Done"
        elif abaqus_result == 17:
Esempio n. 4
0
def runMpiSGA(settingsFile = None):
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()


    if rank!=0:
        processManager.childProc()

    else:
        proc = processManager.processManager()
        s = None
        if not settingsFile:
            if len(sys.argv)<2:
                raise "Must suply settings file"
            settingsFile = sys.argv[1]
        s = settings.runSettings(settingsFile,sys.argv[2])
        
        if s.hyperSettings['seed']:
            s.seed = s.hyperSettings['seed']
        else:
            s.seed =time.time()
        random.seed(s.seed)
       
       
       
        mu = s.hyperSettings['mu']
        childK = s.hyperSettings['childK']
        lamb = s.hyperSettings['lambda']
        maxEvals = s.hyperSettings['evaluations']
        mutateRate = s.hyperSettings['mutateRate'] 
        mateRate = s.hyperSettings['mateRate']
    
        cur = mu

        pop = []
        i = 0
        while i<mu:
            x = bbsa.bbsa(copy.deepcopy(s))
            if not x.evalExist() or not x.lastExist():
                continue
            proc.add(x)
            i+=1
        proc.start()
        proc.wait(mu)
        pop = proc.getPop()
        pop.sort()
        for p in pop:
            print p.fitness


        fronts = pareto.pareto(pop)


        while cur<maxEvals:
            
            c = 0
            childs = []
            while c<lamb:    
                choice = random.choice([0,1,2])
                rate = random.random()
                
                if c+1!=lamb and rate<mateRate:
                    mom = fronts.tournSelect(childK)
                    dad = fronts.tournSelect(childK)
                    x,y = mom.mate(dad)
                    if x.evalExist() and x.lastExist():
                        proc.add(x)
                        c+=1
                    if y.evalExist() and y.lastExist():
                        proc.add(y)
                        c+=1
                elif rate<mateRate+mutateRate:
                    x=fronts.tournSelect(childK).mutate()
                    if x.evalExist() and x.lastExist():
                        proc.add(x)
                        c+=1
                else:
                    x = fronts.tournSelect(childK).altMutate()
                    if x.evalExist():
                        proc.add(x)
                        c+=1
            proc.start()
            proc.wait(lamb)
            childs = proc.getPop()
            
            pop = fronts.getPop()
            pop.extend(childs)
            fronts = pareto.pareto(pop)
            fronts.keepMu(mu)
            cur+=lamb
            su = 0.0
            ave = 0.0
            for i in xrange(mu):
                su+=fronts.pop[i].fitness
            ave = su/mu
            i = 0
            print cur, ave, len(fronts.fronts.keys())
            fronts.fronts[0].sort()
            for ind in fronts.fronts[0]: 
                print"\t",i,ind.fitness,",",ind.aveEval,",",ind.time,",",ind.distance,"\t",ind.name
                i+=1
                ind.makeGraph()
                ind.plot()
                ind.logger.log()
                ind.makeProg()


        i = 0
        fronts.fronts[0].sort()
        for ind in fronts.fronts[0]: 
            print"\t",i,ind.fitness,",",ind.aveEval,",",ind.time,",",ind.distance,"\t",ind.name
            i+=1
            ind.directory += "finalFront/"
            ind.logger.name = ind.name
            ind.makeGraph()
            ind.plot()
            ind.logger.log()
            ind.makeProg()

        proc.kill()
Esempio n. 5
0
def runMpiNSGA(settingsFile=None):
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()

    if rank != 0:
        processManager.childProc()

    else:
        proc = processManager.processManager()
        s = None
        if not settingsFile:
            if len(sys.argv) < 2:
                raise "Must supply settings file"
            settingsFile = sys.argv[1]
        s = settings.runSettings(settingsFile, sys.argv[2])

        if s.hyperSettings['seed']:
            s.seed = s.hyperSettings['seed']
        else:
            s.seed = time.time()
        random.seed(s.seed)

        mu = s.hyperSettings['mu']
        childK = s.hyperSettings['childK']
        lamb = s.hyperSettings['lambda']
        maxEvals = s.hyperSettings['evaluations']
        mutateRate = s.hyperSettings['mutateRate']
        mateRate = s.hyperSettings['mateRate']

        cur = mu

        pop = []
        i = 0
        while i < mu:
            x = bbsa.bbsa(copy.deepcopy(s))
            if not x.evalExist() or not x.lastExist():
                continue
            proc.add(x)
            i += 1
        #print "start"
        proc.start()
        #print "wait"
        proc.wait(mu)
        #print "not wait"
        pop = proc.getPop()
        pop.sort()
        for p in pop:
            print p.fitness

        while cur < maxEvals:

            c = 0
            childs = []
            while c < lamb:
                choice = random.choice([0, 1, 2])
                rate = random.random()

                if c + 1 != lamb and rate < .3:
                    mom = ktourn(pop, childK)
                    dad = ktourn(pop, childK)
                    x, y = mom.mate(dad)
                    if x.evalExist() and x.lastExist():
                        proc.add(x)
                        c += 1
                    if y.evalExist() and y.lastExist():
                        proc.add(y)
                        c += 1
                elif rate < .6:
                    x = ktourn(pop, childK).mutate()
                    if x.evalExist() and x.lastExist():
                        proc.add(x)
                        c += 1
                else:
                    x = ktourn(pop, childK).altMutate()
                    if x.evalExist():
                        proc.add(x)
                        c += 1
            #print "start"
            proc.start()
            #print "wait"
            proc.wait(lamb)
            #print "no wait"
            childs = proc.getPop()
            pop.extend(childs)
            pop.sort()
            pop.reverse()
            pop = pop[:mu]
            cur += lamb

            su = 0.0
            ave = 0.0
            for i in xrange(len(pop)):
                su += pop[i].fitness
            ave = su / len(pop)

            print cur, ave, pop[0].fitness, pop[0].aveEval, pop[0].aveOps
            pop[0].makeGraph()
            pop[0].plot()
            pop[0].logger.log()
            pop[0].makeProg()
        print
        print pop[0].fitness, pop[0].aveEval
        print pop[0].toDict()
        pop[0].makeProg()

        proc.kill()
Esempio n. 6
0
def runMpiNSGA(settingsFile = None):
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()


    if rank!=0:
        processManager.childProc()

    else:
        proc = processManager.processManager()
        s = None
        if not settingsFile:
            if len(sys.argv)<2:
                raise "Must supply settings file"
            settingsFile = sys.argv[1]
        s = settings.runSettings(settingsFile,sys.argv[2])
       
        if s.hyperSettings['seed']:
            s.seed = s.hyperSettings['seed']
        else:
            s.seed =time.time()
        random.seed(s.seed)
        
        
        mu = s.hyperSettings['mu']
        childK = s.hyperSettings['childK']
        lamb = s.hyperSettings['lambda']
        maxEvals = s.hyperSettings['evaluations']
        mutateRate = s.hyperSettings['mutateRate']
        mateRate = s.hyperSettings['mateRate']

        cur = mu

        pop = []
        i = 0
        while i<mu:
            x = bbsa.bbsa(copy.deepcopy(s))
            if not x.evalExist() or not x.lastExist():
                continue
            proc.add(x)
            i+=1
        #print "start"
        proc.start()
        #print "wait"
        proc.wait(mu)
        #print "not wait"  
        pop = proc.getPop()    
        pop.sort()
        for p in pop:
            print p.fitness


        while cur<maxEvals:
            
            c = 0
            childs = []
            while c<lamb:    
                choice = random.choice([0,1,2])
                rate = random.random()
                
                if c+1!=lamb and rate<.3:
                    mom = ktourn(pop,childK)
                    dad = ktourn(pop,childK)
                    x,y = mom.mate(dad)
                    if x.evalExist() and x.lastExist():
                        proc.add(x)
                        c+=1
                    if y.evalExist() and y.lastExist():
                        proc.add(y)
                        c+=1
                elif rate<.6:
                    x=ktourn(pop,childK).mutate()
                    if x.evalExist() and x.lastExist():
                        proc.add(x)
                        c+=1
                else:
                    x = ktourn(pop,childK).altMutate()
                    if x.evalExist():
                        proc.add(x)
                        c+=1
            #print "start"
            proc.start()
            #print "wait"
            proc.wait(lamb)
            #print "no wait"
            childs = proc.getPop()
            pop.extend(childs)
            pop.sort()
            pop.reverse()
            pop = pop[:mu]
            cur+=lamb

            su = 0.0
            ave = 0.0
            for i in xrange(len(pop)):
                su+=pop[i].fitness
            ave = su/len(pop)
            
            print cur, ave,pop[0].fitness,pop[0].aveEval,pop[0].aveOps
            pop[0].makeGraph()
            pop[0].plot()
            pop[0].logger.log()
            pop[0].makeProg()
        print
        print pop[0].fitness,pop[0].aveEval
        print pop[0].toDict()
        pop[0].makeProg()

        proc.kill()