total_to_downlink = ((num_processed) * int((1000*process_im_mem/downlink_data_rate)))
model.Add(num_pics <= 100*max_photos_taken)
model.Add(num_processed <= totaL_to_process)
model.Add(num_downlinked <= (total_to_downlink))
images_taken.append(num_pics)
processed_intervals.append(num_processed)
dumped.append(num_downlinked)
binary_table.append([take_pictures[s],processing[s],downlink[s]])
model.Maximize(sum(downlink + processing + take_pictures))
# Creates the solver and solve.
solver = cp_model.CpSolver()
solver.parameters.search_branching=cp_model.LP_SEARCH
solver.parameters.num_search_workers = 6
solver.parameters.max_time_in_seconds = 120
solver.Solve(model)
print([(country_data_list[n][0], solver.Value(take_pictures[s]), solver.Value(processing[s]), 0,solver.Value(downlink[s])) for s in range(i,z) for n in range(b,c)])
print(solver.Value(sum(take_pictures)), solver.Value(sum(processing)), solver.Value(sum(downlink)))
print(solver.Value(num_pics)/100,solver.Value(num_processed),solver.Value(num_downlinked)/1000)
print('number of pics taken:',solver.Value(sum(take_pictures)), 'number of images processed ',(solver.Value(sum(processing))/(image_mem/process_im_mem)), 'number of images downloaded ',(solver.Value(sum(downlink))/(image_mem/downlink_data_rate)))
print(solver.ObjectiveValue())
a = c