Python 合适的元启发式优化方法来解决这个问题

Python 合适的元启发式优化方法来解决这个问题,python,optimization,methods,mathematical-optimization,heuristics,Python,Optimization,Methods,Mathematical Optimization,Heuristics,我是优化方法的新手,我想通过应用其中一种优化方法来解决问题,但我不知道从哪里开始。我将解释csv文件(A_08.json)中的问题,您可以从这里找到: -对于resources,例如resources\u X这里可以是1到9之间的值。所有RESOURCE\u X都有它们的min和max值,这些值需要作为最终解决方案(如下所示)在所有RESOURCE\u X中的每一天,0不能小于min和大于max 对于季节而言,有冬季,夏季,是…这些季节中对应的每个数字都指一天,例如冬季定义从第1天到第13天,

我是优化方法的新手,我想通过应用其中一种优化方法来解决问题,但我不知道从哪里开始。我将解释csv文件(A_08.json)中的问题,您可以从这里找到:

-对于resources,例如resources\u X这里可以是1到9之间的值。所有RESOURCE\u X都有它们的minmax值,这些值需要作为最终解决方案(如下所示)在所有RESOURCE\u X中的每一天,0不能小于min和大于max

  • 对于季节而言,有冬季夏季…这些季节中对应的每个数字都指一天,例如冬季定义从第1天到第13天,其他季节的含义相同

  • 对于干预干预X,相应的工作负载包含他们必须使用的资源。Delta干预X的持续时间,例如我们可以在干预625中看到第一个值(第一天)在Delta列表中,Delta1.0这意味着如果干预措施625从第1天开始,它需要在同一天完成,因为第1天的Delta值为1.0,依此类推……每个干预措施X都有自己的tmax,例如干预措施625tmax等于17这意味着它可以根据需要在第1天和第17天之间开始,而其他干预的另一个tmax也意味着相同

  • 对于排除有一些例外情况,例如:

“E141[“干预315”、“干预456”、“夏季”]这意味着干预315干预456不能在夏季的同一天开始,其他含义相同

  • T是此处的总持续时间T=17表示持续时间为17天

  • 我想要生成的解决方案是干预措施的名称以及每项干预措施的开始日期(t1、t2…),例如:

干预措施\u X t1

干预措施\u Y t2

等等……直到所有干预措施都被使用,因为它们只会使用一次

这些解决方案将确保它尊重每天使用资源(最小值,最大值)的条件,排除,并且最大完成日期可以是T+1

以下是我的代码,用于在需要时访问csv文件的每个节点和值:

class access_json:

    def __init__(self):
        self._resources = dict()
        self._seasons = dict()
        self._interventions = dict()
        self._exclusions = dict()
        
        self._NRESOURCES = 0
        self._NINTERVENTIONS = 0
        self._list_resources = list()
        self._list_interventions = list()
        
        self._T = 0
        self._senariosNumber = []
        self._quantile = 0
        self._alpha = 0
        
    def loadjson(self, fpath: str):
        js = dict()
        with open(fpath, 'r') as f:
            js = json.load(f)
        
        self._resources = js["Resources"]
        self._NRESOURCES = len(self._resources)
        self._list_resources = list(self._resources.keys())
        self._seasons = js["Seasons"]
        self._interventions = js["Interventions"]
        self._NINTERVENTIONS = len(self._interventions)
        self._list_interventions = list(self._interventions.keys())
        self._exclusions = js["Exclusions"]
        
        self._T = js["T"]
        self._senarios_number = js["Scenarios_number"]
        self._quantile = js["Quantile"]
        self._alpha = js["Alpha"]   

如果您能提供代码方面的任何帮助,以及如何应用此问题的优化方法的建议,我们将不胜感激。谢谢。

理解问题是什么有点困难。例如,什么是“干预”?什么是“资源”“?我们在优化什么?干预就像是一项必须计划的任务,每次干预都需要使用资源才能开始工作。