class_docstr: Multi-Dimensional Knapsack Problem (MDKP).
  
  Many real-world problems are MDKP in different contexts, and this task
  allows a user to simulate one by using their own data in the form of csv
  files. In addition, users can also use synthesized data.
  
  The format of the csv files are:
  
  1. capacity_csv should have N lines and S columns.
      bin1_attr1_cap, bin1_attr2_cap, ..., bin1_attrS_cap
      bin2_attr1_cap, bin2_attr2_cap, ..., bin2_attrS_cap
      ...
      binN_attr1_cap, binN_attr2_cap, ..., binN_attrS_cap
  
  2. items_csv should have M lines and S + 1 columns.
      item1_attr1, item1_attr2, ..., item1_attrS, item1_value
      item2_attr1, item2_attr2, ..., item2_attrS, item2_value
      ...
      itemM_attr1, itemM_attr2, ..., itemM_attrS, itemM_value
  
  A valid solution should select K<=M items that maximizes sum(item{k}_value),
  while keeping sum(item{k}_attr{j}) < bin{i}_attr{j}_cap
  if item{k} is assigned to bin{i}, for i in [1, N] and j in [1, S].
class_docstr_tok: ["Multi-Dimensional","Knapsack","Problem","(","MDKP",")",".","Many","real-world","problems","are","MDKP","in","different","contexts",",","and","this","task","allows","a","user","to","simulate","one","by","using","their","own","data","in","the","form","of","csv","files",".","In","addition",",","users","can","also","use","synthesized","data",".","The","format","of","the","csv","files","are",":","1.","capacity_csv","should","have","N","lines","and","S","columns",".","bin1_attr1_cap",",","bin1_attr2_cap",",","...",",","bin1_attrS_cap","bin2_attr1_cap",",","bin2_attr2_cap",",","...",",","bin2_attrS_cap","...","binN_attr1_cap",",","binN_attr2_cap",",","...",",","binN_attrS_cap","2.","items_csv","should","have","M","lines","and","S","+","1","columns",".","item1_attr1",",","item1_attr2",",","...",",","item1_attrS",",","item1_value","item2_attr1",",","item2_attr2",",","...",",","item2_attrS",",","item2_value","...","itemM_attr1",",","itemM_attr2",",","...",",","itemM_attrS",",","itemM_value","A","valid","solution","should","select","K","<","=M","items","that","maximizes","sum","(","item","{","k","}","_value",")",",","while","keeping","sum","(","item","{","k","}","_attr","{","j","}",")","<","bin","{","i","}","_attr","{","j","}","_cap","if","item","{","k","}","is","assigned","to","bin","{","i","}",",","for","i","in","[","1",",","N","]","and","j","in","[","1",",","S","]","."]
code: def reset(self, key: jnp.array) -> TaskState:
      return self._reset_fn(key)
  
file_path: evojax/evojax/task/mdkp.py
imports: import sys
  import numpy
  from typing import Tuple
  import jax
  import jax.numpy
  from flax.struct import dataclass
  from evojax.task.base import TaskState
  from evojax.task.base import VectorizedTask
label_desc: Use image node_id 2 for calling the MDKP obj's underlying member method code with example usage: obj.reset(key) and returns: self