0 / 0
영어 버전 문서로 돌아가기
Decision Optimization Python DOcplex 모델용 입력 및 출력 데이터 형식
마지막 업데이트 날짜: 2024년 11월 21일
Decision Optimization Python 모델 입력 및 출력 데이터 파일 형식

다음과 같은 입력 및 출력 데이터 형식을 Python Decision Optimization 모델에 사용할 수 있습니다.

입력 데이터

Python DOcplex 모델의 경우, 입력 데이터는 모든 형식의 파일에서 읽을 수 있습니다. 커넥터를 사용하여 외부 소스를 사용하여 입력 데이터를 채우려면 입력 데이터에 .csv 파일을 사용해야 합니다.

사전을 사용하여 입력 데이터를 정의할 수 있습니다. get_all_inputs 메서드를 사용하여 파일을 읽고 데이터프레임 사전을 반환할 수 있습니다.
from docplex.util.environment import get_environment
import pandas
from six import iteritems
from collections.abc import Mapping
from os.path import join, dirname, basename, splitext, exists
import glob

class _InputDict(dict):
    def __init__(self, directory, names):
        dict.__init__(self)
        self._directory = directory
        for k in names:
            dict.__setitem__(self, k, None)
        file='model_schema.json'
        if self._directory is not None:
            file  = "{0}/".format(self._directory) + file
        self.dtype_schemas = self.get_dtype_schemas( file)
    def __getitem__(self, key):
        if isinstance(key, str):
            item = dict.__getitem__(self, key)
            if item is None:
                file = "{0}.csv".format(key)
                if file in self.dtype_schemas:
                    return self.read_df( key, dtype=self.dtype_schemas[file])
                else:
                    return self.read_df( key)
            else:
                return item
        else:
            raise Exception("Accessing input dict via non string index")
    def read_df(self, key, **kwargs):
        env = get_environment()
        file = "{0}.csv".format(key)
        if self._directory is not None:
            file  = "{0}/".format(self._directory) + file
        with env.get_input_stream(file) as ist:
            params = {'encoding': 'utf8'}
            if kwargs:
                params.update(kwargs)
            df = pandas.read_csv( ist, **params)
            dict.__setitem__(self, key, df)
        return df
    def get_dtype_schemas(self, path):
        dtype_schemas = {}
        if exists(path):
            input_schemas=json.load(open(path))
            if 'input' in input_schemas:
                for input_schema in input_schemas['input']:
                    dtype_schema = {}
                    if 'fields' in input_schema:
                        for input_schema_field in input_schema['fields']:
                            if input_schema_field['type']=='string':
                                dtype_schema[input_schema_field['name']]='str'
                        if len(dtype_schema) > 0:
                            dtype_schemas[input_schema['id']]=dtype_schema
        print(dtype_schemas)
        return dtype_schemas

class _LazyDict(Mapping):
    def __init__(self, *args, **kw):
        self._raw_dict = _InputDict(*args, **kw)

    def __getitem__(self, key):
        return self._raw_dict.__getitem__(key)

    def __iter__(self):
        return iter(self._raw_dict)

    def __len__(self):
        return len(self._raw_dict)

    def read_df(self, key, **kwargs):
        return self._raw_dict.read_df(key, **kwargs)

def get_all_inputs(directory=None):
    '''Utility method to read a list of files and return a tuple with all
    read data frames.
    Returns:
        a map { datasetname: data frame }
    '''

    all_csv = "*.csv"
    g = join(directory, all_csv) if directory else all_csv

    names = [splitext(basename(f))[0] for f in glob.glob(g)]
    result = _LazyDict(directory, names)
    return result 

출력 데이터

이 예는 데이터프레임 사전에서 출력을 사용하는 경우 모든 출력을 작성하고 사전 데이터를 작업의 출력으로 저장하는 방법을 보여 줍니다.
def write_all_outputs(outputs):
    '''Write all dataframes in ``outputs`` as .csv.

    Args:
        outputs: The map of outputs 'outputname' -> 'output df'
    '''
    for (name, df) in iteritems(outputs):
        csv_file = '%s.csv' % name
        print(csv_file)
        with get_environment().get_output_stream(csv_file) as fp:
            if sys.version_info[0] < 3:
                fp.write(df.to_csv(index=False, encoding='utf8'))
            else:
                fp.write(df.to_csv(index=False).encode(encoding='utf8'))
    if len(outputs) == 0:
        print("Warning: no outputs written")

get_environment().get_output_stream(csv_file) as fp:을 사용하여 출력을 저장할 수도 있습니다.

Decision Optimization Python DOcplex 모델 배포의 전체 예제를 보려면 다음을 참조하세요, DO-samplesjupyter 폴더에 있는 Deploying a DO model with WML 샘플을 참조하세요. 관련 제품 및 버전 서브폴더를 선택하십시오.

이 샘플은 ' Cloud Pak for Data ' 리소스 허브' , ' ' Decision Optimization 모델을 ' watsonx.ai 런타임'에 배포하기 ' 에서도 확인할 수 있습니다.

일반적인 AI 검색 및 응답
이러한 응답은 제품 문서의 컨텐츠를 기반으로 하는 watsonx.ai 의 대형 언어 모델에 의해 생성됩니다. 자세히 알아보기