배낭 문제에 대한 코드를 작성하려고합니다. 무게 용량이있는 배낭이 있고 가능한 최상의 솔루션을 찾기 위해 특정 항목 조합을 선택하는 경우. 그러나 가능한 솔루션을 무작위로 생성하려고합니다. 따라서 내 코드는 임의의 수의 임의 항목을 선택하고 (무작위 크기 목록 생성) 솔루션이 실행 가능한지 (용량보다 작음) 또는 실행 불가능한지 (용량보다 큰지) 테스트합니다. 하지만 random.sample ()에 문제가 있습니다. 무작위 크기의 목록을 얻기 위해 k를 leng (임의의 정수)로 설정하고 모집단은 주어진 항목 범위에서 선택한 항목의 무작위 목록입니다. 그러나 leng가 모집단보다 크면 ValueError가 있다는 것을 알고 있습니다. random.sample ()을 사용하여 고유 번호 목록을 가질 수 있습니다. 하지만 어떻게 든 ValueError를 해결해야합니다. try : 및 ValueError : 제외하고 시도했지만 실제로 수행하는 방법을 모르겠습니다. 이것이 내가 지금까지 가지고있는 것입니다.
def genSoln(cap, items)
g = input("Would you like to generate random potential solutions? [y/n] ")
if g == 'y':
gen = int(input("Number of times to generate/check random potential solutions? "))
totalwt = 0
totalval = 0
for i in range(1,gen+1):
try:
pop = range(1,items)
leng = random.randint(1,8)
ran = random.sample(pop, leng)
except ValueError:
pass
for i in ran:
totalwt += int(wts[i])
totalval += int(vals[i])
if i == len(ran):
if totalwt < int(cap):
print("Items picked: ", ran)
print("Feasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
else:
print("Items picked: ", ran)
print("Infeasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
totalwt = 0
totalval = 0
Thsi가해야합니다.
leng = random.randint(1, items)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다