Example #1
0
def main():
    domain = [(10, 370)] * (len(people) * 2)
    sol = optimization.randomoptimize(domain, crosscount)
    crosscount(sol)
    sol = optimization.annealingoptimize(domain, crosscount, step=50, cool=0.99)
    crosscount(sol)
    sol
    drawnetwork(sol)
 def select_opt_method(self):
     print self.flag
     if self.flag==1:
         return optimization.hillclimb(self.domain,self.fetcher.cost_func)
     elif self.flag==2:
         return optimization.annealingoptimize(self.domain,self.fetcher.cost_func)
     elif self.flag==3:
         return optimization.geneticoptimize(self.domain,self.fetcher.cost_func)
     else:
         return optimization.randomoptimize(self.domain,self.fetcher.cost_func)
Example #3
0
def main():
    domain = [(0, (len(dorms) * 2) - i - 1) for i in range(0, len(dorms) * 2)]
    print("Random optimization:")
    s = opt.randomoptimize(domain, dormcost)
    printsolution(s)
    print("\nSimulated annealing optimization:")
    s = opt.annealingoptimize(domain, dormcost)
    printsolution(s)
    print("\nGenetic optimization:")
    s = opt.geneticoptimize(domain, dormcost)
    printsolution(s)
Example #4
0
    def Last_process(self):
        self.Create_available_course_list()

        if self.v.get() == 0:
            solution_listt = optimization.hillclimb(self.domainn,
                                                    self.Cost_function)
            self.write_listbox(solution_listt)
        elif self.v.get() == 1:
            solution_listt = optimization.annealingoptimize(
                self.domainn, self.Cost_function)
            self.write_listbox(solution_listt)
        elif self.v.get() == 2:
            solution_listt = optimization.geneticoptimize(
                self.domainn, self.Cost_function)
            self.write_listbox(solution_listt)
        elif self.v.get() == 3:
            solution_listt = optimization.randomoptimize(
                self.domainn, self.Cost_function)
            self.write_listbox(solution_listt)
Example #5
0
  def optimize(self):

    self.consumers = [[con.strip()] for con in self.consumers.split(',')]
    #append an empty list to each consumer to be filled by resources
    for consumer in self.consumers:
      consumer.append([]);

    #What a solution looks like:
    # [0,1,2,0,2,0,1,0,0,2,1,2,0,0,1,0,2,1,1,0,2,1,0...]
    #where each list slot represents a particular resource
    #from the resources list, and the value of a slot 
    #represents the consumer that resource is assigned to

    #What the domain looks like
    # [(0,2),(0,2),(0,2),(0,2),(0,2),(0,2),(0,2)...]

    domain = [(0,len(self.consumers)-1)] * len(self.resources)

    #Add up the total strength for each attribute possessed by a resource
    total_attr_strengths = []
    for a in range(0, len(self.resources[0]) - 1):
      total_attr_strengths.append(sum([r[a+1] for r in self.resources]))

    #Ideal attribute strength at each consumer.
    #This is simple right now becuase we're just dividing total
    #strengths by # of consumers.
    self.optimal_attr_strengths = []
    for a in range(0, len(total_attr_strengths)):
      self.optimal_attr_strengths.append(total_attr_strengths[a]/len(self.consumers))

    if self.algo == 'annealing':
      cost, sol = optimization.annealingoptimize(domain, self.provisioning_cost)
    elif self.algo == 'hillclimb':
      cost, sol = optimization.hillclimb(domain, self.provisioning_cost)
    elif self.algo == 'random':
      cost, sol = optimization.randomoptimize(domain, self.provisioning_cost)
    elif self.algo == 'genetic':
      cost, sol = optimization.geneticoptimize(domain, self.provisioning_cost)
    else:
      raise ValueError('Invalid algorithm')

    return cost, sol
Example #6
0
    def Command_of_schedule_showing(self):
        if len(
                self.Course_code_shower.get(0, END)
        ) == 0:  #If there is no course code in listbox,program will show an error.
            self.Error_Message_Function(
                """Please First use the\nFetching Button""")
            return

        selections = map(int, self.Course_code_shower.curselection(
        ))  #Returning the list of indexes selected in the listbox
        all_course_types = self.Course_code_shower.get(0, END)
        selected_course_types = [all_course_types[i] for i in selections]

        if len(
                selected_course_types
        ) == 0:  #If demanded course codes is not selected,program will show an error.
            self.Error_Message_Function("""Please Select\nSome Course Code""")
            return
            #Returning the list of selected course codes.
        self.List_of_all_avaiable_courses = list()
        for course_types in selected_course_types:  #Creating a list of courses from the course code dictionary with adding lists togetgher.
            self.List_of_all_avaiable_courses.extend(
                self.Dictionary_of_course_codes[course_types])

        if len(
                self.Course_number_taker.get()
        ) == 0:  #If demanded course number is not provided,program will show an error.
            self.Error_Message_Function("""Please give\nCourse number""")
            return

        try:
            number_of_courses = int(self.Course_number_taker.get(
            ))  #Getting the demanded number of course from entry
        except:  #If it is not a number,program will comply.
            self.Error_Message_Function(
                """Please give\nCourse number\nproperlyas integer""")
            return

        if number_of_courses > len(
                self.List_of_all_avaiable_courses
        ):  #If demeanded course number exceed avaiable course number,there will be an error.
            self.Error_Message_Function(
                """These course codes\nhave insufficient course""")
            return
        self.domain = [(0, len(self.List_of_all_avaiable_courses) - i - 1)
                       for i in range(number_of_courses)]
        #Domain
        type_of_optimization = Optimization_Dictionary[self.Radio_Values.get()]
        #Type of optimization come from the dictionary.
        if type_of_optimization == "Hill Climbing":
            solution = optimization.hillclimb(self.domain,
                                              self.My_Cost_Function)

        elif type_of_optimization == "Simulated Annealing":
            solution = optimization.annealingoptimize(self.domain,
                                                      self.My_Cost_Function)

        elif type_of_optimization == "Genetic Optimization":
            if number_of_courses < 3:  #For genetic optimization,we need at least three course demand
                self.Error_Message_Function(
                    """Genetic Optimization is\n valid for \nmore than  3 courses"""
                )
                return
            solution = optimization.geneticoptimize(self.domain,
                                                    self.My_Cost_Function)

        elif type_of_optimization == "Random Optimization":
            solution = optimization.randomoptimize(self.domain,
                                                   self.My_Cost_Function)

        Last_Showing = self.My_Representation_function(
            solution
        )  #This returns a dictionary where keys are days and values will be list of tuple(time,course).
        self.Last_Showing_Part.delete(0.0, END)  #Deleting all the elements
        for days in Days_of_Week:  #List of days
            self.Last_Showing_Part.insert(END, days + ":\n")
            if days in Last_Showing:  #If day inside of dictionary, inserting all tuples in the list(value of day).
                for times, course in Last_Showing[days]:
                    self.Last_Showing_Part.insert(
                        END,
                        times + '(%s %s),' % (course.code, course.course_name))
            else:  #If day is not inside of the dictionary inserting no classes.
                self.Last_Showing_Part.insert(END, 'NO CLASSES')
            self.Last_Showing_Part.insert(END, '\n')
Example #7
0
# s = [1, 4, 3, 2, 7, 3, 6, 3, 2, 4, 5, 3]

# op.printschedule(s)
# print(op.schedulecost(s))
domain = [(0, 9)] * (len(op.people) * 2)
# s = op.randomoptimize(domain, op.schedulecost)
# s = op.hillclimb(domain, op.schedulecost)
# s = op.annealingoptimize(domain, op.schedulecost)
# s = op.geneticoptimize(domain, op.schedulecost)
# print(domain,s)
# print(op.schedulecost(s))
# op.printschedule(s)

result = {'rand': [], 'hill': [], 'anne': [], 'gene': []}
for i in range(10):
    s1 = op.randomoptimize(domain, op.schedulecost)
    result['rand'].append(op.schedulecost(s1))

    s2 = op.hillclimb(domain, op.schedulecost)
    result['hill'].append(op.schedulecost(s2))

    s3 = op.annealingoptimize(domain, op.schedulecost)
    result['anne'].append(op.schedulecost(s3))

    s4 = op.geneticoptimize(domain, op.schedulecost)
    result['gene'].append(op.schedulecost(s4))

print(result)
print('rand', sum(result['rand']) / 10, min(result['rand']))
print('hill', sum(result['hill']) / 10, min(result['hill']))
print('anne', sum(result['anne']) / 10, min(result['anne']))
Example #8
0
print('hillclimb algorithm -- schedulecost : ' )
print(optimization.schedulecost(s))

optimization.printschedule(s)
'''
'''
# annealing algorithm
s = optimization.annealingoptimize(domain, optimization.schedulecost)

print('annealing algorithm -- schedulecost : ' )
print(optimization.schedulecost(s))

optimization.printschedule(s)
'''
'''
print('---- genetic optimization algorithm ----')
s = optimization.geneticoptimize(domain, optimization.schedulecost)
print(s)

optimization.printschedule(s)
'''

s = optimization.randomoptimize(dorm.domain, dorm.dormcost)
print 'random optimize dormcost = ', dorm.dormcost(s)
dorm.printsolution(s)

s = optimization.geneticoptimize(dorm.domain, dorm.dormcost)
print 'genetic optimize dormcost = ', dorm.dormcost(s)
dorm.printsolution(s)
Example #9
0
    # 遍历每一名学生
    for i in range(len(vec)):
        x = int(vec[i])
        dorm = dorms[slots[x]]
        pref = prefs[i][1]
        # 首选成本值为0,次选成本值为1
        if pref[0] == dorm: cost += 0
        elif pref[1] == dorm: cost += 1
        else: cost += 3
        # 不在选择之列则成本值为3

        # 删除选中的槽
        del slots[x]

    return cost


if __name__ == "__main__":  #只有在执行当前模块时才会运行此函数
    print(domain)
    s = optimization.randomoptimize(domain, dormcost)  # 随机搜索法,寻找最优题解
    print(s)
    printsolution(s)  # 打印最优解代表的含义
    s = optimization.hillclimb(domain, dormcost)  # 爬山法,寻找最优题解
    print(s)
    printsolution(s)  # 打印最优解代表的含义
    s = optimization.annealingoptimize(domain, dormcost)  # 模拟退火算法,寻找最优题解
    print(s)
    printsolution(s)  # 打印最优解代表的含义
    s = optimization.geneticoptimize(domain, dormcost)  # 遗传算法,寻找最优题解
    print(s)
    printsolution(s)  # 打印最优解代表的含义
Example #10
0
import optimization as op
import dorm
import time

print 'fix:',
start = time.clock()
s = [0] * len(dorm.prefs)
print dorm.dormcost(s)
dorm.printsolution(s)
print 'running time', time.clock() - start
print

print 'random optimization:',
start = time.clock()
s = op.randomoptimize(dorm.domain, costf=dorm.dormcost)
print dorm.dormcost(s)
dorm.printsolution(s)
print 'running time', time.clock() - start
print

print 'hill climb:',
start = time.clock()
s = op.hillclimb(dorm.domain, costf=dorm.dormcost)
print dorm.dormcost(s)
dorm.printsolution(s)
print 'running time', time.clock() - start
print

print 'annealing optimization:',
start = time.clock()
s = op.annealingoptimize(dorm.domain, costf=dorm.dormcost)
        x = int(vec[i])
        dorm = dorms[slots[x]]
        pref = prefs[i][1]
        # first choice costs 0, second choice costs 1
        if pref[0] == dorm:
            cost += 0
        elif pref[1] == dorm:
            cost += 1
        else:
            # not on the list costs 3
            cost += 3

        # remove the selected slot
        del slots[x]

    return cost


if __name__ == "__main__":
    # printsolution([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

    s = optimization.randomoptimize(domain, dormcost)
    print "Random searching", dormcost(s)
    printsolution(s)
    print '\n'

    s = optimization.geneticoptimize(domain, dormcost)
    print "Genetic algorithms", dormcost(s)
    printsolution(s)
    print '\n'
Example #12
0
import optimization
import dorm
import socialnetwork

# Group Travel Problem
print('<----Group Travel---->')
s = [1, 4, 3, 2, 7, 3, 6, 3, 2, 4, 5, 3]
optimization.printschedule(s)

cost = optimization.schedulecost(s)
print('Present cost:%f' % cost)

print('\n<----Random Searching---->')
domain = [(0, 9)] * (len(optimization.people) * 2)
print(s)
s = optimization.randomoptimize(domain, optimization.schedulecost)
cost = optimization.schedulecost(s)
print('Present cost:%f' % cost)
optimization.printschedule(s)

print('\n<----Hill Climbing---->')
s = optimization.hillclimb(domain, optimization.schedulecost)
print(s)
cost = optimization.schedulecost(s)
print('Present cost:%f' % cost)
optimization.printschedule(s)

print('\n<----Simulated Annealing---->')
s = optimization.annealingoptimize(domain, optimization.schedulecost)
print(s)
cost = optimization.schedulecost(s)
Example #13
0
    draw = ImageDraw.Draw(img)

    # 建立标识位置信息的字典
    pos = dict([(people[i], (sol[i * 2], sol[i * 2 + 1]))
                for i in range(0, len(people))])

    for (a, b) in links:
        draw.line((pos[a], pos[b]), fill=(255, 0, 0))

    for n, p in pos.items():
        draw.text(p, n, (0, 0, 0))

    img.show()


domain = [(10, 370)] * (len(people) * 2)  #设定题解范围

if __name__ == "__main__":  #只有在执行当前模块时才会运行此函数
    print(domain)
    s = optimization.randomoptimize(domain, crosscount)  # 随机搜索法,寻找最优题解
    print(s)
    drawnetwork(s)  # 绘制关系网
    s = optimization.hillclimb(domain, crosscount)  # 爬山法,寻找最优题解
    print(s)
    drawnetwork(s)  # 绘制关系网
    s = optimization.annealingoptimize(domain, crosscount)  # 模拟退火算法,寻找最优题解
    print(s)
    drawnetwork(s)  # 绘制关系网
    s = optimization.geneticoptimize(domain, crosscount)  # 遗传算法,寻找最优题解
    print(s)
    drawnetwork(s)  # 绘制关系网
     for i in range(0, len(people))])
    # draw links
    for (a, b) in links:
        draw.line((pos[a], pos[b]), fill=(255, 0, 0))

    # draw people
    for n, p in pos.items():
        draw.text(p, n, (0, 0, 0))

    img.show()


domain = [(10, 370)] * (len(people) * 2)

print '--- random ---'
s = optimization.randomoptimize(domain, crosscount)
print crosscount(s)
print s

print '--- hill climb ---'
s = optimization.hillclimb(domain, crosscount)
print crosscount(s)
print s

print '--- simulated annealing ---'
s = optimization.annealingoptimize(domain, crosscount)
print crosscount(s)
print s

print '--- genetic optimize ---'
gen = optimization.genetic()
Example #15
0
Created on 2012/10/16

@author: n_shimada
'''

import socialnetwork
import optimization
from numpy import *

#csv_filename = "C:/HadoopPig/workspace/HadoopPig/works/output/actionGraph/part-r-00000.csv"
csv_filename = "C:/HadoopPig/workspace/HadoopPig/works/output/testLowGraph09-01_09-08/part-r-00000.csv"
db_filename = "verb_data.db"

db = socialnetwork.get_db_conn(db_filename)
print "importing data"
socialnetwork.import_data(db, csv_filename)
print "done"
sn = socialnetwork.SocialNetwork(db)
print "okSN"

sol=optimization.randomoptimize(socialnetwork.domain,sn.crosscount)
print "OPTIMIZE done"
sol=optimization.annealingoptimize(socialnetwork.domain,sn.crosscount,step=50,cool=0.99)
print "annealing done"
sn.crosscount(sol)
print "outputing count number of crosses"
#sol
sn.drawnetwork(sol)
print "Drawed Network"

sn.close()
Example #16
0
import optimization as op
import socialnetwork as so
import time

print 'random optimization:',
start = time.clock()
sol = op.randomoptimize(so.domain,so.crosscount)
print so.crosscount(sol)
print 'running time',time.clock()-start
print
so.drawnetwork(sol)


print 'hill climb:',
start = time.clock()
sol = op.hillclimb(so.domain,so.crosscount)
print so.crosscount(sol)
print 'running time',time.clock()-start
print
so.drawnetwork(sol)

print 'annealing optimization:',
start = time.clock()
sol = op.annealingoptimize(so.domain,so.crosscount)
print so.crosscount(sol)
print 'running time',time.clock()-start
print
so.drawnetwork(sol)

print 'genetic optimization:',
start = time.clock()
Example #17
0
import optimization
s = [1,4,3,2,7,3,6,3,2,4,5,3]

reload(optimization)
domain = [(0,9)] * (len(optimization.people) * 2)
s = optimization.randomoptimize(domain, optimization.schedulecost)
optimization.schedulecost(s)
optimization.printschedule(s)

s = optimization.hillclimb(domain, optimization.schedulecost)
optimization.schedulecost(s)
optimization.printschedule(s)

s = optimization.annealingoptimize(domain, optimization.schedulecost, T=10000, cool=0.95, step=3)
optimization.schedulecost(s)
optimization.printschedule(s)

s = optimization.geneticoptimize(domain, optimization.schedulecost)
optimization.printschedule(s)

#######################
import dorm
dorm.printsolution([0,0,0,0,0,0,0,0,0,0])

s = optimization.randomoptimize(dorm.domain, dorm.dormcost)
dorm.dormcost(s)
s = optimization.geneticoptimize(dorm.domain, dorm.dormcost)
dorm.printsolution(s)

#######################
import socialnetwork
Example #18
0
'''

import socialnetwork
import optimization
from numpy import *

#csv_filename = "C:/HadoopPig/workspace/HadoopPig/works/output/actionGraph/part-r-00000.csv"
csv_filename = "C:/HadoopPig/workspace/HadoopPig/works/output/testLowGraph09-01_09-08/part-r-00000.csv"
db_filename = "verb_data.db"

db = socialnetwork.get_db_conn(db_filename)
print "importing data"
socialnetwork.import_data(db, csv_filename)
print "done"
sn = socialnetwork.SocialNetwork(db)
print "okSN"

sol = optimization.randomoptimize(socialnetwork.domain, sn.crosscount)
print "OPTIMIZE done"
sol = optimization.annealingoptimize(socialnetwork.domain,
                                     sn.crosscount,
                                     step=50,
                                     cool=0.99)
print "annealing done"
sn.crosscount(sol)
print "outputing count number of crosses"
#sol
sn.drawnetwork(sol)
print "Drawed Network"

sn.close()
Example #19
0
import optimization as op
import time

s = [1,4,3,2,7,3,6,3,2,4,5,3]
domain = [(0,9)]*len(s)

print 'fix:',
start = time.clock()
print op.schedulecost(s)
op.printschedule(s)
print 'running time',time.clock()-start
print

print 'random optimization:',
start = time.clock()
sol = op.randomoptimize(domain)
print op.schedulecost(sol)
op.printschedule(sol)
print 'running time',time.clock()-start
print

print 'hill climb:',
start = time.clock()
sol = op.hillclimb(domain)
print op.schedulecost(sol)
op.printschedule(sol)
print 'running time',time.clock()-start
print 

print 'annealing optimization:',
start = time.clock()
Example #20
0

#绘制网格
from PIL import Image,ImageDraw

def drawnetwork(sol):
    #建立image对象
    img=Image.new('RGB',(400,400),(255,255,255))
    draw=ImageDraw.Draw(img)

    pos=dict([(people[i],(sol[i*2],sol[i*2+1])) for i in range(len(people))])

    #绘制连线
    for a,b in links:
        draw.line((pos[a],pos[b]),fill=(255,0,0))

    #绘制结点信息
    for n,p in pos.items():
        draw.text(p,n,(0,0,0))

    #只是显示图形,而不存储
    img.show()

#全局测试代码
if 1:
    import optimization
    sol=optimization.randomoptimize(domain,crosscount)
    print sol
    print crosscount(sol)
    drawnetwork(sol)
Example #21
0
def dormcost(vec):
    cost = 0
    # Create list a of slots
    slots = [0, 0, 1, 1, 2, 2, 3, 3, 4, 4]

    # Loop over each student
    for i in range(len(vec)):
        x = int(vec[i])
        dorm = dorms[slots[x]]
        pref = prefs[i][1]
        # First choice costs 0, second choice costs 1
        if pref[0] == dorm:
            cost += 0
        elif pref[1] == dorm:
            cost += 1
        else:
            cost += 3
        # Not on the list costs 3

        # Remove selected slot
        del slots[x]

    return cost


if __name__ == '__main__':
    result = optimization.randomoptimize(domain, dormcost)
    printsolution(result)
    # result = optimization.geneticoptimize(domain,dormcost)
    # printsolution(result)
def test_randomoptimize(domain):
    sys.stderr.write("testing random optimization...\n")
    s = optimization.randomoptimize(domain, optimization.schedulecost)
    print optimization.schedulecost(s)
    optimization.printschedule(s)